summaryrefslogtreecommitdiff
path: root/makima/frontend/src/routes
diff options
context:
space:
mode:
authorsoryu <soryu@soryu.co>2025-12-24 02:21:19 +0000
committersoryu <soryu@soryu.co>2025-12-24 02:21:19 +0000
commit8f016a0e9d14badc39dffd67ed6fb862f9d08496 (patch)
treec5ad00f89f838e2e7b6fd61184b8b6565f3296bc /makima/frontend/src/routes
parentaa62bb8578d48598297e60b253e29a1957c5f51a (diff)
downloadsoryu-8f016a0e9d14badc39dffd67ed6fb862f9d08496.tar.gz
soryu-8f016a0e9d14badc39dffd67ed6fb862f9d08496.zip
Update overwrite mechanism to show diff
Diffstat (limited to 'makima/frontend/src/routes')
-rw-r--r--makima/frontend/src/routes/files.tsx8
1 files changed, 8 insertions, 0 deletions
diff --git a/makima/frontend/src/routes/files.tsx b/makima/frontend/src/routes/files.tsx
index 037df7e..f398041 100644
--- a/makima/frontend/src/routes/files.tsx
+++ b/makima/frontend/src/routes/files.tsx
@@ -21,6 +21,7 @@ export default function FilesPage() {
const [detailLoading, setDetailLoading] = useState(false);
const [creating, setCreating] = useState(false);
const [remoteUpdate, setRemoteUpdate] = useState<FileUpdateEvent | null>(null);
+ const [remoteFileData, setRemoteFileData] = useState<FileDetailType | null>(null);
const [hasLocalChanges, setHasLocalChanges] = useState(false);
const [isActivelyEditing, setIsActivelyEditing] = useState(false);
const pendingUpdateRef = useRef(false);
@@ -54,6 +55,9 @@ export default function FilesPage() {
const detail = await fetchFile(event.fileId);
setFileDetail(detail);
} else {
+ // Fetch remote version for diff display
+ const remoteData = await fetchFile(event.fileId);
+ setRemoteFileData(remoteData);
// Show notification about remote update
setRemoteUpdate(event);
}
@@ -218,12 +222,14 @@ export default function FilesPage() {
const detail = await fetchFile(id);
setFileDetail(detail);
setRemoteUpdate(null);
+ setRemoteFileData(null);
setHasLocalChanges(false);
}
}, [id, fetchFile]);
const handleRemoteUpdateDismiss = useCallback(() => {
setRemoteUpdate(null);
+ setRemoteFileData(null);
}, []);
return (
@@ -285,6 +291,8 @@ export default function FilesPage() {
{remoteUpdate && (
<UpdateNotification
updatedBy={remoteUpdate.updatedBy}
+ localBody={fileDetail?.body || []}
+ remoteBody={remoteFileData?.body || []}
onRefresh={handleRemoteUpdateRefresh}
onDismiss={handleRemoteUpdateDismiss}
/>