Cleanup - unused files / unused exports / duplicate exports
[ProtonMail-WebClient.git] / packages / shared / lib / authentication / createSecureSessionStorage.ts
blob2477711b003906b92ab7534fc06b052fe9a226df
1 import { load, save } from '../helpers/secureSessionStorage';
2 import createStore from '../helpers/store';
4 const createSecureSessionStorage = () => {
5     const store = createStore(load());
7     if ('onpagehide' in window) {
8         const handlePageShow = () => {
9             // This does not need to do anything. The main purpose is just to reset window.name and sessionStorage to fix the Safari 13.1 described below
10             load();
11         };
13         const handlePageHide = () => {
14             // Cannot use !event.persisted because Safari 13.1 does not send that when you are navigating on the same domain
15             save(store.getState());
16         };
18         window.addEventListener('pageshow', handlePageShow, true);
19         window.addEventListener('pagehide', handlePageHide, true);
20     } else {
21         const handleUnload = () => {
22             save(store.getState());
23         };
24         // This gets narrowed to never because of the onpagehide
25         // @ts-ignore
26         window.addEventListener('unload', handleUnload, true);
27     }
29     return store;
32 export type SecureSessionStorage = ReturnType<typeof createSecureSessionStorage>;
34 export default createSecureSessionStorage;