diff --git a/frontend/src/pages/CaseDetail.jsx b/frontend/src/pages/CaseDetail.jsx index 36c45b5..51f3e72 100644 --- a/frontend/src/pages/CaseDetail.jsx +++ b/frontend/src/pages/CaseDetail.jsx @@ -23,12 +23,12 @@ const CaseDetail = ({ caseData, onBack, onGoToPet, currentUserId, userRole }) => const isClosed = localStatus === 'CLOSED'; // Helper för att förenkla checkar useEffect(() => { - if (caseData && !isEditing) { + if (caseData) { setLocalStatus(caseData.status); setEditedTitle(caseData.title || ''); setEditedDescription(caseData.description || ''); } - }, [caseData, isEditing]); + }, [caseData?.id]); const scrollToBottom = () => { messagesEndRef.current?.scrollIntoView({ behavior: "smooth" }); @@ -65,15 +65,23 @@ const CaseDetail = ({ caseData, onBack, onGoToPet, currentUserId, userRole }) => fetchAllData(); }, [caseData?.id]); - const handleStatusChange = async (newStatus) => { + const refetchActivityLog = async () => { try { - await medicalRecordService.updateStatus(caseData.id, newStatus); - setLocalStatus(newStatus); const logsRes = await activityService.getLogsByRecord(caseData.id); setTimeline(prev => [ ...prev.filter(i => i.type !== 'ACTIVITY'), ...logsRes.data.map(l => ({ ...l, type: 'ACTIVITY' })) ].sort((a, b) => new Date(b.createdAt) - new Date(a.createdAt))); + } catch (error) { + console.error("Kunde inte uppdatera aktivitetsloggen:", error); + } + }; + + const handleStatusChange = async (newStatus) => { + try { + await medicalRecordService.updateStatus(caseData.id, newStatus); + setLocalStatus(newStatus); + await refetchActivityLog(); } catch (error) { alert("Kunde inte uppdatera status."); } @@ -86,6 +94,7 @@ const CaseDetail = ({ caseData, onBack, onGoToPet, currentUserId, userRole }) => await medicalRecordService.closeRecord(caseData.id, { finalNote: `SLUTGILTIG NOTERING: ${clinicalNote}` }); + await refetchActivityLog(); setShowCloseModal(false); onBack(); } catch (error) { @@ -102,6 +111,7 @@ const CaseDetail = ({ caseData, onBack, onGoToPet, currentUserId, userRole }) => }); setTimeline(prev => [...prev, { ...res.data, type: 'COMMENT' }].sort((a, b) => new Date(b.createdAt) - new Date(a.createdAt))); setNewMessage(''); + await refetchActivityLog(); } catch (error) { alert("Kunde inte skicka meddelande."); } @@ -122,6 +132,7 @@ const CaseDetail = ({ caseData, onBack, onGoToPet, currentUserId, userRole }) => setIsUploading(true); const res = await attachmentService.upload(caseData.id, formData); setAttachments(prev => [...prev, res.data]); + await refetchActivityLog(); } catch (error) { alert("Kunde inte ladda upp filen."); } finally { @@ -140,6 +151,7 @@ const CaseDetail = ({ caseData, onBack, onGoToPet, currentUserId, userRole }) => try { await attachmentService.delete(id); setAttachments(prev => prev.filter(a => a.id !== id)); + await refetchActivityLog(); } catch (error) { alert("Kunde inte radera filen."); } @@ -152,12 +164,12 @@ const CaseDetail = ({ caseData, onBack, onGoToPet, currentUserId, userRole }) => title: editedTitle, description: editedDescription }); + if (res?.data) { + setEditedTitle(res.data.title ?? editedTitle); + setEditedDescription(res.data.description ?? editedDescription); + } setIsEditing(false); - const logsRes = await activityService.getLogsByRecord(caseData.id); - setTimeline(prev => [ - ...prev.filter(i => i.type !== 'ACTIVITY'), - ...logsRes.data.map(l => ({ ...l, type: 'ACTIVITY' })) - ].sort((a, b) => new Date(b.createdAt) - new Date(a.createdAt))); + await refetchActivityLog(); } catch (error) { alert("Kunde inte spara ändringarna."); } @@ -217,7 +229,7 @@ const CaseDetail = ({ caseData, onBack, onGoToPet, currentUserId, userRole }) => {caseData.petName?.charAt(0) || "#"}
-

{caseData.title}

+

{editedTitle}

{statusConfig.label} @@ -255,14 +267,14 @@ const CaseDetail = ({ caseData, onBack, onGoToPet, currentUserId, userRole }) =>