Skip to content

Commit 3aae061

Browse files
Merge pull request #2959 from appwrite/fix-billing-payment-method-display
fix: show org payment method for all team members on billing tab
2 parents af0b0d3 + 784c4fd commit 3aae061

1 file changed

Lines changed: 43 additions & 38 deletions

File tree

  • src/routes/(console)/organization-[organization]/billing

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

Lines changed: 43 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -70,26 +70,54 @@ export const load: PageLoad = async ({ parent, depends, url, route }) => {
7070

7171
const areCreditsSupported = isCloud ? currentPlan?.supportsCredits : false;
7272

73-
const [paymentMethods, addressList, billingAddress, availableCredit, billingPlanDowngrade] =
74-
await Promise.all([
75-
sdk.forConsole.account.listPaymentMethods(),
76-
sdk.forConsole.account.listBillingAddresses(),
77-
billingAddressPromise,
78-
areCreditsSupported
79-
? sdk.forConsole.organizations.getAvailableCredits({
80-
organizationId: organization.$id
73+
const primaryPaymentMethodPromise: Promise<Models.PaymentMethod | null> | null =
74+
organization.paymentMethodId
75+
? sdk.forConsole.organizations
76+
.getPaymentMethod({
77+
organizationId: organization.$id,
78+
paymentMethodId: organization.paymentMethodId
8179
})
82-
: null,
83-
organization.billingPlanDowngrade
84-
? sdk.forConsole.console.getPlan({
85-
planId: organization.billingPlanDowngrade
80+
.catch(() => null)
81+
: null;
82+
83+
const backupPaymentMethodPromise: Promise<Models.PaymentMethod | null> | null =
84+
organization.backupPaymentMethodId
85+
? sdk.forConsole.organizations
86+
.getPaymentMethod({
87+
organizationId: organization.$id,
88+
paymentMethodId: organization.backupPaymentMethodId
8689
})
87-
: null
88-
]);
90+
.catch(() => null)
91+
: null;
92+
93+
const [
94+
paymentMethods,
95+
addressList,
96+
billingAddress,
97+
availableCredit,
98+
billingPlanDowngrade,
99+
primary,
100+
backup
101+
] = await Promise.all([
102+
sdk.forConsole.account.listPaymentMethods(),
103+
sdk.forConsole.account.listBillingAddresses(),
104+
billingAddressPromise,
105+
areCreditsSupported
106+
? sdk.forConsole.organizations.getAvailableCredits({
107+
organizationId: organization.$id
108+
})
109+
: null,
110+
organization.billingPlanDowngrade
111+
? sdk.forConsole.console.getPlan({
112+
planId: organization.billingPlanDowngrade
113+
})
114+
: null,
115+
primaryPaymentMethodPromise,
116+
backupPaymentMethodPromise
117+
]);
89118

90119
// make number
91120
const credits = availableCredit ? availableCredit.available : null;
92-
const { backup, primary } = getOrganizationPaymentMethods(organization, paymentMethods);
93121

94122
return {
95123
paymentMethods,
@@ -112,26 +140,3 @@ export const load: PageLoad = async ({ parent, depends, url, route }) => {
112140
primaryPaymentMethod: primary
113141
};
114142
};
115-
116-
function getOrganizationPaymentMethods(
117-
organization: Models.Organization,
118-
paymentMethods: Models.PaymentMethodList
119-
): {
120-
backup: Models.PaymentMethod | null;
121-
primary: Models.PaymentMethod | null;
122-
} {
123-
let backup: Models.PaymentMethod | null = null;
124-
let primary: Models.PaymentMethod | null = null;
125-
126-
for (const paymentMethod of paymentMethods.paymentMethods) {
127-
if (paymentMethod.$id === organization.paymentMethodId) {
128-
primary = paymentMethod;
129-
} else if (paymentMethod.$id === organization.backupPaymentMethodId) {
130-
backup = paymentMethod;
131-
}
132-
133-
if (primary && backup) break;
134-
}
135-
136-
return { primary, backup };
137-
}

0 commit comments

Comments
 (0)