From 71fd694368c114f1f58b0d4ef397bb49fefe7ce6 Mon Sep 17 00:00:00 2001 From: bflatastic Date: Fri, 3 Apr 2026 23:51:11 +0700 Subject: [PATCH] maybe_landing_url signup params --- .../src/components/auth/GoogleLoginButton.tsx | 1 + .../src/components/auth/signup-form.tsx | 1 + .../src/components/pricing-table/pricing-table.tsx | 1 + frontend/apps/artcraft-website/src/main.tsx | 3 +++ frontend/libs/api/src/lib/BillingApi.ts | 5 ++++- frontend/libs/api/src/lib/UsersApi.ts | 13 ++++++++++++- 6 files changed, 22 insertions(+), 2 deletions(-) diff --git a/frontend/apps/artcraft-website/src/components/auth/GoogleLoginButton.tsx b/frontend/apps/artcraft-website/src/components/auth/GoogleLoginButton.tsx index 6aea820742..20c6912803 100644 --- a/frontend/apps/artcraft-website/src/components/auth/GoogleLoginButton.tsx +++ b/frontend/apps/artcraft-website/src/components/auth/GoogleLoginButton.tsx @@ -33,6 +33,7 @@ export function GoogleLoginButton({ const result = await api.GoogleSSO({ credential: credentialResponse.credential, maybeReferralUrl: (window as any).cached_referrer, + maybeLandingUrl: (window as any).cached_landing_url, }); if (result.success) { window.dispatchEvent(new Event("auth-change")); diff --git a/frontend/apps/artcraft-website/src/components/auth/signup-form.tsx b/frontend/apps/artcraft-website/src/components/auth/signup-form.tsx index dbcc5fe7cd..e8128284fd 100644 --- a/frontend/apps/artcraft-website/src/components/auth/signup-form.tsx +++ b/frontend/apps/artcraft-website/src/components/auth/signup-form.tsx @@ -58,6 +58,7 @@ export const SignupForm = ({ passwordConfirmation: password, signupSource, maybeReferralUrl: (window as any).cached_referrer, + maybeLandingUrl: (window as any).cached_landing_url, }); setIsLoading(false); diff --git a/frontend/apps/artcraft-website/src/components/pricing-table/pricing-table.tsx b/frontend/apps/artcraft-website/src/components/pricing-table/pricing-table.tsx index 1e268907e4..12df721907 100644 --- a/frontend/apps/artcraft-website/src/components/pricing-table/pricing-table.tsx +++ b/frontend/apps/artcraft-website/src/components/pricing-table/pricing-table.tsx @@ -193,6 +193,7 @@ const PricingTable = ({ plan: apiPlanSlug, cadence: cadence, maybeReferralUrl: (window as any).cached_referrer, + maybeLandingUrl: (window as any).cached_landing_url, }); if (!response.success || !response.data) { diff --git a/frontend/apps/artcraft-website/src/main.tsx b/frontend/apps/artcraft-website/src/main.tsx index 965a0d7d17..d966684c4b 100644 --- a/frontend/apps/artcraft-website/src/main.tsx +++ b/frontend/apps/artcraft-website/src/main.tsx @@ -26,6 +26,9 @@ if (import.meta.env.DEV) { if (!(window as any).cached_referrer) { (window as any).cached_referrer = document.referrer || undefined; } +if (!(window as any).cached_landing_url) { + (window as any).cached_landing_url = window.location.href || undefined; +} // Fire-and-forget: log the referral once per browser session if (!sessionStorage.getItem("referral_logged")) { diff --git a/frontend/libs/api/src/lib/BillingApi.ts b/frontend/libs/api/src/lib/BillingApi.ts index b0106f9bbb..58c5c40057 100644 --- a/frontend/libs/api/src/lib/BillingApi.ts +++ b/frontend/libs/api/src/lib/BillingApi.ts @@ -35,15 +35,17 @@ export class BillingApi extends ApiManager { plan, cadence, maybeReferralUrl, + maybeLandingUrl, }: { plan: string; cadence: "yearly" | "monthly"; maybeReferralUrl?: string; + maybeLandingUrl?: string; }): Promise> { const endpoint = `${this.getApiSchemeAndHost()}/v1/stripe_artcraft/user_signup_subscription_checkout`; return await this.post< - { plan: string; cadence: string; maybe_referral_url?: string }, + { plan: string; cadence: string; maybe_referral_url?: string; maybe_landing_url?: string }, { success: boolean; stripe_checkout_redirect_url?: string; @@ -55,6 +57,7 @@ export class BillingApi extends ApiManager { plan, cadence, ...(maybeReferralUrl && { maybe_referral_url: maybeReferralUrl }), + ...(maybeLandingUrl && { maybe_landing_url: maybeLandingUrl }), }, }) .then((response) => ({ diff --git a/frontend/libs/api/src/lib/UsersApi.ts b/frontend/libs/api/src/lib/UsersApi.ts index dcd82f9f00..0b54969015 100644 --- a/frontend/libs/api/src/lib/UsersApi.ts +++ b/frontend/libs/api/src/lib/UsersApi.ts @@ -9,6 +9,7 @@ interface SignupRequest { password_confirmation: string; signup_source?: string; maybe_referral_url?: string; + maybe_landing_url?: string; } export class UsersApi extends ApiManager { @@ -202,6 +203,7 @@ export class UsersApi extends ApiManager { passwordConfirmation, signupSource, maybeReferralUrl, + maybeLandingUrl, }: { username: string; email: string; @@ -209,6 +211,7 @@ export class UsersApi extends ApiManager { passwordConfirmation: string; signupSource?: string; maybeReferralUrl?: string; + maybeLandingUrl?: string; }): Promise> { const endpoint = `${this.getApiSchemeAndHost()}/v1/create_account`; const body: SignupRequest = { @@ -223,6 +226,9 @@ export class UsersApi extends ApiManager { if (maybeReferralUrl) { body.maybe_referral_url = maybeReferralUrl; } + if (maybeLandingUrl) { + body.maybe_landing_url = maybeLandingUrl; + } try { const response = await this.authFetch< @@ -259,17 +265,22 @@ export class UsersApi extends ApiManager { public async GoogleSSO({ credential, maybeReferralUrl, + maybeLandingUrl, }: { credential: string; maybeReferralUrl?: string; + maybeLandingUrl?: string; }): Promise> { const endpoint = `${this.getApiSchemeAndHost()}/v1/accounts/google_sso`; - const body: { google_credential: string; maybe_referral_url?: string } = { + const body: { google_credential: string; maybe_referral_url?: string; maybe_landing_url?: string } = { google_credential: credential, }; if (maybeReferralUrl) { body.maybe_referral_url = maybeReferralUrl; } + if (maybeLandingUrl) { + body.maybe_landing_url = maybeLandingUrl; + } try { const response = await this.authFetch<