Skip to content

Commit d5895fa

Browse files
author
Katelyn Grimes
committed
Remove extra HCM call
1 parent c3ad173 commit d5895fa

7 files changed

Lines changed: 53 additions & 502 deletions

File tree

src/components/Shared/UserTypeAccess/UserTypeAccess.test.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { StaffAccountQuery } from 'src/components/Shared/StaffAccount/StaffAccou
88
import { GetUserQuery } from 'src/components/User/GetUser.generated';
99
import {
1010
PeopleGroupSupportTypeEnum,
11+
UsStaffGroupEnum,
1112
UserPersonTypeEnum,
1213
UserTypeEnum,
1314
} from 'src/graphql/types.generated';
@@ -19,6 +20,7 @@ const id = 'staff-1';
1920
interface TestComponentProps {
2021
requireStaffAccount?: boolean;
2122
userType?: UserTypeEnum;
23+
usStaffGroup?: UsStaffGroupEnum;
2224
staffAccountId?: string | null;
2325
requireUserGroups?: RequiredUserGroupEnum;
2426
asrEligible?: boolean;
@@ -31,6 +33,7 @@ interface TestComponentProps {
3133
const TestComponent: React.FC<TestComponentProps> = ({
3234
requireStaffAccount,
3335
userType = UserTypeEnum.UsStaff,
36+
usStaffGroup = UsStaffGroupEnum.PartTimeFieldStaff,
3437
staffAccountId = id,
3538
requireUserGroups,
3639
asrEligible = true,
@@ -57,7 +60,7 @@ const TestComponent: React.FC<TestComponentProps> = ({
5760
},
5861
],
5962
},
60-
GetUser: { user: { userType } },
63+
GetUser: { user: { userType, usStaffGroup } },
6164
StaffAccount: {
6265
staffAccount: staffAccountId
6366
? { id: staffAccountId, name: 'Test Account' }
@@ -173,6 +176,7 @@ describe('UserTypeAccess', () => {
173176
<TestComponent
174177
requireUserGroups={RequiredUserGroupEnum.PdsGoalCalc}
175178
designationSupportCalculatorEligible={true}
179+
usStaffGroup={UsStaffGroupEnum.PaidWithDesignation}
176180
/>,
177181
);
178182
expect(await findByText('Test Content')).toBeInTheDocument();

src/components/Shared/UserTypeAccess/UserTypeAccess.tsx

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import Loading from 'src/components/Loading';
22
import { useGetUserQuery } from 'src/components/User/GetUser.generated';
3-
import { UserTypeEnum } from 'src/graphql/types.generated';
4-
import { useUsStaffGroups } from 'src/hooks/useUsStaffGroups';
3+
import { UsStaffGroupEnum, UserTypeEnum } from 'src/graphql/types.generated';
54
import { LimitedAccess } from '../LimitedAccess/LimitedAccess';
65
import { useStaffAccountQuery } from '../StaffAccount/StaffAccount.generated';
6+
import { getIneligibleByGroup } from './getIneligibleByGroup';
77

88
export enum RequiredUserGroupEnum {
99
Asr = 'asr',
@@ -37,16 +37,14 @@ export const UserTypeAccess: React.FC<UserTypeAccessProps> = ({
3737
skip: !requireStaffAccount,
3838
});
3939

40-
// Only run HCM query if we are using an HCM report
41-
const skip = !requireUserGroups;
40+
const usStaffGroup = data?.user.usStaffGroup;
4241
const {
4342
inAsrIneligibleGroup,
4443
inSalaryCalcIneligibleGroup,
4544
inMhaIneligibleGroup,
4645
inMpdGoalCalcIneligibleGroup,
4746
inPdsGoalCalcIneligibleGroup,
48-
loading: hcmLoading,
49-
} = useUsStaffGroups(skip);
47+
} = getIneligibleByGroup(usStaffGroup as UsStaffGroupEnum);
5048

5149
const ineligibleByGroup: Record<RequiredUserGroupEnum, boolean> = {
5250
[RequiredUserGroupEnum.Asr]: inAsrIneligibleGroup,
@@ -71,7 +69,7 @@ export const UserTypeAccess: React.FC<UserTypeAccessProps> = ({
7169
return <LimitedAccess userGroupError />;
7270
}
7371

74-
if ((userLoading && !userType) || hcmLoading) {
72+
if (userLoading && !userType) {
7573
return <Loading loading />;
7674
}
7775

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { UsStaffGroupEnum } from 'src/graphql/types.generated';
2+
3+
export const getIneligibleByGroup = (usStaffGroup: UsStaffGroupEnum) => {
4+
const isSeniorStaff = usStaffGroup === UsStaffGroupEnum.SeniorStaff;
5+
const isNationalExpat = usStaffGroup === UsStaffGroupEnum.NationalExpat;
6+
7+
const inAsrIneligibleGroup =
8+
!isSeniorStaff &&
9+
usStaffGroup !== UsStaffGroupEnum.NewStaff &&
10+
!isNationalExpat;
11+
const inSalaryCalcIneligibleGroup = !isSeniorStaff && !isNationalExpat;
12+
const inMhaIneligibleGroup = !isSeniorStaff && !isNationalExpat;
13+
const inMpdGoalCalcIneligibleGroup = !isSeniorStaff;
14+
const inPdsGoalCalcIneligibleGroup =
15+
usStaffGroup !== UsStaffGroupEnum.PaidWithDesignation;
16+
17+
return {
18+
inAsrIneligibleGroup,
19+
inSalaryCalcIneligibleGroup,
20+
inMhaIneligibleGroup,
21+
inMpdGoalCalcIneligibleGroup,
22+
inPdsGoalCalcIneligibleGroup,
23+
};
24+
};

src/hooks/useHrToolsNavItems.ts

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,32 @@
11
import { useMemo } from 'react';
22
import { useTranslation } from 'react-i18next';
3+
import { UsStaffGroupEnum } from 'pages/api/graphql-rest.page.generated';
4+
import { useStaffAccountQuery } from 'src/components/Shared/StaffAccount/StaffAccount.generated';
5+
import { getIneligibleByGroup } from 'src/components/Shared/UserTypeAccess/getIneligibleByGroup';
6+
import { useGetUserQuery } from 'src/components/User/GetUser.generated';
37
import { NavItems } from './useReportNavItems';
4-
import { useUsStaffGroups } from './useUsStaffGroups';
58

69
export function useHrToolsNavItems(): {
710
items: NavItems[];
811
loading: boolean;
912
} {
1013
const { t } = useTranslation();
14+
const { data, loading } = useGetUserQuery();
15+
const { data: staffAccountData, loading: staffAccountLoading } =
16+
useStaffAccountQuery();
17+
const hasNoStaffAccount = !staffAccountData?.staffAccount?.id;
1118

19+
const usStaffGroup = data?.user.usStaffGroup;
1220
const {
1321
inAsrIneligibleGroup,
1422
inSalaryCalcIneligibleGroup,
1523
inMhaIneligibleGroup,
1624
inMpdGoalCalcIneligibleGroup,
1725
inPdsGoalCalcIneligibleGroup,
18-
hasNoHcmData,
19-
loading: hcmLoading,
20-
} = useUsStaffGroups();
26+
} = getIneligibleByGroup(usStaffGroup as UsStaffGroupEnum);
2127

2228
const items = useMemo(() => {
23-
if (hcmLoading) {
29+
if (loading || staffAccountLoading) {
2430
return [];
2531
}
2632

@@ -33,7 +39,7 @@ export function useHrToolsNavItems(): {
3339
{
3440
id: 'staffSavingFund',
3541
title: t('Savings Fund Transfer'),
36-
hideItem: hasNoHcmData,
42+
hideItem: hasNoStaffAccount,
3743
},
3844
{
3945
id: 'goalCalculator',
@@ -58,7 +64,7 @@ export function useHrToolsNavItems(): {
5864
{
5965
id: 'partnerReminders',
6066
title: t('Ministry Partner Reminders'),
61-
hideItem: hasNoHcmData,
67+
hideItem: hasNoStaffAccount,
6268
},
6369
].filter((item) => !item.hideItem);
6470
}, [
@@ -68,9 +74,10 @@ export function useHrToolsNavItems(): {
6874
inMhaIneligibleGroup,
6975
inMpdGoalCalcIneligibleGroup,
7076
inPdsGoalCalcIneligibleGroup,
71-
hasNoHcmData,
72-
hcmLoading,
77+
loading,
78+
staffAccountLoading,
79+
hasNoStaffAccount,
7380
]);
7481

75-
return { items, loading: hcmLoading };
82+
return { items, loading: loading || staffAccountLoading };
7683
}

src/hooks/useNavPages.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,8 @@ export function useNavPages(coachingAccountCount: boolean, isSearch = false) {
122122
showInNav: true,
123123
hideTab:
124124
(!!data && !showTab) ||
125-
(!hrToolsLoading && hrToolsItems.length === 0),
125+
hrToolsLoading ||
126+
hrToolsItems.length === 0,
126127
},
127128
]),
128129
{

0 commit comments

Comments
 (0)