From 8cb82da63ca685a3e2439623cc4b48a0dc3e66c0 Mon Sep 17 00:00:00 2001 From: Guido Date: Thu, 27 Aug 2026 11:15:43 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20Uebertrag=20buchen=20tat=20sichtbar=20ni?= =?UTF-8?q?chts=20=E2=80=93=20useToast=20falsch=20ausgepackt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit useToast() liefert die Melde-Funktion selbst, kein Objekt. In drei Dateien aus dieser Sitzung stand "const { toast } = useToast()", also undefined. Der Aufruf steht fast immer in einem catch – dort verschluckt der TypeError die eigentliche Meldung, und nach aussen passiert gar nichts. Das erklaert beide Beschwerden: - "Als Uebertrag buchen" schien wirkungslos: Die Buchung lief durch, dann warf toast(), der catch warf beim Melden erneut, der Dialog blieb offen. - "Braucht ein Reload": Im Eingang stand toast() VOR laden() – der Dialog schloss noch, das Neuladen kam nie. Die Cache-Kopfzeile, die ich dafuer gesetzt habe, war nicht die Ursache; richtig ist sie trotzdem. Am Ende in der laufenden Oberflaeche nachgeklickt: Dialog schliesst, Meldung erscheint, die Zeile wird ohne Neuladen zum Uebertrag, die Gegenseite liegt auf dem Zielkonto, beide Salden stimmen. Co-Authored-By: Claude Opus 5 --- web/src/components/UebertragDialog.jsx | 2 +- web/src/components/Uebertragsvorschlaege.jsx | 2 +- web/src/pages/Eingang.jsx | 2 +- web/src/toast.jsx | 4 ++++ 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/web/src/components/UebertragDialog.jsx b/web/src/components/UebertragDialog.jsx index c5b91c9..e713aed 100644 --- a/web/src/components/UebertragDialog.jsx +++ b/web/src/components/UebertragDialog.jsx @@ -20,7 +20,7 @@ export default function UebertragDialog({ vorgang, accounts, accountById, baseCurrency, onClose, onFertig, }) { const { t } = useTranslation(); - const { toast } = useToast(); + const toast = useToast(); const confirm = useConfirm(); const [ziel, setZiel] = useState(""); const [busy, setBusy] = useState(false); diff --git a/web/src/components/Uebertragsvorschlaege.jsx b/web/src/components/Uebertragsvorschlaege.jsx index 567ce9f..a25c97c 100644 --- a/web/src/components/Uebertragsvorschlaege.jsx +++ b/web/src/components/Uebertragsvorschlaege.jsx @@ -14,7 +14,7 @@ import { formatDate } from "../format"; // Deshalb ist auch eine falsche Verknüpfung folgenlos: Lösen stellt alles her. export default function Uebertragsvorschlaege({ baseCurrency, onChange }) { const { t } = useTranslation(); - const { toast } = useToast(); + const toast = useToast(); const [stand, setStand] = useState(null); // { verknuepft, vorschlaege } const [busy, setBusy] = useState(false); diff --git a/web/src/pages/Eingang.jsx b/web/src/pages/Eingang.jsx index 19dbf3c..4605b62 100644 --- a/web/src/pages/Eingang.jsx +++ b/web/src/pages/Eingang.jsx @@ -30,7 +30,7 @@ import { formatDate } from "../format"; // Zahlung nicht ein zweites Mal verbucht wird. export default function Eingang() { const { t } = useTranslation(); - const { toast } = useToast(); + const toast = useToast(); const confirm = useConfirm(); const { baseCurrency } = useSettings(); diff --git a/web/src/toast.jsx b/web/src/toast.jsx index b813a33..da81872 100644 --- a/web/src/toast.jsx +++ b/web/src/toast.jsx @@ -64,6 +64,10 @@ export function ToastProvider({ children }) { ); } +// Liefert die Melde-Funktion SELBST, nicht ein Objekt mit ihr darin. +// `const { toast } = useToast()` ergibt undefined – und weil der Aufruf fast +// immer in einem catch steht, verschluckt der TypeError dort die eigentliche +// Meldung und es passiert sichtbar gar nichts. export function useToast() { return useContext(ToastContext); }