From 6a585d5e99ef39de01a3655a49075cd8ebe7cc5f Mon Sep 17 00:00:00 2001 From: Ben Allfree Date: Sat, 12 Oct 2024 16:01:23 -0700 Subject: [PATCH] founder sub type refactor --- .../tables/pricing-table/PricingTable.svelte | 8 ++++---- packages/dashboard/src/routes/account/+page.svelte | 4 ++-- .../app/instances/[instanceId]/domain/+page.svelte | 9 ++------- packages/dashboard/src/routes/app/new/+page.svelte | 11 ++++++----- packages/dashboard/src/util/stores.ts | 6 ++++++ packages/pockethost/src/common/schema/User.ts | 4 ++-- .../src/mothership-app/pb_hooks/src/ls.pb.js | 8 ++++++-- 7 files changed, 28 insertions(+), 22 deletions(-) diff --git a/packages/dashboard/src/components/tables/pricing-table/PricingTable.svelte b/packages/dashboard/src/components/tables/pricing-table/PricingTable.svelte index 5b4923f9..d9922cc6 100644 --- a/packages/dashboard/src/components/tables/pricing-table/PricingTable.svelte +++ b/packages/dashboard/src/components/tables/pricing-table/PricingTable.svelte @@ -95,7 +95,7 @@ {PLAN_NAMES[SubscriptionType.Premium]} - {PLAN_NAMES[SubscriptionType.Lifetime]} + {PLAN_NAMES[SubscriptionType.Founder]} @@ -143,7 +143,7 @@
{/if} - {#if $userSubscriptionType === SubscriptionType.Lifetime || (SubscriptionType.Premium && $isUserFounder)} + {#if $userSubscriptionType === SubscriptionType.Founder || (SubscriptionType.Premium && $isUserFounder)}
{:else}
@@ -269,7 +269,7 @@

- {PLAN_NAMES[SubscriptionType.Lifetime]} + {PLAN_NAMES[SubscriptionType.Founder]}

Super elite! The Founder's Edition is our way of saying thanks @@ -304,7 +304,7 @@

- {#if $userSubscriptionType === SubscriptionType.Lifetime} + {#if $userSubscriptionType === SubscriptionType.Founder} diff --git a/packages/dashboard/src/routes/app/instances/[instanceId]/domain/+page.svelte b/packages/dashboard/src/routes/app/instances/[instanceId]/domain/+page.svelte index 4ad92bd6..f9b0cef3 100644 --- a/packages/dashboard/src/routes/app/instances/[instanceId]/domain/+page.svelte +++ b/packages/dashboard/src/routes/app/instances/[instanceId]/domain/+page.svelte @@ -5,7 +5,7 @@ import CardHeader from '$components/cards/CardHeader.svelte' import { DOCS_URL, INSTANCE_BARE_HOST } from '$src/env' import { client } from '$src/pocketbase-client' - import { userSubscriptionType } from '$util/stores' + import { isUserPaid, userSubscriptionType } from '$util/stores' import { SubscriptionType } from 'pockethost/common' import { dns } from 'svelte-highlight/languages' import { instance } from '../store' @@ -40,12 +40,7 @@ const trimmed = formCname.trim() - if ( - trimmed && - ![SubscriptionType.Premium, SubscriptionType.Lifetime].includes( - $userSubscriptionType, - ) - ) { + if (trimmed && !$isUserPaid) { errorMessage = `Oof, you hit a paywall. This is a Pro feature only. Please upgrade your account.` return } diff --git a/packages/dashboard/src/routes/app/new/+page.svelte b/packages/dashboard/src/routes/app/new/+page.svelte index 579c1e16..f06b150f 100644 --- a/packages/dashboard/src/routes/app/new/+page.svelte +++ b/packages/dashboard/src/routes/app/new/+page.svelte @@ -1,5 +1,9 @@ diff --git a/packages/dashboard/src/util/stores.ts b/packages/dashboard/src/util/stores.ts index 76c6dad1..978b2913 100644 --- a/packages/dashboard/src/util/stores.ts +++ b/packages/dashboard/src/util/stores.ts @@ -23,6 +23,7 @@ const { onAuthChange } = client() export const isUserLegacy = writable(false) export const userSubscriptionType = writable(SubscriptionType.Legacy) +export const isUserPaid = writable(false) export const isUserLoggedIn = writable(false) export const isUserFounder = writable(false) export const isUserVerified = writable(false) @@ -42,6 +43,11 @@ onAuthChange((authStoreProps) => { userStore.subscribe((user) => { isUserLegacy.set(!!user?.isLegacy) isUserFounder.set(!!user?.isFounder) + isUserPaid.set( + [SubscriptionType.Founder, SubscriptionType.Premium].includes( + user?.subscription || SubscriptionType.Free, + ), + ) userSubscriptionType.set(user?.subscription || SubscriptionType.Free) isUserVerified.set(!!user?.verified) }) diff --git a/packages/pockethost/src/common/schema/User.ts b/packages/pockethost/src/common/schema/User.ts index 535170b6..437b6c09 100644 --- a/packages/pockethost/src/common/schema/User.ts +++ b/packages/pockethost/src/common/schema/User.ts @@ -4,14 +4,14 @@ export enum SubscriptionType { Legacy = 'legacy', Free = 'free', Premium = 'premium', - Lifetime = 'lifetime', + Founder = 'founder', } export const PLAN_NAMES = { [SubscriptionType.Legacy]: 'Legacy', [SubscriptionType.Free]: 'Hacker', [SubscriptionType.Premium]: `Pro`, - [SubscriptionType.Lifetime]: `Founder's Edition`, + [SubscriptionType.Founder]: `Founder's Edition`, } export type UserFields = BaseFields & { diff --git a/packages/pockethost/src/mothership-app/pb_hooks/src/ls.pb.js b/packages/pockethost/src/mothership-app/pb_hooks/src/ls.pb.js index 5bfe2f52..23b7c607 100644 --- a/packages/pockethost/src/mothership-app/pb_hooks/src/ls.pb.js +++ b/packages/pockethost/src/mothership-app/pb_hooks/src/ls.pb.js @@ -71,21 +71,25 @@ routerAdd('POST', '/api/ls', (c) => { const editions = { // Founder's annual 159792: () => { - userRec.set(`subscription`, `premium`) + userRec.set(`subscription`, `founder`) + userRec.set(`subscription_interval`, `year`) userRec.set(`isFounder`, true) }, // Founder's lifetime 159794: () => { - userRec.set(`subscription`, `lifetime`) + userRec.set(`subscription`, `founder`) + userRec.set(`subscription_interval`, `life`) userRec.set(`isFounder`, true) }, // Pro annual 159791: () => { userRec.set(`subscription`, `premium`) + userRec.set(`subscription_interval`, `year`) }, // Pro monthly 159790: () => { userRec.set(`subscription`, `premium`) + userRec.set(`subscription_interval`, `month`) }, }