fix(freshness): converge invalidation sets; global query-error toast; silent-toggle feedback
- OrderDetail/InvoiceDetail/LeaveRequests mutations now invalidate the same domain sets as their list-page twins (orders+offers+projects+invoices / +projects / +users+dashboard) — no more stale project/order labels after a detail-page action. - USER_INVALIDATE hoisted to lib/queries/users.ts; DashProfile self-edit now refreshes trips/attendance/leave/projects like an admin edit. - Global QueryCache.onError toast: failed first-loads no longer masquerade as empty lists (data-present refetches stay silent; Unauthorized skipped; 4s rate limit; meta.suppressGlobalErrorToast opt-out used by offer/issued-order detail + the local TOTP QR query). - Users/Vehicles active-toggle mutations toast on error (was silent revert); clickable status chips got affordance tooltips (incl. warehouse parity). - AuditLog: refetchOnMount always + staleTime 0 (mutations write audit rows but nothing invalidates the key); search debounced; dead auditLogOptions module removed. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -8,6 +8,7 @@ import {
|
||||
useEffect,
|
||||
type ReactNode,
|
||||
} from "react";
|
||||
import { registerQueryErrorNotifier } from "../lib/queryClient";
|
||||
|
||||
interface Alert {
|
||||
id: string;
|
||||
@@ -81,6 +82,13 @@ export function AlertProvider({ children }: { children: ReactNode }) {
|
||||
[addAlert, removeAlert],
|
||||
);
|
||||
|
||||
// Global React Query error toasts (queryClient.ts). `addAlert` is a stable
|
||||
// useCallback, so this registers once on mount; re-registering the same
|
||||
// handler is idempotent either way.
|
||||
useEffect(() => {
|
||||
registerQueryErrorNotifier((msg) => addAlert(msg, "error"));
|
||||
}, [addAlert]);
|
||||
|
||||
return (
|
||||
<AlertContext.Provider value={methods}>
|
||||
<AlertStateContext.Provider value={{ alerts, removeAlert }}>
|
||||
|
||||
Reference in New Issue
Block a user