Skip to content

Commit 2238a84

Browse files
committed
feat(#3681): add local storage for the value persistence
1 parent 4a1248e commit 2238a84

File tree

3 files changed

+40
-24
lines changed

3 files changed

+40
-24
lines changed

govtool/frontend/src/components/organisms/MaintenanceEndingBanner/MaintenanceEndingBannerContext.tsx

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,17 @@ import {
66
useRef,
77
useState,
88
useLayoutEffect,
9+
useEffect,
910
} from "react";
11+
import {
12+
getItemFromLocalStorage,
13+
MAINTENANCE_ENDING_BANNER_EXPANDED_KEY,
14+
setItemToLocalStorage,
15+
} from "@/utils";
1016

1117
interface MaintenanceEndingBannerContextType {
1218
ref: React.RefObject<HTMLDivElement>;
1319
height: number;
14-
y: number;
1520
isExpanded: boolean;
1621
toggleExpanded: () => void;
1722
}
@@ -20,7 +25,6 @@ const MaintenanceEndingBannerContext =
2025
createContext<MaintenanceEndingBannerContextType>({
2126
ref: createRef<HTMLDivElement>(),
2227
height: 0,
23-
y: 0,
2428
isExpanded: true,
2529
toggleExpanded: () => {},
2630
});
@@ -30,10 +34,19 @@ export const MaintenanceEndingBannerProvider = ({
3034
}: React.PropsWithChildren) => {
3135
const ref = useRef<HTMLDivElement>(null);
3236
const [height, setHeight] = useState(0);
33-
const [y, setY] = useState(0);
34-
const [isExpanded, setIsExpanded] = useState(true);
37+
const [isExpanded, setIsExpanded] = useState<boolean>(true);
38+
39+
useEffect(() => {
40+
const storedValue = getItemFromLocalStorage(
41+
MAINTENANCE_ENDING_BANNER_EXPANDED_KEY,
42+
);
43+
if (storedValue !== null) {
44+
setIsExpanded(JSON.parse(storedValue));
45+
}
46+
}, []);
3547

3648
const toggleExpanded = () => {
49+
setItemToLocalStorage(MAINTENANCE_ENDING_BANNER_EXPANDED_KEY, !isExpanded);
3750
setIsExpanded((prev) => !prev);
3851
};
3952

@@ -44,7 +57,6 @@ export const MaintenanceEndingBannerProvider = ({
4457
if (ref.current) {
4558
const rect = ref.current.getBoundingClientRect();
4659

47-
setY(rect.top);
4860
setHeight(rect.height);
4961
}
5062
};
@@ -78,11 +90,10 @@ export const MaintenanceEndingBannerProvider = ({
7890
() => ({
7991
ref,
8092
height,
81-
y,
8293
isExpanded,
8394
toggleExpanded,
8495
}),
85-
[ref, height, y, isExpanded, toggleExpanded],
96+
[ref, height, isExpanded, toggleExpanded],
8697
);
8798

8899
return (

govtool/frontend/src/context/contextProviders.tsx

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { FeatureFlagProvider } from "./featureFlag";
77
import { GovernanceActionProvider } from "./governanceAction";
88
import { AdaHandleProvider } from "./adaHandle";
99
import { ProposalDiscussionProvider } from "./proposalDiscussion";
10+
1011
import { MaintenanceEndingBannerProvider } from "@/components/organisms/MaintenanceEndingBanner/MaintenanceEndingBannerContext";
1112

1213
interface Props {
@@ -15,23 +16,25 @@ interface Props {
1516

1617
const ContextProviders = ({ children }: Props) => (
1718
<AppContextProvider>
18-
<MaintenanceEndingBannerProvider>
19-
<GovernanceActionProvider>
20-
<ProposalDiscussionProvider>
21-
<FeatureFlagProvider>
22-
<AdaHandleProvider>
23-
<ModalProvider>
24-
<SnackbarProvider>
25-
<DataActionsBarProvider>
26-
<CardanoProvider>{children}</CardanoProvider>
27-
</DataActionsBarProvider>
28-
</SnackbarProvider>
29-
</ModalProvider>
30-
</AdaHandleProvider>
31-
</FeatureFlagProvider>
32-
</ProposalDiscussionProvider>
33-
</GovernanceActionProvider>
34-
</MaintenanceEndingBannerProvider>
19+
<GovernanceActionProvider>
20+
<ProposalDiscussionProvider>
21+
<FeatureFlagProvider>
22+
<AdaHandleProvider>
23+
<ModalProvider>
24+
<SnackbarProvider>
25+
<DataActionsBarProvider>
26+
<CardanoProvider>
27+
<MaintenanceEndingBannerProvider>
28+
{children}
29+
</MaintenanceEndingBannerProvider>
30+
</CardanoProvider>
31+
</DataActionsBarProvider>
32+
</SnackbarProvider>
33+
</ModalProvider>
34+
</AdaHandleProvider>
35+
</FeatureFlagProvider>
36+
</ProposalDiscussionProvider>
37+
</GovernanceActionProvider>
3538
</AppContextProvider>
3639
);
3740

govtool/frontend/src/utils/localStorage.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ export const PROTOCOL_PARAMS_KEY = "protocol_params";
33
export const NETWORK_METRICS_KEY = "network_metrics";
44
export const NETWORK_INFO_KEY = "network_info";
55
export const NETWORK_TOTAL_STAKE_KEY = "network_total_stake";
6+
export const MAINTENANCE_ENDING_BANNER_EXPANDED_KEY =
7+
"maintenance_ending_banner_expanded";
68

79
export const WALLET_LS_KEY = "wallet_data";
810

0 commit comments

Comments
 (0)