/ src / stores / modalPage.ts
modalPage.ts
 1  import type { GenericPage } from '@jet-app/app-store/api/models';
 2  import { type Writable, writable, type Readable } from 'svelte/store';
 3  
 4  interface Page {
 5      page: GenericPage;
 6      pageDetail?: string;
 7  }
 8  
 9  const modalPageStore: Writable<Page | undefined> = (() => {
10      // prevent global store on the server
11      if (typeof window === 'undefined') {
12          return {
13              subscribe: () => {
14                  return () => {};
15              },
16              set: () => {},
17              update: () => {},
18          } as unknown as Writable<Page | undefined>;
19      }
20  
21      return writable();
22  })();
23  
24  interface ModalPageStore extends Readable<Page | undefined> {
25      setPage: (page: Page) => void;
26      clearPage: () => void;
27  }
28  
29  export const getModalPageStore = (): ModalPageStore => {
30      return {
31          subscribe: modalPageStore.subscribe,
32          setPage: (page) => modalPageStore.set(page),
33          clearPage: () => modalPageStore.set(undefined),
34      };
35  };