import { useEffect } from 'react'
import {
Code2,
Gauge,
HardDrive,
History,
Images,
KeyRound,
PieChart,
Settings,
Trash2,
} from 'lucide-react'
import { useStore } from './store'
import { Anmelden } from './pages/Anmelden'
import { Start } from './pages/Start'
import { Galerie } from './pages/Galerie'
import { Speicher } from './pages/Speicher'
import { Tokens } from './pages/Tokens'
import { Konto } from './pages/Konto'
import { Einstellungen } from './pages/Einstellungen'
import { Verlauf } from './pages/Verlauf'
import { Api } from './pages/Api'
import { Papierkorb } from './pages/Papierkorb'
import { Freigabe } from './pages/Freigabe'
import { Meldungen } from './components/Meldungen'
import { gehZu, usePfad } from './router'
import { Kontomenue } from './components/Kontomenue'
import { dienstName, useMarke } from './marke'
/** Die Breite des Inhalts — an EINER Stelle.
*
* Sie stand vorher zweimal da (Kopfzeile und Inhalt), und zwei Seiten setzten
* zusätzlich ihre eigene: dadurch waren Konto und Einstellungen schmaler als
* der Rest, und die Kopfzeile lief über beiden anders. Formulare werden
* stattdessen INNERHALB ihrer Karte begrenzt.
*/
const BREITE = 'mx-auto w-full max-w-7xl px-4'
const seiten = [
{ pfad: '/', name: 'Start', kind: Gauge, Inhalt: Start },
{ pfad: '/galerie', name: 'Galerie', kind: Images, Inhalt: Galerie },
{ pfad: '/verlauf', name: 'Verlauf', kind: History, Inhalt: Verlauf },
{ pfad: '/speicher', name: 'Speicher', kind: PieChart, Inhalt: Speicher },
{ pfad: '/papierkorb', name: 'Papierkorb', kind: Trash2, Inhalt: Papierkorb },
{ pfad: '/tokens', name: 'Token', kind: KeyRound, Inhalt: Tokens },
{ pfad: '/api', name: 'API', kind: Code2, Inhalt: Api },
{ pfad: '/einstellungen', name: 'Einstellungen', kind: Settings, Inhalt: Einstellungen },
] as const
/** Seiten OHNE Reiter. Sie sind ueber die Adresse und ueber das Kontomenue
* erreichbar -- ein Lesezeichen auf /konto soll nicht ins Leere fuehren, nur
* weil der Reiter verschwunden ist. */
const versteckt = [{ pfad: '/konto', Inhalt: Konto }] as const
export function App() {
// Einzeln ausgewählt und nicht als ganzer Laden: `useStore()` ohne
// Auswahlfunktion abonniert ALLES, und dann zeichnet jede Meldung das
// ganze Dashboard neu — bei 60 Kacheln mit Bildern ist das spürbar.
const user = useStore((s) => s.user)
const checking = useStore((s) => s.checking)
const checkSession = useStore((s) => s.checkSession)
const pfad = usePfad()
const marke = useMarke()
useEffect(() => {
void checkSession()
}, [checkSession])
// EINE FREIGABE GEHT VOR ALLEM ANDEREN -- vor dem Prüfen der Sitzung, vor
// dem Anmeldeformular, vor der Kopfzeile. Wer einen Link bekommen hat, ist
// kein Benutzer dieses Dashboards; ihm ein Anmeldeformular zu zeigen wäre
// die falsche Antwort auf "sieh dir das an".
//
// Und deshalb steht das hier VOR dem `checking`-Zweig: sonst blitzt für
// einen Moment das Rädchen der Sitzungsprüfung auf, die es gar nicht
// braucht.
if (pfad.startsWith('/s/')) {
return