Merge branch 'renovate/all-minor-patch' into 'main'
[ProtonMail-WebClient.git] / packages / cross-storage / account-impl / hostInstance.ts
blob63816ad8eb4e060cd3d74fd2452308ae85d8d834
1 import { getItem, removeItem, setItem } from '@proton/shared/lib/helpers/storage';
3 import { createHost } from '../lib';
4 import type { ProtonMessageResponses, ProtonMessages } from './interface';
5 import { Action } from './interface';
7 const handler = async (message: ProtonMessages): Promise<ProtonMessageResponses | undefined> => {
8     if (message.type === Action.getLocalStorage) {
9         return getItem(message.payload.key);
10     }
12     if (message.type === Action.getLocalStorageKeys) {
13         return [...Object.keys(window.localStorage)];
14     }
16     if (message.type === Action.setLocalStorage) {
17         setItem(message.payload.key, message.payload.value);
18         return;
19     }
21     if (message.type === Action.removeLocalStorage) {
22         removeItem(message.payload.key);
23         return;
24     }
26     throw new Error(`Unknown message type`);
29 export const setupHostCrossStorage = () => {
30     createHost<ProtonMessages, ProtonMessageResponses>(handler);