- Editor zeigt „Bearbeitet: <Name>“, solange eine gespeicherte Karte gebunden ist, und bietet „Neue Karte“ (setzt zurück, bricht Laden ab, entfernt ?karte=; fragt bei ungespeicherten Änderungen per eigenem Dialog „Verwerfen?“) - EditorState.savedConfig als Vergleichsbasis für ungespeicherte Änderungen - bindEditorToAuth: Abmelden leert den Editor, Kontowechsel A -> B entkoppelt die Karte (Entwurf bleibt), Anmelden ohne Vorgänger und abgelaufene Sitzung behalten den Entwurf; auth.onLogout unterscheidet eigenes Abmelden von bemerktem Ablauf - Speichern nimmt den Schnappschuss pro Klick (auch für die Wiederholung nach 401) - save: row_not_found beim Update legt eine neue Karte an (inkl. Aufräumen) - Karten-Seite: Editor-Abgleich auch nach dem Verlassen der Seite, Löschen-Dialog wird beim Verlassen geschlossen, keine doppelten Vorschau-URLs - confirm-dialog als gemeinsames Modul (Löschen, Verwerfen) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
38 lines
1.5 KiB
TypeScript
38 lines
1.5 KiB
TypeScript
import '@fontsource-variable/nunito-sans';
|
|
import './styles.css';
|
|
import { mountAccountMenu } from './account/account-menu';
|
|
import { getCurrentUser } from './account/auth';
|
|
import { startRouter } from './pages/router';
|
|
import { mountCardsPage } from './pages/cards-page';
|
|
import { mountResetPage } from './pages/reset-page';
|
|
import { mountEditor } from './editor/editor-page';
|
|
import { bindEditorToAuth } from './editor/auth-reset';
|
|
import { createStore, initialEditorState } from './editor/state';
|
|
|
|
// Der Editor-Zustand lebt außerhalb der Seiten und überlebt Seitenwechsel.
|
|
const editorStore = createStore(initialEditorState());
|
|
// … und gehört zum angemeldeten Konto: beim Abmelden oder Kontowechsel wird er geleert bzw. entkoppelt.
|
|
bindEditorToAuth(editorStore);
|
|
|
|
// Konto-Menü im Seitenkopf. Der Anmeldestatus wird einmal beim Start geholt; schlägt das fehl
|
|
// (außer 401, das getCurrentUser selbst als „abgemeldet“ meldet), gilt der Nutzer als abgemeldet.
|
|
const accountSlot = document.getElementById('account-slot');
|
|
if (accountSlot) {
|
|
const menu = mountAccountMenu(accountSlot);
|
|
getCurrentUser()
|
|
.catch((error: unknown) => {
|
|
console.error('Anmeldestatus konnte nicht geprüft werden', error);
|
|
})
|
|
.finally(() => menu.ready());
|
|
}
|
|
|
|
startRouter((route, root) => {
|
|
if (route === 'editor') {
|
|
return mountEditor(root, editorStore);
|
|
}
|
|
if (route === 'reset') {
|
|
return mountResetPage(root);
|
|
}
|
|
return mountCardsPage(root, editorStore);
|
|
});
|