fix: BEOs und Objekte bleiben beim Wechsel der Art erhalten — Version 1.16.1

Zwei getrennte Ursachen dafür, dass ausgefüllte Felder beim nachträglichen
Wählen der Art der Führung verschwanden:

- Objekte wurden bei jedem Wechsel der Art unbedingt geleert. Jetzt nur noch,
  wenn die Objektkategorie tatsächlich umschlägt (SonF ↔ Rest).
- currentUserBeo wurde in MainClient bei jedem Rendern neu erzeugt und steht in
  den Abhängigkeiten des Vorbelegungs-Effekts in LogbuchForm. Dadurch setzte
  jedes Neurendern der Elternkomponente das ganze Formular zurück — BEOs auf den
  eigenen Namen, dazu Objekte, Zeiten und Bemerkungen. Ein konkreter Auslöser
  ist die Backup-Schaltfläche auf demselben Bildschirm. Das Objekt ist jetzt
  useMemo-stabil.

Nebeneffekt: beim Bearbeiten lief das bisherige setObjekte([]) gegen das
asynchrone Nachladen der gespeicherten Objekte — dieser Wettlauf entfällt.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-09 10:38:46 +02:00
parent 74885a987a
commit 38e403bd39
4 changed files with 22 additions and 9 deletions
+7 -2
View File
@@ -1,6 +1,6 @@
'use client';
import { useState } from 'react';
import { useMemo, useState } from 'react';
import { KUPPELN } from '@/types/logbuch';
import type { Kuppel, LogbuchEintrag, SofueStatus } from '@/types/logbuch';
import LogbuchForm from '@/components/LogbuchForm';
@@ -50,7 +50,12 @@ export default function MainClient({ kuerzel, beoId, beoName, role }: Props) {
process.env.NEXT_PUBLIC_BUILD_DATE ||
new Date().toLocaleDateString('de-DE', { day: '2-digit', month: '2-digit', year: 'numeric' });
const currentUserBeo = { ID: beoId, Kuerzel: kuerzel, Name: beoName };
// Muss stabil bleiben: LogbuchForm setzt bei jeder Änderung dieses Objekts das
// Formular zurück. Frisch erzeugt würde jedes Rendern hier die Eingaben löschen.
const currentUserBeo = useMemo(
() => ({ ID: beoId, Kuerzel: kuerzel, Name: beoName }),
[beoId, kuerzel, beoName]
);
function handleSaved(sofue?: SofueStatus | null) {
setRefreshKey((k) => k + 1);