Kundenansicht neu E-Fix M1: Widerrufsstreifen und Pille nach Kauf, Wechsel und Speicher-Plus neu laden
ladeFristen lief nur einmal beim Start; eine neue 14-Tage-Frist nach einem Wechsel oder Speicher-Plus erschien erst nach Neuladen, ein abgelaufener Streifen blieb in einem langen PWA-Tab stehen. Die Hülle lädt die Fristen jetzt bei kn:zaehler-neu (vertraege, alle) und beim Zurückkehren in den Tab neu (ladeFristenNeu: ein Fehler lässt den Stand stehen, die jüngste Antwort gilt); das Speicher-Plus meldet kn:zaehler-neu vertraege nach Erfolg, der Wechsel tat es schon. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
4cac03a2bd
commit
306c53871d
5 files changed
+53
-4
No files matched your search
@@ -5,7 +5,7 @@
|
||||
|
||||
import { api } from './api.js'
|
||||
import { h, leeren } from './dom.js'
|
||||
import { K, ersetze, fmtEuro, fmtDatum, fmtTagMonat, ladeAbo, navigiere, setzeChatVorgabe, ABO_NICHT_GELADEN } from './ansicht-hilfen.js'
|
||||
import { K, ersetze, fmtEuro, fmtDatum, fmtTagMonat, ladeAbo, meldeZaehlerNeu, navigiere, setzeChatVorgabe, ABO_NICHT_GELADEN } from './ansicht-hilfen.js'
|
||||
import { baueBlock, baueKundenartZeile, baueLinkzeile, hatWortlaut, kundenartVon } from './bestell-bausteine.js'
|
||||
|
||||
const laeufe = new WeakMap() // Reiter-Inhalt → Nummer des jüngsten Aufrufs
|
||||
@@ -142,6 +142,8 @@ function baueSpeicherPanel(daten, { viewAs, kundenart, notice, nachErfolg }) {
|
||||
? (ch.task === false ? 'Gespeichert. Es entstehen keine zusätzlichen Kosten, die Pakete waren schon bezahlt.' : 'Danke, deine Bestellung ist eingegangen. Der Speicher wird in der Regel innerhalb eines Werktags eingerichtet.')
|
||||
: `Gespeichert. Die Verkleinerung wirkt zum ${fmtDatum(ch.effectiveAt)}.`
|
||||
await nachErfolg(hinweis, res)
|
||||
// Ein Plus eröffnet für Privatkunden eine neue Widerrufsfrist: die Hülle lädt Streifen und Pille „Frist läuft“ neu (E-Fix M1)
|
||||
if (plus) meldeZaehlerNeu('vertraege')
|
||||
} catch (f) {
|
||||
state.busy = false
|
||||
fehlerText = f.status === 409 ? `${f.message} Bitte lade die Seite neu, falls sich der Stand geändert hat.` : f.message
|
||||
|
||||
@@ -14,6 +14,16 @@ export async function ladeFristen(api) {
|
||||
}
|
||||
}
|
||||
|
||||
/** Wie ladeFristen, aber für das Neuladen in der Sitzung: ein Fehler ergibt undefined (der bisherige Stand bleibt), keine Frist null. */
|
||||
export async function ladeFristenNeu(api) {
|
||||
try {
|
||||
const daten = await api('/api/fristen')
|
||||
return daten?.anzeigen === true ? daten : null
|
||||
} catch {
|
||||
return undefined
|
||||
}
|
||||
}
|
||||
|
||||
const datumBerlin = new Intl.DateTimeFormat('de-DE', { timeZone: 'Europe/Berlin', day: '2-digit', month: '2-digit' })
|
||||
|
||||
/** 'Widerrufsfrist bis TT.MM.' in der Zeit von Berlin; ohne gültiges Datum 'Widerrufsfrist läuft'. */
|
||||
|
||||
+18
-3
@@ -10,7 +10,7 @@ import { BEREICHE, FUNKTIONS_ETAGEN, hashFuerAnsicht, hashFuerRoute, elternVon,
|
||||
import { HANDY_ABFRAGE, baueNavigation, beobachteTastatur, leisteSichtbar } from './leiste.js'
|
||||
import { baueEtage } from './etage.js'
|
||||
import { erzeugeZaehler } from './zaehler.js'
|
||||
import { baueStreifen, ladeFristen } from './fristen-streifen.js'
|
||||
import { baueStreifen, ladeFristen, ladeFristenNeu } from './fristen-streifen.js'
|
||||
import { baueAvatar, baueKonto, installAngebot } from './konto.js'
|
||||
|
||||
export const GERUEST_IDS = ['kn-banner', 'kn-ansage', 'kn-fehler', 'kn-menue', 'kn-kopf', 'kn-kopf-titel', 'kn-kopf-konto', 'kn-inhalt', 'bereich-website', 'bereich-funktionen', 'bereich-chat', 'bereich-vertraege', 'website-body', 'funktionen-body', 'chat-body', 'vertraege-body', 'kn-blatt', 'kn-brot', 'kn-etage-titel', 'kn-reiter-slot', 'news-body', 'termine-body', 'webshop-body', 'buchungen-body', 'zeiten-body', 'analyse-body', 'etage-body', 'kn-streifen', 'kn-leiste', 'kn-zeile-haupt', 'kn-zeile-etage', 'kn-konto-wurzel']
|
||||
@@ -246,8 +246,23 @@ export async function starteHuelle({ win = window, doc = document, api = apiStan
|
||||
router.geheZu(ansicht)
|
||||
})
|
||||
doc.querySelector?.('.kn-skip')?.addEventListener('click', (ev) => { ev.preventDefault(); el('kn-inhalt').focus() }) // kein Fragment-Link: der Router läse #kn-inhalt als Route
|
||||
doc.addEventListener('kn:zaehler-neu', (ev) => { zaehler.aktualisiere(ev.detail?.was ?? 'alle') })
|
||||
doc.addEventListener('visibilitychange', () => { if (doc.visibilityState === 'visible') zaehler.aktualisiere('alle') })
|
||||
// Widerrufsstreifen und Pille „Frist läuft“ (E-Fix M1): nach einem Kauf, Wechsel oder Speicher-Plus in der Sitzung und beim Zurückkehren in den Tab neu laden,
|
||||
// damit eine neue Frist erscheint und ein abgelaufener Streifen nicht stehen bleibt. Ein Fehler lässt den bisherigen Stand stehen; die jüngste Antwort gilt.
|
||||
let fristenLauf = 0
|
||||
async function frischeFristen() {
|
||||
const nr = ++fristenLauf
|
||||
const daten = await ladeFristenNeu(api)
|
||||
if (nr !== fristenLauf || daten === undefined) return
|
||||
fristen = daten
|
||||
streifen.setze(daten)
|
||||
aktualisiereKonto()
|
||||
}
|
||||
doc.addEventListener('kn:zaehler-neu', (ev) => {
|
||||
const was = ev.detail?.was ?? 'alle'
|
||||
zaehler.aktualisiere(was)
|
||||
if (was === 'vertraege' || was === 'alle') frischeFristen()
|
||||
})
|
||||
doc.addEventListener('visibilitychange', () => { if (doc.visibilityState === 'visible') { zaehler.aktualisiere('alle'); frischeFristen() } })
|
||||
win.addEventListener('scroll', beiScroll, { passive: true })
|
||||
el('kn-blatt').addEventListener('scroll', beiScroll, { passive: true })
|
||||
win.addEventListener('beforeinstallprompt', (ev) => { ev.preventDefault(); installPrompt = ev; aktualisiereKonto() })
|
||||
|
||||
Reference in new issue
Block a user