refactor: centralize frontend status message handling with useStatusToast
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user