När en användare fyller i text i journalrelaterade fält i ärendevyn och sedan byter flik (t.ex. via sidomenyn) utan att aktivt trycka på Spara/Skicka/Slutför, försvinner all
text. Inget meddelande visas, och ingen draft bevaras.
Steg för att reproducera
- Logga in som Vet (erik@klinik.se / password)
- Öppna ett ärende i "Mina ärenden"
- Skriv text i fältet "Journalförda meddelanden" (eller "Redigera beskrivning" / klinisk notering i stäng-modalen)
- Klicka på en annan vy i sidomenyn (t.ex. "Mina ärenden") utan att klicka Skicka/Spara
- Gå tillbaka till samma ärende → fältet är tomt, ingen text är sparad till backend
Förväntat beteende
Texten ska antingen sparas automatiskt, bevaras som draft, eller så ska användaren varnas innan navigering.
Faktiskt beteende
Texten kastas tyst när CaseDetail unmount:as.
Rotorsak
Texten ligger i lokal useState i frontend/src/pages/CaseDetail.jsx och skrivs bara till backend vid explicit knapptryck. När currentView ändras i App.jsx unmount:as komponenten
och staten förstörs.
Unmount sker i frontend/src/App.jsx:162–216 när currentView byter värde.
Förslag på lösning
- Auto-spara onBlur — skicka till API när fältet tappar fokus (primär lösning, enkel UX).
- Save-on-unmount — useEffect-cleanup som flushar icke-tom text innan komponenten försvinner (safety net).
- (Alternativt) localStorage-draft — bevara vid refresh, men löser inte backend-persistens.
Acceptanskriterier
- Text i "Journalförda meddelanden" försvinner inte vid flikbyte
- Text i klinisk notering-modalen försvinner inte vid flikbyte
- Text i redigerad beskrivning försvinner inte vid flikbyte
- Manuell Skicka/Spara fungerar fortfarande som idag
- Ingen dubblering av kommentarer vid både blur och knapptryck
När en användare fyller i text i journalrelaterade fält i ärendevyn och sedan byter flik (t.ex. via sidomenyn) utan att aktivt trycka på Spara/Skicka/Slutför, försvinner all
text. Inget meddelande visas, och ingen draft bevaras.
Steg för att reproducera
Förväntat beteende
Texten ska antingen sparas automatiskt, bevaras som draft, eller så ska användaren varnas innan navigering.
Faktiskt beteende
Texten kastas tyst när CaseDetail unmount:as.
Rotorsak
Texten ligger i lokal useState i frontend/src/pages/CaseDetail.jsx och skrivs bara till backend vid explicit knapptryck. När currentView ändras i App.jsx unmount:as komponenten
och staten förstörs.
Unmount sker i frontend/src/App.jsx:162–216 när currentView byter värde.
Förslag på lösning
Acceptanskriterier