From a850f70e2417313ad0749833fa723ea0a32dcf67 Mon Sep 17 00:00:00 2001 From: Nils Schneider Date: Mon, 8 Dec 2025 19:20:36 +0100 Subject: [PATCH] feat: refactor folder refresh with toast notifications and console logging for toasts. --- .../src/documents/data/useDocumentsWorkspace.ts | 17 +++++++++++++---- frontend/src/documents/types/workspaceTypes.ts | 1 - frontend/src/lib/context/StatusToastContext.tsx | 9 +++++++++ 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/frontend/src/documents/data/useDocumentsWorkspace.ts b/frontend/src/documents/data/useDocumentsWorkspace.ts index cf064e0..eb01017 100644 --- a/frontend/src/documents/data/useDocumentsWorkspace.ts +++ b/frontend/src/documents/data/useDocumentsWorkspace.ts @@ -578,13 +578,23 @@ const useDocumentsWorkspace = ({ [selectedDocumentIds], ); - const refreshCurrentFolder = useCallback(async () => { + const refreshFolderData = useCallback(async () => { if (selectedFolder) { const { data, includeDocuments } = await fetchFolderData(selectedFolder); updateViewState(selectedFolder, data, includeDocuments); } }, [selectedFolder, fetchFolderData, updateViewState]); + const handleManualRefresh = useCallback(async () => { + try { + await refreshFolderData(); + showToast('Folder refreshed successfully', 'success'); + } catch (error) { + showToast('Failed to refresh folder', 'error'); + console.error('Failed to refresh folder:', error); + } + }, [refreshFolderData, showToast]); + const { handleBulkTagAddFromDetail, handleBulkTagRemoveFromDetail, @@ -607,7 +617,7 @@ const useDocumentsWorkspace = ({ } = useDocumentUploads({ selectedFolder, currentFolderName, - refreshCurrentFolder, + refreshCurrentFolder: refreshFolderData, shellRef, }); @@ -729,7 +739,6 @@ const useDocumentsWorkspace = ({ }; const actionsState = { - refreshCurrentFolder, closeDocumentPreview, }; @@ -1109,6 +1118,7 @@ const useDocumentsWorkspace = ({ openSettings, closeSettings, managementModals, + refreshCurrentFolder: handleManualRefresh, }; const uploadContext = { @@ -1207,7 +1217,6 @@ const useDocumentsWorkspace = ({ creatingFolder, currentSubfolders, breadcrumbs, - refreshCurrentFolder, }; const selectionContext = { diff --git a/frontend/src/documents/types/workspaceTypes.ts b/frontend/src/documents/types/workspaceTypes.ts index 678c1ed..6966c15 100644 --- a/frontend/src/documents/types/workspaceTypes.ts +++ b/frontend/src/documents/types/workspaceTypes.ts @@ -81,7 +81,6 @@ export interface TagsState { } export interface ActionsState { - refreshCurrentFolder: () => Promise; closeDocumentPreview: CloseDocumentPreview; handleFileDrop?: (dataTransfer: DataTransfer, folderId: FolderId) => Promise | void; moveDocumentsToFolder?: (docIds: FolderId[], folderId: FolderId) => Promise; diff --git a/frontend/src/lib/context/StatusToastContext.tsx b/frontend/src/lib/context/StatusToastContext.tsx index ce11438..fcd8a2b 100644 --- a/frontend/src/lib/context/StatusToastContext.tsx +++ b/frontend/src/lib/context/StatusToastContext.tsx @@ -43,6 +43,15 @@ export const StatusToastProvider: React.FC<{ children: React.ReactNode }> = ({ c }, []); const showToast = useCallback((message: string, variant: ToastVariant = 'info', duration?: number) => { + // Log to console based on variant + if (variant === 'error') { + console.error(`[Toast] ${message}`); + } else if (variant === 'success') { + console.log(`[Toast] ${message}`); + } else { + console.info(`[Toast] ${message}`); + } + const id = `toast-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`; const finalDuration = duration ?? DEFAULT_DURATIONS[variant];