summaryrefslogtreecommitdiff
path: root/src/stores/modalPage.ts
blob: dca38a0cf824b40a20602e34bf56d183b525d2a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import type { GenericPage } from '@jet-app/app-store/api/models';
import { type Writable, writable, type Readable } from 'svelte/store';

interface Page {
    page: GenericPage;
    pageDetail?: string;
}

const modalPageStore: Writable<Page | undefined> = (() => {
    // prevent global store on the server
    if (typeof window === 'undefined') {
        return {
            subscribe: () => {
                return () => {};
            },
            set: () => {},
            update: () => {},
        } as unknown as Writable<Page | undefined>;
    }

    return writable();
})();

interface ModalPageStore extends Readable<Page | undefined> {
    setPage: (page: Page) => void;
    clearPage: () => void;
}

export const getModalPageStore = (): ModalPageStore => {
    return {
        subscribe: modalPageStore.subscribe,
        setPage: (page) => modalPageStore.set(page),
        clearPage: () => modalPageStore.set(undefined),
    };
};