import { API } from "api" import { get, writable } from "svelte/store" const initialState = { appId: null, isDevApp: false, clientLoadTime: Date.now() - (window.INIT_TIME || Date.now()), } const createAppStore = () => { const store = writable(initialState) // Fetches the app definition including screens, layouts and theme const fetchAppDefinition = async () => { const appId = get(store)?.appId if (!appId) { throw "Cannot fetch app definition without app ID set" } try { const appDefinition = await API.fetchAppPackage(appId) store.set({ ...appDefinition, appId: appDefinition?.application?.appId, isDevApp: appId.startsWith("app_dev"), }) } catch (error) { store.set(initialState) } } // Sets the initial app ID const setAppID = id => { store.update(state => { if (state) { state.appId = id } else { state = { appId: id } } return state }) } return { subscribe: store.subscribe, actions: { setAppID, fetchAppDefinition }, } } export const appStore = createAppStore()