Skip to content

Commit 6b74b89

Browse files
committed
CCM-11148 Update feature flags on auth status change
1 parent df9e10c commit 6b74b89

File tree

1 file changed

+30
-1
lines changed

1 file changed

+30
-1
lines changed

frontend/src/components/molecules/Header/HeaderNavigation.tsx

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,49 @@
11
'use client';
22

3+
import { useEffect, useRef, useState } from 'react';
34
import type { AuthStatus } from '@aws-amplify/ui';
45
import Link from 'next/link';
56
import content from '@content/content';
67
import { useAuthStatus } from '@hooks/use-auth-status';
8+
import { fetchAuthSession } from 'aws-amplify/auth';
9+
import { clientConfigurationApiClient } from 'nhs-notify-backend-client';
710

811
const headerContent = content.components.header;
912

1013
export function HeaderNavigation({
1114
initialAuthStatus,
12-
routingEnabled,
15+
routingEnabled: initialRoutingEnabled = false,
1316
}: {
1417
initialAuthStatus: AuthStatus;
1518
routingEnabled?: boolean;
1619
}) {
1720
const authStatus = useAuthStatus(initialAuthStatus);
21+
const prevStatus = useRef(initialAuthStatus);
22+
const [routingEnabled, setRoutingEnabled] = useState(initialRoutingEnabled);
23+
24+
useEffect(() => {
25+
if (authStatus === prevStatus.current) return;
26+
27+
prevStatus.current = authStatus;
28+
29+
if (authStatus !== 'authenticated') {
30+
setRoutingEnabled(false);
31+
return;
32+
}
33+
34+
(async () => {
35+
try {
36+
const session = await fetchAuthSession();
37+
const token = session.tokens?.accessToken?.toString();
38+
if (!token) return;
39+
40+
const result = await clientConfigurationApiClient.fetch(token);
41+
setRoutingEnabled(result.data?.features?.routing ?? false);
42+
} catch {
43+
setRoutingEnabled(false);
44+
}
45+
})();
46+
}, [authStatus]);
1847

1948
return (
2049
<>

0 commit comments

Comments
 (0)