Skip to content

Commit ac9dc1e

Browse files
committedFeb 19, 2025·
fix: apply credit flow
1 parent 803a038 commit ac9dc1e

File tree

8 files changed

+256
-170
lines changed

8 files changed

+256
-170
lines changed
 

‎src/routes/(console)/apply-credit/+page.svelte

+217-143
Large diffs are not rendered by default.

‎src/routes/(console)/apply-credit/+page.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@ import type { Coupon } from '$lib/sdk/billing.js';
33
import type { Campaign } from '$lib/stores/campaigns.js';
44
import { sdk } from '$lib/stores/sdk.js';
55
import { redirect } from '@sveltejs/kit';
6-
import type { PageLoad } from './$types';
76

8-
export const load: PageLoad = async ({ url }) => {
7+
export const load = async ({ url }) => {
98
// Has promo code
109
if (url.searchParams.has('code')) {
1110
let couponData: Coupon;

‎src/routes/(console)/create-organization/+page.svelte

+6-4
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@
9191
const type = $page.url.searchParams.get('type');
9292
if (type === 'payment_confirmed') {
9393
const organizationId = $page.url.searchParams.get('id');
94-
const invites = $page.url.searchParams.getAll('invites');
94+
const invites = $page.url.searchParams.get('invites').split(',');
9595
await validate(organizationId, invites);
9696
}
9797
}
@@ -152,10 +152,12 @@
152152
let params = new URLSearchParams();
153153
params.append('type', 'payment_confirmed');
154154
params.append('id', org.teamId);
155-
for (let index = 0; index < collaborators.length; index++) {
156-
const invite = collaborators[index];
157-
params.append('invites', invite);
155+
for (const [key, value] of $page.url.searchParams.entries()) {
156+
if (key !== 'type' && key !== 'id') {
157+
params.append(key, value);
158+
}
158159
}
160+
params.append('invites', collaborators.join(','));
159161
await confirmPayment(
160162
'',
161163
clientSecret,

‎src/routes/(console)/organization-[organization]/change-plan/+page.svelte

+17-5
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,15 @@
9999
billingPlan = plan as BillingPlan;
100100
}
101101
}
102+
103+
if ($page.url.searchParams.has('type')) {
104+
const type = $page.url.searchParams.get('type');
105+
if (type === 'payment_confirmed') {
106+
const organizationId = $page.url.searchParams.get('id');
107+
const invites = $page.url.searchParams.get('invites').split(',');
108+
await validate(organizationId, invites);
109+
}
110+
}
102111
if ($currentPlan?.$id === BillingPlan.SCALE) {
103112
billingPlan = BillingPlan.SCALE;
104113
} else {
@@ -224,17 +233,20 @@
224233
if (!isOrganization(org) && org.status == 402) {
225234
let clientSecret = org.clientSecret;
226235
let params = new URLSearchParams();
236+
for (const [key, value] of $page.url.searchParams.entries()) {
237+
if (key !== 'type' && key !== 'id') {
238+
params.append(key, value);
239+
}
240+
}
227241
params.append('type', 'payment_confirmed');
228242
params.append('id', org.teamId);
229-
for (let index = 0; index < collaborators.length; index++) {
230-
const invite = collaborators[index];
231-
params.append('invites', invite);
232-
}
243+
params.append('invites', collaborators.join(','));
244+
params.append('plan', billingPlan);
233245
await confirmPayment(
234246
'',
235247
clientSecret,
236248
paymentMethodId,
237-
'/console/create-organization?' + params.toString()
249+
'/console/change-plan?' + params.toString()
238250
);
239251
await validate(org.teamId, collaborators);
240252
}

‎src/routes/+layout.svelte

+12-2
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,12 @@
4747
.getCampaign(coupon.campaign)
4848
.catch<null>(() => null);
4949
if (campaign && $user) {
50-
goto(`${base}/apply-credit?code=${code}`);
50+
const params = new URLSearchParams($page.url.searchParams);
51+
params.delete('code'); // Remove the code param since we're using it in the new path
52+
const searchString = params.toString();
53+
goto(
54+
`${base}/apply-credit?code=${code}${searchString ? '&' + searchString : ''}`
55+
);
5156
loading.set(false);
5257
return;
5358
}
@@ -59,7 +64,12 @@
5964
.getCampaign(campaignId)
6065
.catch<null>(() => null);
6166
if (campaign) {
62-
goto(`${base}/apply-credit?campaign=${campaign.$id}`);
67+
const params = new URLSearchParams($page.url.searchParams);
68+
params.delete('campaign'); // Remove the campaign param since we're using it in the new path
69+
const searchString = params.toString();
70+
goto(
71+
`${base}/apply-credit?campaign=${campaign.$id}${searchString ? '&' + searchString : ''}`
72+
);
6373
loading.set(false);
6474
return;
6575
}

‎src/routes/+layout.ts

+3-14
Original file line numberDiff line numberDiff line change
@@ -58,18 +58,7 @@ export const load: LayoutLoad = async ({ depends, url, route }) => {
5858
}
5959
};
6060

61-
function withParams(pathname: string, searchParams: URLSearchParams): string {
62-
const redirect = searchParams.get('redirect');
63-
64-
if (redirect) {
65-
const extras = new URLSearchParams(searchParams);
66-
extras.delete('redirect');
67-
const extraQuery = extras.toString();
68-
const finalRedirect = extraQuery
69-
? `${redirect}${redirect.includes('?') ? '&' : '?'}${extraQuery}`
70-
: redirect;
71-
return `${pathname}?redirect=${encodeURIComponent(finalRedirect)}`;
72-
}
73-
const query = searchParams.toString();
74-
return query ? `${pathname}?${query}` : pathname;
61+
function withParams(pathname: string, searchParams: URLSearchParams) {
62+
if (searchParams.size > 0) return `${pathname}?${searchParams.toString()}`;
63+
return pathname;
7564
}
417 KB
Loading
384 KB
Loading

0 commit comments

Comments
 (0)
Please sign in to comment.