refactor: centralize frontend status message handling with useStatusToast

This commit is contained in:
2025-12-07 23:46:10 +01:00
parent b29e856225
commit 595c170c00
13 changed files with 149 additions and 175 deletions
@@ -38,7 +38,7 @@ import {
isDocumentEntry
} from '../../app/entryKey';
import useDocumentsSearch from '../../app/useDocumentsSearch';
import { useStatusToast, type ToastVariant } from '../../lib/context/StatusToastContext';
import { useStatusToast } from '../../lib/context/StatusToastContext';
import useAuthManager from './useAuthManager';
import useTenantManager from './useTenantManager';
import useDocuments from './useDocuments';
@@ -144,33 +144,26 @@ const useDocumentsWorkspace = ({
? (tenantOptionsRaw as TenantOption[])
: [];
const { showToast } = useStatusToast();
const setStatusMessage = useCallback(
(message?: string | null, variant: ToastVariant = 'info') => {
if (message) {
showToast(message, variant);
}
},
[showToast],
);
const handleApiReport = useCallback(
({ message, variant }) => setStatusMessage(message, variant),
[setStatusMessage],
);
const reportApiError = useApiError({
onReport: handleApiReport,
onReport: useCallback(
({ message, variant }) => showToast(message, variant),
[showToast],
),
});
const notifyApiError = useCallback(
(error, fallbackMessage, variant = 'error') =>
reportApiError(error, { message: fallbackMessage, variant }),
[reportApiError],
);
const [creatingFolder, setCreatingFolder] = useState(false);
const { tokenRef, handleLogout } = useAuthManager({
token,
appStatus,
appDispatch,
setStatusMessage,
});
@@ -514,9 +507,8 @@ const useDocumentsWorkspace = ({
setTags,
} = useTags({
notifyApiError,
setStatusMessage,
tagManager,
tenantIdRef,
tagManager,
setActiveTagFilters,
mapDocumentCaches,
});
@@ -544,7 +536,6 @@ const useDocumentsWorkspace = ({
setCorrespondents,
} = useCorrespondents({
notifyApiError,
setStatusMessage,
tenantIdRef,
mapDocumentCaches,
});
@@ -558,7 +549,6 @@ const useDocumentsWorkspace = ({
correspondents,
handleCorrespondentCreate,
notifyApiError,
setStatusMessage,
updateDocumentCaches,
});
@@ -573,7 +563,6 @@ const useDocumentsWorkspace = ({
revokePasskey,
} = usePasskeys({
notifyApiError,
setStatusMessage,
token,
});
@@ -606,7 +595,6 @@ const useDocumentsWorkspace = ({
refreshTags,
resolveTargetDocumentIds,
notifyApiError,
setStatusMessage,
updateDocumentCaches,
});
@@ -625,7 +613,6 @@ const useDocumentsWorkspace = ({
refreshCurrentFolder,
shellRef,
notifyApiError,
setStatusMessage,
});
const {
@@ -761,7 +748,6 @@ const useDocumentsWorkspace = ({
setFocusedEntryKey,
focusedEntryKey,
notifyApiError,
setStatusMessage,
mapDocumentCaches,
folderNodes,
setFolderNodes,
@@ -792,7 +778,6 @@ const useDocumentsWorkspace = ({
selectedFolder,
setSelectedFolder,
notifyApiError,
setStatusMessage,
navigate,
handleFileDrop,
moveDocumentsToFolder,
@@ -905,7 +890,6 @@ const useDocumentsWorkspace = ({
resolveTargetDocumentIds,
correspondentLookupByName,
handleCorrespondentCreate,
setStatusMessage,
selectedDocumentIds,
selectedFolderIds,
handleDocumentsDelete,
@@ -914,8 +898,6 @@ const useDocumentsWorkspace = ({
updateDocumentCaches,
});
const ensureAssetUrl = useCallback(
async (documentId, asset, { force = false } = {}) => {
if (!documentId || !asset?.id) {
@@ -942,8 +924,6 @@ const useDocumentsWorkspace = ({
[assetManager, updateDocumentCaches, notifyApiError],
);
const handlePromptCreateFolder = useCallback(async (parentId?: Identifier | null) => {
if (creatingFolder) {
return;
@@ -954,19 +934,19 @@ const useDocumentsWorkspace = ({
}
const trimmed = input.trim();
if (!trimmed) {
setStatusMessage('Folder name cannot be empty.', 'error');
showToast('Folder name cannot be empty.', 'error');
return;
}
setCreatingFolder(true);
try {
const success = await handleFolderCreate(trimmed, parentId);
if (!success) {
setStatusMessage('Unable to create folder. Check the status message for details.', 'error');
showToast('Unable to create folder. Check the status message for details.', 'error');
}
} finally {
setCreatingFolder(false);
}
}, [creatingFolder, handleFolderCreate, setStatusMessage]);
}, [creatingFolder, handleFolderCreate, showToast]);
const { managementModals, openTagsModal, openCorrespondentsModal } = useManagementModals({
locationPathname: location.pathname,
@@ -980,7 +960,6 @@ const useDocumentsWorkspace = ({
onCorrespondentCreate: handleCorrespondentCreate,
onCorrespondentUpdate: handleCorrespondentUpdate,
onCorrespondentDelete: handleCorrespondentDelete,
setStatusMessage,
});
const [settingsOpen, setSettingsOpen] = useState(false);
@@ -1126,7 +1105,6 @@ const useDocumentsWorkspace = ({
appDispatch,
currentTenantId,
resetWorkspaceState,
setStatusMessage,
notifyApiError,
refreshTags,
refreshCorrespondents,
@@ -1148,7 +1126,6 @@ const useDocumentsWorkspace = ({
};
const uiContext = {
setStatusMessage,
notifyApiError,
settingsOpen,
openSettings,