Merge pull request #105 from MutinyWallet/better-waitlist-skipping

if already approved or self-hosting skip the waitlist asker
This commit is contained in:
Paul Miller
2023-05-11 17:11:13 -05:00
committed by GitHub
2 changed files with 17 additions and 8 deletions

View File

@@ -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"

View File

@@ -12,6 +12,7 @@ const MegaStoreContext = createContext<MegaStore>();
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<UserStatus> {
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