diff --git a/.env b/.env.example similarity index 93% rename from .env rename to .env.example index 90a0a87..1ea9911 100644 --- a/.env +++ b/.env.example @@ -11,3 +11,4 @@ VITE_PROXY="wss://p.mutinywallet.com" VITE_ESPLORA="https://mutinynet.com/api" VITE_LSP="https://signet-lsp.mutinywallet.com" VITE_RGS="https://rgs.mutinynet.com/snapshot/" +VITE_SELFHOSTED="true" \ No newline at end of file diff --git a/src/state/megaStore.tsx b/src/state/megaStore.tsx index cd3c14f..d71884b 100644 --- a/src/state/megaStore.tsx +++ b/src/state/megaStore.tsx @@ -12,6 +12,7 @@ const MegaStoreContext = createContext(); type UserStatus = undefined | "new_here" | "waitlisted" | "approved" | "paid" export type MegaStore = [{ + already_approved?: boolean, waitlist_id?: string; mutiny_wallet?: MutinyWallet; deleting: boolean; @@ -36,6 +37,7 @@ export type MegaStore = [{ export const Provider: ParentComponent = (props) => { const [state, setState] = createStore({ + already_approved: import.meta.env.VITE_SELFHOSTED === "true" || localStorage.getItem("already_approved") === "true", waitlist_id: localStorage.getItem("waitlist_id"), mutiny_wallet: undefined as MutinyWallet | undefined, deleting: false, @@ -52,14 +54,22 @@ export const Provider: ParentComponent = (props) => { const actions = { async fetchUserStatus(): Promise { + if (state.already_approved) { + console.log("welcome back!") + return "approved" + } + if (!state.waitlist_id) { return "new_here" } + try { const res = await fetch(`https://waitlist.mutiny-waitlist.workers.dev/waitlist/${state.waitlist_id}`) const data = await res.json(); if (data.approval_date) { + // Remember them so we don't have to check every time + localStorage.setItem("already_approved", "true") return "approved" } else { return "waitlisted" @@ -123,15 +133,13 @@ export const Provider: ParentComponent = (props) => { onMount(() => { actions.fetchUserStatus().then(status => { setState({ user_status: status }) - }) - }) - // Only load node manager when status is approved - createEffect(() => { - if (state.user_status === "approved" && !state.mutiny_wallet && !state.deleting) { - console.log("running setup node manager...") - actions.setupMutinyWallet().then(() => console.log("node manager setup done")) - } + // Only load node manager when status is approved + if (state.user_status === "approved" && !state.mutiny_wallet && !state.deleting) { + console.log("running setup node manager...") + actions.setupMutinyWallet().then(() => console.log("node manager setup done")) + } + }) }) // Be reactive to changes in waitlist_id