Remove payments API routing initialization
[ProtonMail-WebClient.git] / packages / components / containers / cache / Provider.tsx
blob8c74d535ad64ca88fabbff939d10e131cc32db40
1 import type { ReactNode } from 'react';
2 import { useEffect, useRef } from 'react';
4 import type { Cache } from '@proton/shared/lib/helpers/cache';
5 import createCache from '@proton/shared/lib/helpers/cache';
7 import CacheContext from './cacheContext';
9 interface Props<K, V> {
10     cache?: Cache<K, V>;
11     children: ReactNode;
14 export const CacheProvider = <K, V>({ cache, children }: Props<K, V>) => {
15     const cacheRef = useRef<Cache<string, any>>(cache as any);
16     if (!cacheRef.current) {
17         cacheRef.current = createCache<string, any>();
18     }
19     useEffect(() => {
20         const cache = cacheRef.current;
21         return () => {
22             cache.clear();
23             cache.clearListeners();
24         };
25     }, []);
26     return <CacheContext.Provider value={cacheRef.current}>{children}</CacheContext.Provider>;