mirror of
https://github.com/Sea-Haven-Industries/shoc-frontend-new.git
synced 2026-09-30 03:23:12 +00:00
React Query keeps the last successful data after a failed refetch, so an earlier true kept the entry visible. Require a non-error query per tier, and cover the real query path with a mocked API.
20 lines
915 B
TypeScript
20 lines
915 B
TypeScript
import { useUpliftsCanApprove } from "@/domain/uplifts/use-cases/use-uplifts-can-approve";
|
|
import { getNavGroups, type NavGroup } from "@/config/menu";
|
|
|
|
/**
|
|
* Sidebar groups for the signed-in user. The APPROVALS group appears only
|
|
* when the backend's can-approve answer (UpliftService tier-role rule, the
|
|
* same authority behind uplift approve/reject) is true for either tier.
|
|
* Loading and error states stay closed so the entry never flashes for a
|
|
* user the backend would refuse, including when a refetch fails and the
|
|
* query still holds an earlier `true`.
|
|
*/
|
|
export function useNavGroups(): NavGroup[] {
|
|
const tier1 = useUpliftsCanApprove(1);
|
|
const tier2 = useUpliftsCanApprove(2);
|
|
const allows = (query: { data?: boolean; isError?: boolean }) =>
|
|
query.data === true && !query.isError;
|
|
const canReviewUplifts = allows(tier1) || allows(tier2);
|
|
|
|
return getNavGroups({ canReviewUplifts });
|
|
}
|