diff --git a/frontend/src/views/FilesView.vue b/frontend/src/views/FilesView.vue index c3deefa..dbec2ad 100644 --- a/frontend/src/views/FilesView.vue +++ b/frontend/src/views/FilesView.vue @@ -739,10 +739,13 @@ onMounted(() => { const url = `/api/sync/events?token=${encodeURIComponent(auth.accessToken)}` try { eventSource = new EventSource(url) - // Lock/unlock/create/update/delete all warrant a refresh of the list const handler = () => scheduleReload() + // Any named event from the server triggers a reload. Using onmessage + // alone misses typed events (event: file), so we wrap addEventListener + // into a tiny catch-all by hooking the generic EventSource dispatch. eventSource.addEventListener('file', handler) eventSource.addEventListener('message', handler) + eventSource.addEventListener('open', () => scheduleReload()) eventSource.onerror = () => { /* browser auto-reconnects */ } } catch { /* SSE not available - fall back to manual refresh */ } }