Skip to content

Commit 782e8e6

Browse files
committed
fix: undefined (reading 'paymentMethodId') in replace card
1 parent a66ef5e commit 782e8e6

File tree

3 files changed

+33
-31
lines changed

3 files changed

+33
-31
lines changed

src/routes/(console)/organization-[organization]/billing/+page.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@
134134
currentAggregation={data?.billingAggregation}
135135
currentInvoice={data?.billingInvoice} />
136136
<PaymentHistory />
137-
<PaymentMethods methods={data?.paymentMethods} />
137+
<PaymentMethods organization={data?.organization} methods={data?.paymentMethods} />
138138
<BillingAddress {data} />
139139
<TaxId />
140140
<BudgetCap organization={data?.organization} currentPlan={data?.currentPlan} />

src/routes/(console)/organization-[organization]/billing/paymentMethods.svelte

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import { CardGrid, CreditCardBrandImage, CreditCardInfo } from '$lib/components';
66
import { BillingPlan, Dependencies } from '$lib/constants';
77
import { addNotification } from '$lib/stores/notifications';
8-
import { organization } from '$lib/stores/organization';
8+
import { type Organization } from '$lib/stores/organization';
99
import { Button } from '$lib/elements/forms';
1010
import { hasStripePublicKey, isCloud } from '$lib/system';
1111
import type { PaymentList, PaymentMethodData } from '$lib/sdk/billing';
@@ -34,6 +34,7 @@
3434
IconTrash
3535
} from '@appwrite.io/pink-icons-svelte';
3636
37+
export let organization: Organization;
3738
export let methods: PaymentList;
3839
3940
let showPayment = false;
@@ -47,12 +48,12 @@
4748
async function addPaymentMethod(paymentMethodId: string) {
4849
try {
4950
await sdk.forConsole.billing.setOrganizationPaymentMethod(
50-
$organization.$id,
51+
organization.$id,
5152
paymentMethodId
5253
);
5354
addNotification({
5455
type: 'success',
55-
message: `A new payment method has been added to ${$organization.name}`
56+
message: `A new payment method has been added to ${organization.name}`
5657
});
5758
trackEvent(Submit.OrganizationPaymentUpdate);
5859
invalidate(Dependencies.ORGANIZATION);
@@ -68,12 +69,12 @@
6869
async function addBackupPaymentMethod(paymentMethodId: string) {
6970
try {
7071
await sdk.forConsole.billing.setOrganizationPaymentMethodBackup(
71-
$organization.$id,
72+
organization.$id,
7273
paymentMethodId
7374
);
7475
addNotification({
7576
type: 'success',
76-
message: `A new payment method has been added to ${$organization.name}`
77+
message: `A new payment method has been added to ${organization.name}`
7778
});
7879
invalidate(Dependencies.ORGANIZATION);
7980
} catch (error) {
@@ -85,15 +86,15 @@
8586
}
8687
}
8788
88-
$: if ($organization?.backupPaymentMethodId) {
89+
$: if (organization?.backupPaymentMethodId) {
8990
sdk.forConsole.billing
90-
.getOrganizationPaymentMethod($organization.$id, $organization.backupPaymentMethodId)
91+
.getOrganizationPaymentMethod(organization.$id, organization.backupPaymentMethodId)
9192
.then((res) => (backupPaymentMethod = res));
9293
}
9394
94-
$: if ($organization?.paymentMethodId) {
95+
$: if (organization?.paymentMethodId) {
9596
sdk.forConsole.billing
96-
.getOrganizationPaymentMethod($organization.$id, $organization.paymentMethodId)
97+
.getOrganizationPaymentMethod(organization.$id, organization.paymentMethodId)
9798
.then((res) => (defaultPaymentMethod = res));
9899
}
99100
@@ -112,7 +113,7 @@
112113
<svelte:fragment slot="title">Payment methods</svelte:fragment>
113114
View or update your organization payment methods here.
114115
<svelte:fragment slot="aside">
115-
{#if $organization?.paymentMethodId}
116+
{#if organization?.paymentMethodId}
116117
<Table.Root
117118
let:root
118119
columns={[
@@ -168,7 +169,7 @@
168169
</Popover>
169170
</Table.Cell>
170171
</Table.Row.Base>
171-
{#if $organization?.backupPaymentMethodId}
172+
{#if organization?.backupPaymentMethodId}
172173
<Table.Row.Base {root}>
173174
<CreditCardInfo {root} isBackup paymentMethod={backupPaymentMethod} />
174175
<Table.Cell column="actions" {root}>
@@ -209,9 +210,9 @@
209210
</Table.Row.Base>
210211
{/if}
211212
</Table.Root>
212-
{#if !$organization?.backupPaymentMethodId}
213+
{#if !organization?.backupPaymentMethodId}
213214
{@const filteredPaymentMethods = methods.paymentMethods.filter(
214-
(o) => !!o.last4 && o.$id !== $organization?.paymentMethodId
215+
(o) => !!o.last4 && o.$id !== organization?.paymentMethodId
215216
)}
216217
<div>
217218
<Popover let:toggle placement="bottom-start" padding="none">
@@ -264,7 +265,7 @@
264265
{/if}
265266
{:else}
266267
{@const filteredPaymentMethods = methods.paymentMethods.filter(
267-
(o) => !!o.last4 && o.$id !== $organization?.backupPaymentMethodId
268+
(o) => !!o.last4 && o.$id !== organization?.backupPaymentMethodId
268269
)}
269270
<Card.Base>
270271
<Layout.Stack justifyContent="center" alignItems="center" gap="m">
@@ -319,15 +320,15 @@
319320
bind:show={showEdit} />
320321
{/if}
321322
{#if isCloud && hasStripePublicKey}
322-
<ReplaceCard {methods} bind:show={showReplace} isBackup={isSelectedBackup} />
323+
<ReplaceCard {organization} {methods} bind:show={showReplace} isBackup={isSelectedBackup} />
323324
{/if}
324325
{#if showDelete && isCloud && hasStripePublicKey}
325326
{@const hasOtherMethod = isSelectedBackup
326-
? !!$organization?.paymentMethodId
327-
: !!$organization?.backupPaymentMethodId}
327+
? !!organization?.paymentMethodId
328+
: !!organization?.backupPaymentMethodId}
328329
<DeleteOrgPayment
329330
bind:showDelete
330331
{hasOtherMethod}
331332
isBackup={isSelectedBackup}
332-
disabled={$organization?.billingPlan !== BillingPlan.FREE && !hasOtherMethod} />
333+
disabled={organization?.billingPlan !== BillingPlan.FREE && !hasOtherMethod} />
333334
{/if}

src/routes/(console)/organization-[organization]/billing/replaceCard.svelte

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import { FakeModal } from '$lib/components';
44
import { Button } from '$lib/elements/forms';
55
import { sdk } from '$lib/stores/sdk';
6-
import { organization } from '$lib/stores/organization';
6+
import type { Organization } from '$lib/stores/organization';
77
import { Dependencies } from '$lib/constants';
88
import { submitStripeCard } from '$lib/stores/stripe';
99
import { onMount } from 'svelte';
@@ -12,6 +12,7 @@
1212
import { Submit, trackError, trackEvent } from '$lib/actions/analytics';
1313
import { PaymentBoxes } from '$lib/components/billing';
1414
15+
export let organization: Organization;
1516
export let show = false;
1617
export let isBackup = false;
1718
export let methods: PaymentList;
@@ -21,12 +22,12 @@
2122
let selectedPaymentMethodId: string;
2223
2324
onMount(async () => {
24-
if (!$organization.paymentMethodId && !$organization.backupPaymentMethodId) {
25+
if (!organization.paymentMethodId && !organization.backupPaymentMethodId) {
2526
selectedPaymentMethodId = methods?.total ? methods.paymentMethods[0].$id : null;
2627
} else {
2728
selectedPaymentMethodId = isBackup
28-
? $organization.backupPaymentMethodId
29-
: $organization.paymentMethodId;
29+
? organization.backupPaymentMethodId
30+
: organization.paymentMethodId;
3031
// If the selected payment method does not belong to the current user, select the first one.
3132
if (
3233
methods?.total &&
@@ -40,7 +41,7 @@
4041
async function handleSubmit() {
4142
try {
4243
if (selectedPaymentMethodId === '$new') {
43-
const method = await submitStripeCard(name, $organization.$id);
44+
const method = await submitStripeCard(name, organization.$id);
4445
selectedPaymentMethodId = method.$id;
4546
}
4647
isBackup
@@ -68,7 +69,7 @@
6869
async function addPaymentMethod(paymentMethodId: string) {
6970
try {
7071
await sdk.forConsole.billing.setOrganizationPaymentMethod(
71-
$organization.$id,
72+
organization.$id,
7273
paymentMethodId
7374
);
7475
} catch (e) {
@@ -79,7 +80,7 @@
7980
async function addBackupPaymentMethod(paymentMethodId: string) {
8081
try {
8182
await sdk.forConsole.billing.setOrganizationPaymentMethodBackup(
82-
$organization.$id,
83+
organization.$id,
8384
paymentMethodId
8485
);
8586
} catch (e) {
@@ -97,18 +98,18 @@
9798
methods={filteredMethods}
9899
bind:name
99100
bind:group={selectedPaymentMethodId}
100-
defaultMethod={$organization?.paymentMethodId}
101-
backupMethod={$organization?.backupPaymentMethodId}
101+
defaultMethod={organization?.paymentMethodId}
102+
backupMethod={organization?.backupPaymentMethodId}
102103
disabledCondition={isBackup
103-
? $organization.paymentMethodId
104-
: $organization.backupPaymentMethodId} />
104+
? organization.paymentMethodId
105+
: organization.backupPaymentMethodId} />
105106
<svelte:fragment slot="footer">
106107
<Button text on:click={() => (show = false)}>Cancel</Button>
107108
<Button
108109
secondary
109110
submit
110111
disabled={selectedPaymentMethodId ===
111-
(isBackup ? $organization.backupPaymentMethodId : $organization.paymentMethodId)}>
112+
(isBackup ? organization.backupPaymentMethodId : organization.paymentMethodId)}>
112113
Save
113114
</Button>
114115
</svelte:fragment>

0 commit comments

Comments
 (0)