diff --git a/apps/payments/next/app/[locale]/subscriptions/en.ftl b/apps/payments/next/app/[locale]/subscriptions/en.ftl new file mode 100644 index 00000000000..23df65a5d22 --- /dev/null +++ b/apps/payments/next/app/[locale]/subscriptions/en.ftl @@ -0,0 +1,3 @@ +## Layout - Subscription Management + +subscription-management-account-profile-picture = Account profile picture diff --git a/apps/payments/next/app/[locale]/subscriptions/layout.tsx b/apps/payments/next/app/[locale]/subscriptions/layout.tsx index fddb94dea6f..36f8ca1cf94 100644 --- a/apps/payments/next/app/[locale]/subscriptions/layout.tsx +++ b/apps/payments/next/app/[locale]/subscriptions/layout.tsx @@ -2,15 +2,27 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +import { headers } from 'next/headers'; +import Image from 'next/image'; + import { Breadcrumbs, Header } from '@fxa/payments/ui'; +import { getApp } from '@fxa/payments/ui/server'; +import defaultAvatarIcon from '@fxa/shared/assets/images/avatar-default.svg'; import { auth } from 'apps/payments/next/auth'; import { config } from 'apps/payments/next/config'; export default async function SubscriptionsLayout({ children, + params, }: { children: React.ReactNode; + params: { + locale: string; + }; }) { + const { locale } = params; + const acceptLanguage = headers().get('accept-language'); + const l10n = getApp().getL10n(acceptLanguage, locale); const session = await auth(); return ( @@ -26,7 +38,41 @@ export default async function SubscriptionsLayout({ paymentsNextUrl={config.paymentsNextHostedUrl} /> -
{children}
+
+
+
+ {l10n.getString( +

+
+ {session?.user?.name || session?.user?.email} +
+ {session?.user?.name && ( +
+ {session?.user?.email} +
+ )} +

+
+ + {children} +
+
); } diff --git a/apps/payments/next/app/[locale]/subscriptions/manage/en.ftl b/apps/payments/next/app/[locale]/subscriptions/manage/en.ftl index c53484cc18c..6e159557af5 100644 --- a/apps/payments/next/app/[locale]/subscriptions/manage/en.ftl +++ b/apps/payments/next/app/[locale]/subscriptions/manage/en.ftl @@ -1,43 +1,41 @@ ## Page - Subscription Management -subscription-management-page-paypal-error-banner-title-invalid-payment-information = Invalid payment information -subscription-management-page-paypal-error-banner-message-account-error = There is an error with your account. -subscription-management-button-manage-payment-method-1 = Manage payment method -subscription-management-page-banner-warning-title-no-payment-method = No payment method added -subscription-management-page-banner-warning-link-no-payment-method = Add a payment method -subscription-management-subscriptions-heading = Subscriptions -# Heading for mobile only quick links menu -subscription-management-jump-to-heading = Jump to -subscription-management-nav-payment-details = Payment details -subscription-management-nav-active-subscriptions = Active subscriptions -subscription-management-payment-details-heading = Payment details -subscription-management-email-label = Email -subscription-management-credit-balance-label = Credit balance -subscription-management-credit-balance-message = Credit will automatically be applied to future invoices -subscription-management-payment-method-label = Payment method +subscription-management-account-credit-balance-heading = Account credit balance +subscription-management-account-credit-balance-message = Credit will be automatically applied towards future invoices +subscription-management-payment-information-heading = Payment Information subscription-management-button-add-payment-method-aria = Add payment method subscription-management-button-add-payment-method = Add -subscription-management-page-warning-message-no-payment-method = Please add a payment method to avoid interruption to your subscriptions. +subscription-management-button-change-payment-method-aria = Change payment method +subscription-management-button-change-payment-method = Change subscription-management-button-manage-payment-method-aria = Manage payment method subscription-management-button-manage-payment-method = Manage # $last4 (String) - Last four numbers of credit card subscription-management-card-ending-in = Card ending in { $last4 } # $expirationDate (Date) - Payment card's expiration date subscription-management-card-expires-date = Expires { $expirationDate } -subscription-management-error-paypal-billing-agreement = There is an issue with your PayPal account. Please resolve the issue to maintain your active subscriptions. -subscription-management-active-subscriptions-heading = Active subscriptions -subscription-management-you-have-no-active-subscriptions = You have no active subscriptions -subscription-management-new-subs-will-appear-here = New subscriptions will appear here. -subscription-management-your-active-subscriptions-aria = Your active subscriptions +subscription-management-subscriptions-heading = Subscriptions +subscription-management-your-subscriptions-aria = Your subscriptions +subscription-management-no-subscriptions = You don’t have any subscriptions yet subscription-management-button-support = Get help # $productName (String) - The name of the subscribed product, e.g. Mozilla VPN subscription-management-button-support-aria = Get help for { $productName } subscription-management-your-apple-iap-subscriptions-aria = Your { -brand-apple } In-App Subscriptions -subscription-management-apple-in-app-purchase-2 = { -brand-apple } in-app purchase +subscription-management-apple-in-app-purchase-1 = { -brand-apple }: in-app purchase subscription-management-your-google-iap-subscriptions-aria = Your { -brand-google } In-App Subscriptions -subscription-management-google-in-app-purchase-2 = { -brand-google } in-app purchase +subscription-management-google-in-app-purchase-1 = { -brand-google }: in-app purchase # $date (String) - Date of next bill -subscription-management-iap-sub-expires-on-expiry-date = Expires on { $date } +subscription-management-iap-sub-next-bill-is-due = Next bill is due { $date } +# $date (String) - Date of In-App purchase expires +subscription-management-iap-sub-will-expire-on = Your subscription will expire on { $date } # $productName (String) - The name of the subscribed product, e.g. Mozilla VPN subscription-management-button-manage-subscription-aria = Manage subscription for { $productName } -subscription-management-button-manage-subscription-1 = Manage subscription +subscription-management-button-manage-subscription = Manage +## $productName (String) - The name of the subscribed product, e.g. Mozilla VPN +## Daily/Weekly/Monthly/Yearly refers to the subscription interval/amount of time between billing occurrences +subscription-management-page-subscription-interval-daily = { $productName } (daily) +subscription-management-page-subscription-interval-weekly = { $productName } (weekly) +subscription-management-page-subscription-interval-monthly = { $productName } (monthly) +subscription-management-page-subscription-interval-halfyearly = { $productName } (6-month) +subscription-management-page-subscription-interval-yearly = { $productName } (yearly) +subscription-management-page-paypal-error-banner = Invalid payment information; there is an error with your account. +subscription-management-page-paypal-error-banner-link = Manage diff --git a/apps/payments/next/app/[locale]/subscriptions/manage/page.tsx b/apps/payments/next/app/[locale]/subscriptions/manage/page.tsx index ce8085cf6ad..e7342393e20 100644 --- a/apps/payments/next/app/[locale]/subscriptions/manage/page.tsx +++ b/apps/payments/next/app/[locale]/subscriptions/manage/page.tsx @@ -10,8 +10,7 @@ import React from 'react'; import { URLSearchParams } from 'url'; import { - Banner, - BannerVariant, + AlertBar, formatPlanInterval, getCardIcon, ManageParams, @@ -19,11 +18,7 @@ import { } from '@fxa/payments/ui'; import { getSubManPageContentAction } from '@fxa/payments/ui/actions'; import { getApp } from '@fxa/payments/ui/server'; -import alertIcon from '@fxa/shared/assets/images/alert-yellow.svg'; -import arrowDownIcon from '@fxa/shared/assets/images/arrow-down.svg'; -import iapAppleLogo from '@fxa/shared/assets/images/apple-logo.svg'; -import iapGoogleLogo from '@fxa/shared/assets/images/google-logo.svg'; -import newWindowIcon from '@fxa/shared/assets/images/new-window.svg'; +import helpIcon from '@fxa/shared/assets/images/help2.svg'; import { LinkExternal } from '@fxa/shared/react'; import { auth } from 'apps/payments/next/auth'; import { config } from 'apps/payments/next/config'; @@ -72,458 +67,323 @@ export default async function Manage({ expMonth && expYear ? l10n.getLocalizedMonthYearString(expMonth, expYear, locale) : undefined; + + const CSS_LINK_SHARED = + "flex items-center justify-center h-10 rounded-md p-4 z-10 cursor-pointer aria-disabled:relative aria-disabled:after:absolute aria-disabled:after:content-[''] aria-disabled:after:top-0 aria-disabled:after:left-0 aria-disabled:after:w-full aria-disabled:after:h-full aria-disabled:after:bg-white aria-disabled:after:opacity-50 aria-disabled:after:z-30 aria-disabled:border-none font-semibold"; + const CSS_PRIMARY_LINK = `${CSS_LINK_SHARED} bg-blue-500 hover:bg-blue-700 text-white`; + const CSS_SECONDARY_LINK = `${CSS_LINK_SHARED} bg-grey-100 hover:bg-grey-200 text-black`; + const CSS_ERROR_LINK = `${CSS_LINK_SHARED} bg-red-500 hover:bg-red-600 text-white`; + + const getSubscriptionIntervalFtlId = (interval: string) => { + switch (interval) { + case 'daily': + return 'subscription-management-page-subscription-interval-daily'; + case 'weekly': + return 'subscription-management-page-subscription-interval-weekly'; + case 'monthly': + default: + return 'subscription-management-page-subscription-interval-monthly'; + case 'halfyearly': + return 'subscription-management-page-subscription-interval-halfyearly'; + case 'yearly': + return 'subscription-management-page-subscription-interval-yearly'; + } + }; return ( -
+ <> {isPaypalBillingAgreementError && ( - -
-

- {l10n.getString( - 'subscription-management-page-paypal-error-banner-title-invalid-payment-information', - 'Invalid payment information' - )} -

- -

- {l10n.getString( - 'subscription-management-page-paypal-error-banner-message-account-error', - 'There is an error with your account.' - )} -

+ + + {l10n.getString( + 'subscription-management-page-paypal-error-banner', + 'Invalid payment information; there is an error with your account.' + )} {l10n.getString( - 'subscription-management-button-manage-payment-method-1', - 'Manage payment method' + 'subscription-management-page-paypal-error-banner-link', + 'Manage' )} -
-
+ + )} - {isStripeCustomer && - !defaultPaymentMethod && - subscriptions.length > 0 && ( - -
-

- {l10n.getString( - 'subscription-management-page-banner-warning-title-no-payment-method', - 'No payment method added' - )} -

-

- {l10n.getString( - 'subscription-management-page-warning-message-no-payment-method', - 'Please add a payment method to avoid interruption to your subscriptions.' - )} -

- + {accountCreditBalance.balance > 0 && + accountCreditBalance.currency !== null && ( + <> +
+
+

+ {l10n.getString( + 'subscription-management-account-credit-balance-heading', + 'Account credit balance' + )} +

+ + {l10n.getLocalizedCurrencyString( + accountCreditBalance.balance, + accountCreditBalance.currency, + locale + )} + +
+
{l10n.getString( - 'subscription-management-page-banner-warning-link-no-payment-method', - 'Add a payment method' + 'subscription-management-account-credit-balance-message', + 'Credit will be automatically applied towards future invoices' )} - -
- - )} -

- {l10n.getString( - 'subscription-management-subscriptions-heading', - 'Subscriptions' +

+ + + + )} - - {(subscriptions.length > 0 || - appleIapSubscriptions.length > 0 || - googleIapSubscriptions.length > 0) && ( -
+ + {type === 'card' && walletType && ( +
+
+
+ { +
+
{l10n.getString( - 'subscription-management-nav-active-subscriptions', - 'Active subscriptions' + 'subscription-management-button-change-payment-method', + 'Change' )} - - +
)} - - - )} -
-

- {l10n.getString( - 'subscription-management-payment-details-heading', - 'Payment details' - )} -

-
-
-
-

- {l10n.getString('subscription-management-email-label', 'Email')} -

-

{session?.user?.email}

-
- - {accountCreditBalance.balance > 0 && - accountCreditBalance.currency !== null && ( - <> - - -
-

+ {type === 'card' && brand && !walletType && ( +
+
+ {getCardIcon(brand, + {last4 && ( +
{l10n.getString( - 'subscription-management-credit-balance-label', - 'Credit balance' + 'subscription-management-card-ending-in', + { last4 }, + `Card ending in ${last4}` )} -

-
-

- {l10n.getLocalizedCurrencyString( - accountCreditBalance.balance, - accountCreditBalance.currency, - locale - )} -

-

- {l10n.getString( - 'subscription-management-credit-balance-message', - 'Credit will automatically be applied to future invoices' - )} -

-
- - )} - - {isStripeCustomer && - (defaultPaymentMethod || subscriptions.length > 0) && ( - <> - -
-

+ )} + {expirationDate && ( +
{l10n.getString( - 'subscription-management-payment-method-label', - 'Payment method' + 'subscription-management-card-expires-date', + { expirationDate }, + `Expires ${expirationDate}` )} -

+
+ )} +
+ + {l10n.getString( + 'subscription-management-button-change-payment-method', + 'Change' + )} + +
+ )} - {!defaultPaymentMethod && ( -
-

- {l10n.getString( - 'subscription-management-page-warning-message-no-payment-method', - 'Please add a payment method to avoid interruption to your subscriptions.' - )} -

- - - {l10n.getString( - 'subscription-management-button-add-payment-method', - 'Add' - )} - - -
- )} + {type === 'link' && ( +
+
+ {l10n.getString('link-logo-alt-text', +
+ + {l10n.getString( + 'subscription-management-button-change-payment-method', + 'Change' + )} + +
+ )} - {type === 'card' && walletType && ( -
- { - - {l10n.getString( - 'subscription-management-button-manage-payment-method', - 'Manage' - )} - -
- )} + {type === 'external_paypal' && brand && ( +
+
+ {l10n.getString('paypal-logo-alt-text', +
- {type === 'card' && brand && !walletType && ( -
-
-
- {getCardIcon(brand, - {last4 && ( - - {l10n.getString( - 'subscription-management-card-ending-in', - { last4 }, - `Card ending in ${last4}` - )} - - )} -
- {expirationDate && ( -

- {l10n.getString( - 'subscription-management-card-expires-date', - { expirationDate }, - `Expires ${expirationDate}` - )} -

- )} -
- - {l10n.getString( - 'subscription-management-button-manage-payment-method', - 'Manage' - )} - -
+ {isPaypalBillingAgreementError ? ( + - {l10n.getString( - - {l10n.getString( - 'subscription-management-button-manage-payment-method', - 'Manage' - )} - -
+ > + + {l10n.getString( + 'subscription-management-button-manage-payment-method', + 'Manage' + )} + + + ) : ( + + + {l10n.getString( + 'subscription-management-button-change-payment-method', + 'Change' + )} + + + )} + + )} +
- {type === 'external_paypal' && ( -
-
- {l10n.getString( - {isPaypalBillingAgreementError && ( -

- {l10n.getString( - 'subscription-management-error-paypal-billing-agreement', - 'There is an issue with your PayPal account. Please resolve the issue to maintain your active subscriptions.' - )} -

- )} -
-
- - - {l10n.getString( - 'subscription-management-button-manage-payment-method', - 'Manage' - )} - - -
-
- )} - - - )} - - - + + + )}
-

+

{l10n.getString( - 'subscription-management-active-subscriptions-heading', - 'Active subscriptions' + 'subscription-management-subscriptions-heading', + 'Subscriptions' )}

+ {subscriptions.length === 0 && googleIapSubscriptions.length === 0 && appleIapSubscriptions.length === 0 && ( -
-
-

- {l10n.getString( - 'subscription-management-you-have-no-active-subscriptions', - 'You have no active subscriptions' - )} -

-

- {l10n.getString( - 'subscription-management-new-subs-will-appear-here', - 'New subscriptions will appear here.' - )} -

-
+
+ {l10n.getString( + 'subscription-management-no-subscriptions', + 'You don’t have any subscriptions yet' + )}
)} - {(subscriptions.length > 0 || - appleIapSubscriptions.length > 0 || - googleIapSubscriptions.length > 0) && ( + + {subscriptions.length > 0 && ( <> - - {appleIapSubscriptions.length > 0 && ( - + {(appleIapSubscriptions.length > 0 || + googleIapSubscriptions.length > 0) && ( + )} + + )} - {googleIapSubscriptions.length > 0 && ( -
+
+ + + {l10n.getString( + 'subscription-management-button-manage-subscription', + 'Manage' + )} + + +
+ + {index !== googleIapSubscriptions.length - 1 && ( + + )} + + ); + })} + )}
- + ); } diff --git a/apps/payments/next/app/[locale]/subscriptions/payments/paypal/en.ftl b/apps/payments/next/app/[locale]/subscriptions/payments/paypal/en.ftl index f8314f0661f..d0437ebc415 100644 --- a/apps/payments/next/app/[locale]/subscriptions/payments/paypal/en.ftl +++ b/apps/payments/next/app/[locale]/subscriptions/payments/paypal/en.ftl @@ -1,3 +1,2 @@ -manage-payment-methods-heading = Manage payment methods paypal-payment-management-page-invalid-header = Invalid billing information paypal-payment-management-page-invalid-description = There seems to be an error with your { -brand-paypal } account. We need you to take the necessary steps to resolve this payment issue. diff --git a/apps/payments/next/app/[locale]/subscriptions/payments/paypal/page.tsx b/apps/payments/next/app/[locale]/subscriptions/payments/paypal/page.tsx index d357d55399c..563be0b6cd8 100644 --- a/apps/payments/next/app/[locale]/subscriptions/payments/paypal/page.tsx +++ b/apps/payments/next/app/[locale]/subscriptions/payments/paypal/page.tsx @@ -46,64 +46,48 @@ export default async function PaypalPaymentManagementPage({ return (
-

- {l10n.getString( - 'manage-payment-methods-heading', - 'Manage payment methods' - )} -

-
-
- + +

+ {l10n.getString( + 'paypal-payment-management-page-invalid-header', + 'Invalid billing information' + )} +

+ + {l10n.getString( + 'paypal-payment-management-page-invalid-description', + 'There seems to be an error with your PayPal account, we need you to take the necessary steps to resolve this payment issue.' + )} + +
+ -

- {l10n.getString( - 'paypal-payment-management-page-invalid-header', - 'Invalid billing information' - )} -

- - {l10n.getString( - 'paypal-payment-management-page-invalid-description', - 'There seems to be an error with your PayPal account, we need you to take the necessary steps to resolve this payment issue.' - )} + + {l10n.getString('next-pay-with-heading-paypal', 'Pay with PayPal')} -
- - - {l10n.getString( - 'next-pay-with-heading-paypal', - 'Pay with PayPal' - )} - - -
-
+
); diff --git a/apps/payments/next/app/[locale]/subscriptions/payments/stripe/page.tsx b/apps/payments/next/app/[locale]/subscriptions/payments/stripe/page.tsx index 0efe3972cb3..52d5e29beba 100644 --- a/apps/payments/next/app/[locale]/subscriptions/payments/stripe/page.tsx +++ b/apps/payments/next/app/[locale]/subscriptions/payments/stripe/page.tsx @@ -46,7 +46,7 @@ export default async function StripePaymentManagementPage({ return (
diff --git a/libs/payments/customer/src/lib/types.ts b/libs/payments/customer/src/lib/types.ts index 4575c1ba7ed..928558fb71c 100644 --- a/libs/payments/customer/src/lib/types.ts +++ b/libs/payments/customer/src/lib/types.ts @@ -16,7 +16,6 @@ export type InvoicePreview = { number: string | null; // customer-facing invoice identifier paypalTransactionId?: string; invoiceDate: number; - invoiceUrl?: string | null; nextInvoiceDate: number; amountDue: number; creditApplied: number | null; diff --git a/libs/payments/customer/src/lib/util/stripeInvoiceToFirstInvoicePreviewDTO.ts b/libs/payments/customer/src/lib/util/stripeInvoiceToFirstInvoicePreviewDTO.ts index b1c978e23e0..1aaff0e9384 100644 --- a/libs/payments/customer/src/lib/util/stripeInvoiceToFirstInvoicePreviewDTO.ts +++ b/libs/payments/customer/src/lib/util/stripeInvoiceToFirstInvoicePreviewDTO.ts @@ -70,7 +70,6 @@ export function stripeInvoiceToInvoicePreviewDTO( paypalTransactionId: invoice.metadata?.[STRIPE_INVOICE_METADATA.PaypalTransactionId], invoiceDate: invoice.created, - invoiceUrl: invoice.hosted_invoice_url, nextInvoiceDate: invoice.lines.data[0].period.end, amountDue: invoice.amount_due, creditApplied: invoice.ending_balance diff --git a/libs/payments/management/src/lib/factories/subscriptionContent.factory.ts b/libs/payments/management/src/lib/factories/subscriptionContent.factory.ts index c8d6b1ec1a8..e6d594d6340 100644 --- a/libs/payments/management/src/lib/factories/subscriptionContent.factory.ts +++ b/libs/payments/management/src/lib/factories/subscriptionContent.factory.ts @@ -28,7 +28,6 @@ export const AppleIapSubscriptionContentFactory = ( ...AppleIapPurchaseFactory(), productName: faker.string.sample(), supportUrl: faker.internet.url(), - webIcon: faker.internet.url(), ...override, }); @@ -57,7 +56,6 @@ export const GoogleIapSubscriptionContentFactory = ( ...GoogleIapPurchaseFactory(), productName: faker.string.sample(), supportUrl: faker.internet.url(), - webIcon: faker.internet.url(), ...override, }); diff --git a/libs/payments/management/src/lib/subscriptionManagement.service.spec.ts b/libs/payments/management/src/lib/subscriptionManagement.service.spec.ts index e4b92fe8fc4..2b1e53c0f91 100644 --- a/libs/payments/management/src/lib/subscriptionManagement.service.spec.ts +++ b/libs/payments/management/src/lib/subscriptionManagement.service.spec.ts @@ -338,9 +338,6 @@ describe('SubscriptionManagementService', () => { mockIapOfferingResult1.offering.defaultPurchase.purchaseDetails .productName, supportUrl: mockIapOfferingResult1.offering.commonContent.supportUrl, - webIcon: - mockIapOfferingResult1.offering.defaultPurchase.purchaseDetails - .webIcon, }; const mockGoogleIapSubscriptionContent = { ...mockGoogleIapPurchase, @@ -350,9 +347,6 @@ describe('SubscriptionManagementService', () => { mockIapOfferingResult2.offering.defaultPurchase.purchaseDetails .productName, supportUrl: mockIapOfferingResult2.offering.commonContent.supportUrl, - webIcon: - mockIapOfferingResult2.offering.defaultPurchase.purchaseDetails - .webIcon, }; jest @@ -525,9 +519,6 @@ describe('SubscriptionManagementService', () => { mockIapOfferingResult1.offering.defaultPurchase.purchaseDetails .productName, supportUrl: mockIapOfferingResult1.offering.commonContent.supportUrl, - webIcon: - mockIapOfferingResult1.offering.defaultPurchase.purchaseDetails - .webIcon, }; const mockGoogleIapSubscriptionContent = { ...mockGoogleIapPurchase, @@ -537,9 +528,6 @@ describe('SubscriptionManagementService', () => { mockIapOfferingResult2.offering.defaultPurchase.purchaseDetails .productName, supportUrl: mockIapOfferingResult2.offering.commonContent.supportUrl, - webIcon: - mockIapOfferingResult2.offering.defaultPurchase.purchaseDetails - .webIcon, }; jest @@ -840,6 +828,7 @@ describe('SubscriptionManagementService', () => { const mockAccountCustomer = ResultAccountCustomerFactory({ stripeCustomerId: mockStripeCustomer.id, }); + const mockPrice = StripePriceFactory(); const mockSubscription = StripeSubscriptionFactory(); const mockAppleIapPurchaseResult = AppleIapPurchaseResultFactory({ storeIds: [], @@ -885,6 +874,8 @@ describe('SubscriptionManagementService', () => { .mockRejectedValue( new SubscriptionContentMissingUpcomingInvoicePreviewError( mockSubscription.id, + mockPrice.id, + mockCurrency, mockStripeCustomer ) ); @@ -1729,12 +1720,10 @@ describe('SubscriptionManagementService', () => { .spyOn(paypalBillingAgreementManager, 'retrieveActiveId') .mockResolvedValue(faker.string.uuid()); - await expect( - subscriptionManagementService.createPaypalBillingAgreementId( - faker.string.uuid(), - faker.string.uuid() - ) - ).rejects.toBeInstanceOf(CreateBillingAgreementActiveBillingAgreement); + await expect(subscriptionManagementService.createPaypalBillingAgreementId( + faker.string.uuid(), + faker.string.uuid() + )).rejects.toBeInstanceOf(CreateBillingAgreementActiveBillingAgreement) expect(privateCustomerChanged).not.toHaveBeenCalled(); }); it('throws an error if the account customer has no stripe id', async () => { @@ -1751,14 +1740,10 @@ describe('SubscriptionManagementService', () => { .spyOn(accountCustomerManager, 'getAccountCustomerByUid') .mockResolvedValue(mockAccountCustomer); - await expect( - subscriptionManagementService.createPaypalBillingAgreementId( - faker.string.uuid(), - faker.string.uuid() - ) - ).rejects.toBeInstanceOf( - CreateBillingAgreementAccountCustomerMissingStripeId - ); + await expect(subscriptionManagementService.createPaypalBillingAgreementId( + faker.string.uuid(), + faker.string.uuid() + )).rejects.toBeInstanceOf(CreateBillingAgreementAccountCustomerMissingStripeId) expect(privateCustomerChanged).not.toHaveBeenCalled(); }); it('throws an error if no currency can be found', async () => { @@ -1785,12 +1770,10 @@ describe('SubscriptionManagementService', () => { .spyOn(subscriptionManagementService, 'getCurrencyForCustomer') .mockResolvedValue(undefined); - await expect( - subscriptionManagementService.createPaypalBillingAgreementId( - faker.string.uuid(), - faker.string.uuid() - ) - ).rejects.toBeInstanceOf(CreateBillingAgreementCurrencyNotFound); + await expect(subscriptionManagementService.createPaypalBillingAgreementId( + faker.string.uuid(), + faker.string.uuid() + )).rejects.toBeInstanceOf(CreateBillingAgreementCurrencyNotFound) expect(privateCustomerChanged).not.toHaveBeenCalled(); }); it('throws an error if the customer has no active paypal subscriptions', async () => { @@ -1816,16 +1799,14 @@ describe('SubscriptionManagementService', () => { jest .spyOn(subscriptionManagementService, 'getCurrencyForCustomer') .mockResolvedValue(faker.finance.currencyCode().toLowerCase()); - jest.spyOn(subscriptionManager, 'listForCustomer').mockResolvedValue([]); + jest + .spyOn(subscriptionManager, 'listForCustomer') + .mockResolvedValue([]); - await expect( - subscriptionManagementService.createPaypalBillingAgreementId( - faker.string.uuid(), - faker.string.uuid() - ) - ).rejects.toBeInstanceOf( - CreateBillingAgreementPaypalSubscriptionNotFound - ); + await expect(subscriptionManagementService.createPaypalBillingAgreementId( + faker.string.uuid(), + faker.string.uuid() + )).rejects.toBeInstanceOf(CreateBillingAgreementPaypalSubscriptionNotFound) expect(privateCustomerChanged).not.toHaveBeenCalled(); }); }); diff --git a/libs/payments/management/src/lib/subscriptionManagement.service.ts b/libs/payments/management/src/lib/subscriptionManagement.service.ts index 2f8f89e5fbf..ac8d0ebc30d 100644 --- a/libs/payments/management/src/lib/subscriptionManagement.service.ts +++ b/libs/payments/management/src/lib/subscriptionManagement.service.ts @@ -288,14 +288,11 @@ export class SubscriptionManagementService { ?.productName || cmsContent.offering.defaultPurchase.purchaseDetails.productName; const supportUrl = cmsContent.offering.commonContent.supportUrl; - const webIcon = - cmsContent.offering.defaultPurchase.purchaseDetails.webIcon; appleIapSubscriptions.push({ ...purchase, productName, supportUrl, - webIcon, }); } } @@ -308,14 +305,11 @@ export class SubscriptionManagementService { ?.productName || cmsContent.offering.defaultPurchase.purchaseDetails.productName; const supportUrl = cmsContent.offering.commonContent.supportUrl; - const webIcon = - cmsContent.offering.defaultPurchase.purchaseDetails.webIcon; googleIapSubscriptions.push({ ...purchase, productName, supportUrl, - webIcon, }); } } @@ -424,7 +418,6 @@ export class SubscriptionManagementService { amountDue, creditApplied, invoiceDate: currentInvoiceDate, - invoiceUrl: currentInvoiceUrl, promotionName, taxAmounts, totalAmount, @@ -468,7 +461,6 @@ export class SubscriptionManagementService { : totalAmount, currentPeriodEnd: subscription.current_period_end, currentInvoiceDate, - currentInvoiceUrl, nextInvoiceDate, nextInvoiceTax: nextInvoiceTotalExclusiveTax, nextInvoiceTotal: diff --git a/libs/payments/management/src/lib/types.ts b/libs/payments/management/src/lib/types.ts index 9683950046d..c8ecaa10b76 100644 --- a/libs/payments/management/src/lib/types.ts +++ b/libs/payments/management/src/lib/types.ts @@ -12,7 +12,6 @@ export interface AppleIapPurchase { export interface AppleIapSubscriptionContent extends AppleIapPurchase { productName: string; supportUrl: string; - webIcon: string; } export interface AppleIapPurchaseResult { @@ -31,7 +30,6 @@ export interface GoogleIapPurchase { export interface GoogleIapSubscriptionContent extends GoogleIapPurchase { productName: string; supportUrl: string; - webIcon: string; } export interface GoogleIapPurchaseResult { @@ -52,7 +50,6 @@ export interface SubscriptionContent { currentInvoiceDate: number; currentInvoiceTax: number; currentInvoiceTotal: number; - currentInvoiceUrl?: string | null; currentPeriodEnd: number; nextInvoiceDate: number; nextInvoiceTax?: number; diff --git a/libs/payments/ui/src/lib/actions/cancelSubscriptionAtPeriodEnd.ts b/libs/payments/ui/src/lib/actions/cancelSubscriptionAtPeriodEnd.ts index 3f823059d66..c11f3baff78 100644 --- a/libs/payments/ui/src/lib/actions/cancelSubscriptionAtPeriodEnd.ts +++ b/libs/payments/ui/src/lib/actions/cancelSubscriptionAtPeriodEnd.ts @@ -18,7 +18,7 @@ export const cancelSubscriptionAtPeriodEndAction = async ( subscriptionId, }); - revalidatePath('/[locale]/subscriptions/manage', 'page'); + revalidatePath('/[locale]/subscriptions/manage'); return result; }; diff --git a/libs/payments/ui/src/lib/actions/resubscribeSubscription.ts b/libs/payments/ui/src/lib/actions/resubscribeSubscription.ts index cba911ad036..b1530726765 100644 --- a/libs/payments/ui/src/lib/actions/resubscribeSubscription.ts +++ b/libs/payments/ui/src/lib/actions/resubscribeSubscription.ts @@ -16,7 +16,7 @@ export const resubscribeSubscriptionAction = async ( subscriptionId, }); - revalidatePath('/[locale]/subscriptions/manage', 'page'); + revalidatePath('/[locale]/subscriptions/manage'); return result; }; diff --git a/libs/payments/ui/src/lib/client/components/Banner/index.tsx b/libs/payments/ui/src/lib/client/components/Banner/index.tsx index e1aed70199f..35049332dca 100644 --- a/libs/payments/ui/src/lib/client/components/Banner/index.tsx +++ b/libs/payments/ui/src/lib/client/components/Banner/index.tsx @@ -11,7 +11,6 @@ import closeIcon from '@fxa/shared/assets/images/icon_close.min.svg'; import checkmarkIcon from '@fxa/shared/assets/images/icon_checkmark_circle_outline_current.min.svg'; import errorIcon from '@fxa/shared/assets/images/icon_error_circle_outline_current.min.svg'; import infoIcon from '@fxa/shared/assets/images/icon_information_circle_outline_current.min.svg'; -import warningIcon from '@fxa/shared/assets/images/alert-black.svg'; import { BannerVariant } from '../../../constants'; interface BannerProps extends React.HTMLProps { @@ -39,7 +38,7 @@ export function Banner({ bannerAriaLive = 'assertive'; bannerIcon = errorIcon; bannerRole = 'alert'; - bannerStyle = 'bg-red-50 my-4 rounded-md'; + bannerStyle = 'bg-red-100 my-4 rounded-md'; closeStyle = 'hover:bg-red-200 focus:bg-red-300'; break; case BannerVariant.SignedIn: @@ -57,13 +56,6 @@ export function Banner({ bannerStyle = 'bg-green-200 my-4 rounded-md '; closeStyle = 'hover:bg-green-300 focus:bg-green-500'; break; - case BannerVariant.Warning: - bannerAriaLive = 'polite'; - bannerIcon = warningIcon; - bannerRole = 'status'; - bannerStyle = 'bg-orange-50 my-4 rounded-md '; - closeStyle = 'hover:bg-orange-100 focus:bg-orange-200'; - break; case BannerVariant.Info: default: bannerAriaLive = 'polite'; diff --git a/libs/payments/ui/src/lib/client/components/BaseButton/index.tsx b/libs/payments/ui/src/lib/client/components/BaseButton/index.tsx index 28a7d2afb69..9512f1e1aac 100644 --- a/libs/payments/ui/src/lib/client/components/BaseButton/index.tsx +++ b/libs/payments/ui/src/lib/client/components/BaseButton/index.tsx @@ -8,8 +8,6 @@ export enum ButtonVariant { Primary, Secondary, ThirdParty, - SubscriptionManagementPrimary, - SubscriptionManagementSecondary, } interface BaseButtonProps @@ -36,14 +34,6 @@ export const BaseButton = forwardRef(function BaseButton( variantStyles = 'w-full bg-transparent border border-grey-300 font-normal text-black hover:border-black aria-disabled:hover:border-grey-300'; break; - case ButtonVariant.SubscriptionManagementPrimary: - variantStyles = - 'bg-blue-500 border border-blue-600 box-border font-header inline-block rounded text-center text-white w-full py-2 px-5 tablet:w-auto'; - break; - case ButtonVariant.SubscriptionManagementSecondary: - variantStyles = - 'bg-grey-10 border border-grey-200 box-border font-header inline-block rounded text-center w-full py-2 px-5 tablet:w-auto'; - break; } return ( diff --git a/libs/payments/ui/src/lib/client/components/PaymentMethodManagement/index.tsx b/libs/payments/ui/src/lib/client/components/PaymentMethodManagement/index.tsx index 432fafff9d1..1b971080e0a 100644 --- a/libs/payments/ui/src/lib/client/components/PaymentMethodManagement/index.tsx +++ b/libs/payments/ui/src/lib/client/components/PaymentMethodManagement/index.tsx @@ -184,166 +184,156 @@ export function PaymentMethodManagement({ }; return ( - <> -

- {l10n.getString( - 'manage-stripe-payments-title', - {}, - 'Manage payment methods' - )} -

-
- {!isReady && ( -
- -
- )} - + {!isReady && ( +
+ +
+ )} + {isReady && ( +

- {isInputNewCardDetails && ( - <> - -

- Enter your card information -

-
- - - - Name as it appears on your card - - - - { - setFullName(e.target.value); - setHasFullNameError(!e.target.value); - }} - aria-required - /> - - {hasFullNameError && ( - - -

- Please enter your full name -

-
-
- )} -
- + {l10n.getString( + 'manage-stripe-payments-title', + {}, + 'Manage payment methods' )} - - -
- + )} + + {isInputNewCardDetails && ( + <> + +

+ Enter your card information +

+
+ + + + Name as it appears on your card + + + + { + setFullName(e.target.value); + setHasFullNameError(!e.target.value); }} + aria-required /> -
-
- - {error && ( - -
{error}
-
- )} -
- {(isInputNewCardDetails || - (isNonCardSelected && !hasPaymentMethod)) && ( -
- - - {isLoading ? ( - - ) : ( - - Save payment method - - )} - - -
- )} - {isNonDefaultCardSelected && !isInputNewCardDetails && ( -
- - - {isLoading ? ( - - ) : ( - - Set as default payment method - - )} - - + + {hasFullNameError && ( + + +

+ Please enter your full name +

+
+
+ )} + + + )} + + +
+
+
+ + {error && ( + +
{error}
+
)} - -
- + + {(isInputNewCardDetails || (isNonCardSelected && !hasPaymentMethod)) && ( +
+ + + {isLoading ? ( + + ) : ( + + Save payment method + + )} + + +
+ )} + {isNonDefaultCardSelected && !isInputNewCardDetails && ( +
+ + + {isLoading ? ( + + ) : ( + + Set as default payment method + + )} + + +
+ )} + +

); } diff --git a/libs/payments/ui/src/lib/client/components/SubscriptionContent/en.ftl b/libs/payments/ui/src/lib/client/components/SubscriptionContent/en.ftl index f8ee5ce2975..8f91b10967e 100644 --- a/libs/payments/ui/src/lib/client/components/SubscriptionContent/en.ftl +++ b/libs/payments/ui/src/lib/client/components/SubscriptionContent/en.ftl @@ -9,25 +9,19 @@ ## $promotionName (String) - The name of the promotion. ## $taxDue (Number) - The tax added on, not included in amount. It will be formatted as currency. +subscription-content-current-billed-on-tax = { $invoiceTotal } + { $taxDue } tax billed on { $billedOnDate } +subscription-content-current-billed-on-no-tax = { $invoiceTotal } billed on { $billedOnDate } +subscription-content-credit-issued-to-your-account = { $creditApplied } credit issued to your account +subscription-content-coupon-applied = { $promotionName } applied subscription-content-coupon-will-be-applied = { $promotionName } discount will be applied +subscription-content-next-bill-excl-disc-with-tax = Next bill of { $nextInvoiceTotal } + { $taxDue } tax, excluding discounts, is due on { $nextBillDate } +subscription-content-next-bill-excl-no-tax = Next bill of { $nextInvoiceTotal }, excluding discounts, is due on { $nextBillDate } subscription-content-heading-cancel-subscription = Cancel Subscription subscription-content-no-longer-use-message = You will no longer be able to use { $productName } after { $currentPeriodEnd }, the last day of your billing cycle. subscription-content-cancel-access-message = Cancel my access and my saved information within { $productName } on { $currentPeriodEnd } -# • is acting as a separator between "Last bill" and the billing date. -subscription-content-last-bill = Last bill • { $billedOnDate } -subscription-content-last-bill-with-tax = { $invoiceTotal } + { $taxDue } tax -subscription-content-last-bill-no-tax = { $invoiceTotal } -subscription-content-view-invoice = View invoice -subscription-management-link-view-invoice-aria = View invoice for { $productName } -subscription-content-expires-on-expiry-date = Expires on { $date } -# • is acting as a separator between "Next bill" and the next billing date. -subscription-content-next-bill = Next bill • { $billedOnDate} -subscription-content-next-bill-with-tax-1 = { $nextInvoiceTotal } + { $taxDue } tax -subscription-content-next-bill-no-tax-1 = { $nextInvoiceTotal } subscription-content-button-stay-subscribed = Stay Subscribed .aria-label = Stay subscribed to { $productName } -subscription-content-button-cancel-subscription-1 = Cancel subscription subscription-content-button-cancel-subscription = Cancel Subscription .aria-label = Cancel your subscription to { $productName } diff --git a/libs/payments/ui/src/lib/client/components/SubscriptionContent/index.tsx b/libs/payments/ui/src/lib/client/components/SubscriptionContent/index.tsx index 27745e04b9e..36bf3ddce37 100644 --- a/libs/payments/ui/src/lib/client/components/SubscriptionContent/index.tsx +++ b/libs/payments/ui/src/lib/client/components/SubscriptionContent/index.tsx @@ -10,8 +10,6 @@ import { Localized, useLocalization } from '@fluent/react'; import * as Form from '@radix-ui/react-form'; import { ActionButton, ButtonVariant, SubmitButton } from '@fxa/payments/ui'; -import alertIcon from '@fxa/shared/assets/images/alert-yellow.svg'; -import newWindowIcon from '@fxa/shared/assets/images/new-window.svg'; import { getLocalizedCurrencyString, getLocalizedDateString, @@ -34,7 +32,6 @@ interface Subscription { currentInvoiceDate: number; currentInvoiceTax: number; currentInvoiceTotal: number; - currentInvoiceUrl?: string | null; currentPeriodEnd: number; nextInvoiceDate: number; nextInvoiceTax?: number; @@ -58,17 +55,18 @@ export const SubscriptionContent = ({ }: SubscriptionContentProps) => { const { canResubscribe, + creditApplied, currency, currentInvoiceDate, currentInvoiceTax, currentInvoiceTotal, - currentInvoiceUrl, currentPeriodEnd, nextInvoiceTax, nextInvoiceTotal, nextPromotionName, productName, webIcon, + promotionName, } = subscription; const [checkedState, setCheckedState] = useState(false); @@ -147,18 +145,26 @@ export const SubscriptionContent = ({ setOpenCancellationDialog(false)} onPointerDownOutside={() => setOpenCancellationDialog(false)} onInteractOutside={() => setOpenCancellationDialog(false)} > - + - We’re sorry to see you go + We’re sorry to see you go - - <> + +
- +
@@ -214,48 +218,55 @@ export const SubscriptionContent = ({ setOpenResubscribeSuccessDialog(false)} onPointerDownOutside={() => setOpenResubscribeSuccessDialog(false)} onInteractOutside={() => setOpenResubscribeSuccessDialog(false)} > - + {productName} - Thanks! You’re all set. +

Thanks! You’re all set.

- - setOpenResubscribeSuccessDialog(false)} - aria-label="Close dialog" + - Close - - + setOpenResubscribeSuccessDialog(false)} + aria-label="Close dialog" + > + Close + + +
@@ -266,18 +277,23 @@ export const SubscriptionContent = ({ setOpenResubscribeDialog(false)} onPointerDownOutside={() => setOpenResubscribeDialog(false)} onInteractOutside={() => setOpenResubscribeDialog(false)} > - + {productName} - Want to keep using {productName}? +

Want to keep using {productName}?

- +
{nextInvoiceTax ? ( setOpenResubscribeDialog(false)} - aria-label={l10n.getString( - 'dialog-close', - null, - 'Close dialog' - )} > - + {l10n.getString('dialog-close', @@ -471,137 +489,164 @@ export const SubscriptionContent = ({
) : ( - <> - {isClient && ( -
-
+
+ {canResubscribe ? ( + <> + {isClient && ( , + }} > -

Last bill • {currentInvoiceDateLongFallback}

+

+ You will lose access to {productName} on{' '} + {currentPeriodEndLongFallback}. +

-
-
- {currentInvoiceTax ? ( - -

- {getCurrencyFallbackText(currentInvoiceTotal)} +{' '} - {getCurrencyFallbackText(currentInvoiceTax)} tax -

-
- ) : ( - -

{getCurrencyFallbackText(currentInvoiceTotal)}

-
- )} - {currentInvoiceUrl && ( - - - View invoice + )} + + setOpenResubscribeDialog(true)} + aria-label={`Resubscribe to ${productName}`} + > + Resubscribe + + + + ) : ( + <> + {isClient && ( +
+ {currentInvoiceTax ? ( + , + span: , + }} + > +

+ + {getCurrencyFallbackText(currentInvoiceTotal)} +{' '} + {getCurrencyFallbackText(currentInvoiceTax)} tax{' '} + + + billed on {currentInvoiceDateLongFallback} + +

+ + ) : ( + , + span: , + }} + > +

+ + {getCurrencyFallbackText(currentInvoiceTotal)} + + + billed on {currentInvoiceDateLongFallback} + +

+
+ )} + {creditApplied && creditApplied > 0 ? ( + }} + > +

+ + {getCurrencyFallbackText(creditApplied)} + {' '} + credit issued to your account +

+
+ ) : null} + {promotionName && ( + +

+ {promotionName} applied +

- - - )} -
- {canResubscribe ? ( - <> - - {isClient && ( -
- - -

- Expires on {currentPeriodEndLongFallback} -

-
-
)} - - ) : ( - <> {nextInvoiceTotal !== undefined && nextInvoiceTotal >= 0 ? ( - <> - -
- -

Next bill • {currentPeriodEndLongFallback}

-
-
+
{nextInvoiceTax ? ( }} >

- {getCurrencyFallbackText(nextInvoiceTotal)} +{' '} - {getCurrencyFallbackText(nextInvoiceTax)} tax + Next bill of{' '} + + {getCurrencyFallbackText(nextInvoiceTotal)} +{' '} + {getCurrencyFallbackText(nextInvoiceTax)} tax + + , excluding discounts, is due{' '} + {currentPeriodEndLongFallback}

) : ( }} > -

{getCurrencyFallbackText(nextInvoiceTotal)}

+

+ Next bill of{' '} + + {getCurrencyFallbackText(nextInvoiceTotal)} + + , excluding discounts, is due{' '} + {currentPeriodEndLongFallback} +

)} - +
) : null} {nextPromotionName && ( )} - +
)} -
- )} - {canResubscribe ? ( -
- - setOpenResubscribeDialog(true)} - aria-label={`Stay subscribed to ${productName}`} - > - Stay subscribed - - -
- ) : ( -
{ setCheckedState(false); setShowCancel(true); }} aria-label={`Cancel your subscription for ${productName}`} > - Cancel subscription + Cancel -
+ )} - +
)} ); diff --git a/libs/payments/ui/src/lib/constants.ts b/libs/payments/ui/src/lib/constants.ts index 219beb61fee..090384b40a4 100644 --- a/libs/payments/ui/src/lib/constants.ts +++ b/libs/payments/ui/src/lib/constants.ts @@ -9,7 +9,6 @@ export enum BannerVariant { Info = 'info', SignedIn = 'signed_in', Success = 'success', - Warning = 'warning', } export const OFFERING_LINKS = { diff --git a/libs/shared/assets/src/images/alert-black.svg b/libs/shared/assets/src/images/alert-black.svg deleted file mode 100644 index 382e878247f..00000000000 --- a/libs/shared/assets/src/images/alert-black.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/libs/shared/assets/src/images/alert-yellow.svg b/libs/shared/assets/src/images/alert-yellow.svg deleted file mode 100644 index 85dfe81e760..00000000000 --- a/libs/shared/assets/src/images/alert-yellow.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/libs/shared/assets/src/images/arrow-down.svg b/libs/shared/assets/src/images/arrow-down.svg deleted file mode 100644 index f5f00dff62b..00000000000 --- a/libs/shared/assets/src/images/arrow-down.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/libs/shared/assets/src/images/new-window.svg b/libs/shared/assets/src/images/new-window.svg deleted file mode 100644 index c0830e99ab1..00000000000 --- a/libs/shared/assets/src/images/new-window.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/libs/shared/cms/src/__generated__/gql.ts b/libs/shared/cms/src/__generated__/gql.ts index 6323e11bf20..6e0d73a4634 100644 --- a/libs/shared/cms/src/__generated__/gql.ts +++ b/libs/shared/cms/src/__generated__/gql.ts @@ -17,7 +17,7 @@ type Documents = { "\n query CapabilityServiceByPlanIds($stripePlanIds: [String]!) {\n purchases(\n filters: {\n or: [\n { stripePlanChoices: { stripePlanChoice: { in: $stripePlanIds } } }\n {\n offering: {\n stripeLegacyPlans: { stripeLegacyPlan: { in: $stripePlanIds } }\n }\n }\n ]\n }\n pagination: { limit: 200 }\n ) {\n stripePlanChoices {\n stripePlanChoice\n }\n offering {\n stripeLegacyPlans(pagination: { limit: 200 }) {\n stripeLegacyPlan\n }\n capabilities {\n slug\n services {\n oauthClientId\n }\n }\n }\n }\n }\n": typeof types.CapabilityServiceByPlanIdsDocument, "\n query EligibilityContentByOffering($apiIdentifier: String!) {\n offerings(\n filters: { apiIdentifier: { eq: $apiIdentifier } }\n pagination: { limit: 200 }\n ) {\n apiIdentifier\n stripeProductId\n defaultPurchase {\n stripePlanChoices {\n stripePlanChoice\n }\n }\n subGroups {\n groupName\n offerings {\n apiIdentifier\n stripeProductId\n defaultPurchase {\n stripePlanChoices {\n stripePlanChoice\n }\n }\n }\n }\n }\n }\n": typeof types.EligibilityContentByOfferingDocument, "\n query EligibilityContentByPlanIds($stripePlanIds: [String]!) {\n purchases(\n filters: {\n or: [\n { stripePlanChoices: { stripePlanChoice: { in: $stripePlanIds } } }\n {\n offering: {\n stripeLegacyPlans: { stripeLegacyPlan: { in: $stripePlanIds } }\n }\n }\n ]\n }\n pagination: { limit: 200 }\n ) {\n stripePlanChoices {\n stripePlanChoice\n }\n offering {\n apiIdentifier\n stripeProductId\n stripeLegacyPlans(pagination: { limit: 200 }) {\n stripeLegacyPlan\n }\n countries\n subGroups {\n groupName\n offerings {\n apiIdentifier\n stripeProductId\n stripeLegacyPlans(pagination: { limit: 200 }) {\n stripeLegacyPlan\n }\n countries\n }\n }\n }\n }\n }\n": typeof types.EligibilityContentByPlanIdsDocument, - "\n query IapOfferingsByStoreIDs($locale: String!, $storeIDs: [String!]!) {\n iaps(filters: { storeID: { in: $storeIDs } }) {\n storeID\n interval\n offering {\n apiIdentifier\n commonContent {\n supportUrl\n localizations(filters: { locale: { eq: $locale } }) {\n supportUrl\n }\n }\n defaultPurchase {\n stripePlanChoices {\n stripePlanChoice\n }\n purchaseDetails {\n productName\n webIcon\n localizations(filters: { locale: { eq: $locale } }) {\n productName\n webIcon\n }\n }\n }\n subGroups {\n groupName\n offerings {\n apiIdentifier\n }\n }\n }\n }\n }\n": typeof types.IapOfferingsByStoreIDsDocument, + "\n query IapOfferingsByStoreIDs($locale: String!, $storeIDs: [String!]!) {\n iaps(filters: { storeID: { in: $storeIDs } }) {\n storeID\n interval\n offering {\n apiIdentifier\n commonContent {\n supportUrl\n localizations(filters: { locale: { eq: $locale } }) {\n supportUrl\n }\n }\n defaultPurchase {\n stripePlanChoices {\n stripePlanChoice\n }\n purchaseDetails {\n productName\n localizations(filters: { locale: { eq: $locale } }) {\n productName\n }\n }\n }\n subGroups {\n groupName\n offerings {\n apiIdentifier\n }\n }\n }\n }\n }\n": typeof types.IapOfferingsByStoreIDsDocument, "\n query Locales {\n i18NLocales(pagination: { limit: 100 }) {\n code\n }\n }\n": typeof types.LocalesDocument, "\n query Offering($id: ID!, $locale: String!) {\n offering(documentId: $id) {\n stripeProductId\n countries\n defaultPurchase {\n purchaseDetails {\n productName\n details\n subtitle\n webIcon\n localizations(filters: { locale: { eq: $locale } }) {\n productName\n details\n subtitle\n webIcon\n }\n }\n }\n }\n }\n": typeof types.OfferingDocument, "\n query pageContentByPriceIds($locale: String!, $stripePlanIds: [String]!) {\n purchases(\n filters: {\n or: [\n { stripePlanChoices: { stripePlanChoice: { in: $stripePlanIds } } }\n {\n offering: {\n stripeLegacyPlans: { stripeLegacyPlan: { in: $stripePlanIds } }\n }\n }\n ]\n }\n pagination: { limit: 50 }\n ) {\n offering {\n stripeLegacyPlans(pagination: { limit: 100 }) {\n stripeLegacyPlan\n }\n commonContent {\n supportUrl\n localizations(filters: { locale: { eq: $locale } }) {\n supportUrl\n }\n }\n }\n purchaseDetails {\n productName\n webIcon\n localizations(filters: { locale: { eq: $locale } }) {\n productName\n webIcon\n }\n }\n stripePlanChoices {\n stripePlanChoice\n }\n }\n }\n": typeof types.PageContentByPriceIdsDocument, @@ -30,7 +30,7 @@ const documents: Documents = { "\n query CapabilityServiceByPlanIds($stripePlanIds: [String]!) {\n purchases(\n filters: {\n or: [\n { stripePlanChoices: { stripePlanChoice: { in: $stripePlanIds } } }\n {\n offering: {\n stripeLegacyPlans: { stripeLegacyPlan: { in: $stripePlanIds } }\n }\n }\n ]\n }\n pagination: { limit: 200 }\n ) {\n stripePlanChoices {\n stripePlanChoice\n }\n offering {\n stripeLegacyPlans(pagination: { limit: 200 }) {\n stripeLegacyPlan\n }\n capabilities {\n slug\n services {\n oauthClientId\n }\n }\n }\n }\n }\n": types.CapabilityServiceByPlanIdsDocument, "\n query EligibilityContentByOffering($apiIdentifier: String!) {\n offerings(\n filters: { apiIdentifier: { eq: $apiIdentifier } }\n pagination: { limit: 200 }\n ) {\n apiIdentifier\n stripeProductId\n defaultPurchase {\n stripePlanChoices {\n stripePlanChoice\n }\n }\n subGroups {\n groupName\n offerings {\n apiIdentifier\n stripeProductId\n defaultPurchase {\n stripePlanChoices {\n stripePlanChoice\n }\n }\n }\n }\n }\n }\n": types.EligibilityContentByOfferingDocument, "\n query EligibilityContentByPlanIds($stripePlanIds: [String]!) {\n purchases(\n filters: {\n or: [\n { stripePlanChoices: { stripePlanChoice: { in: $stripePlanIds } } }\n {\n offering: {\n stripeLegacyPlans: { stripeLegacyPlan: { in: $stripePlanIds } }\n }\n }\n ]\n }\n pagination: { limit: 200 }\n ) {\n stripePlanChoices {\n stripePlanChoice\n }\n offering {\n apiIdentifier\n stripeProductId\n stripeLegacyPlans(pagination: { limit: 200 }) {\n stripeLegacyPlan\n }\n countries\n subGroups {\n groupName\n offerings {\n apiIdentifier\n stripeProductId\n stripeLegacyPlans(pagination: { limit: 200 }) {\n stripeLegacyPlan\n }\n countries\n }\n }\n }\n }\n }\n": types.EligibilityContentByPlanIdsDocument, - "\n query IapOfferingsByStoreIDs($locale: String!, $storeIDs: [String!]!) {\n iaps(filters: { storeID: { in: $storeIDs } }) {\n storeID\n interval\n offering {\n apiIdentifier\n commonContent {\n supportUrl\n localizations(filters: { locale: { eq: $locale } }) {\n supportUrl\n }\n }\n defaultPurchase {\n stripePlanChoices {\n stripePlanChoice\n }\n purchaseDetails {\n productName\n webIcon\n localizations(filters: { locale: { eq: $locale } }) {\n productName\n webIcon\n }\n }\n }\n subGroups {\n groupName\n offerings {\n apiIdentifier\n }\n }\n }\n }\n }\n": types.IapOfferingsByStoreIDsDocument, + "\n query IapOfferingsByStoreIDs($locale: String!, $storeIDs: [String!]!) {\n iaps(filters: { storeID: { in: $storeIDs } }) {\n storeID\n interval\n offering {\n apiIdentifier\n commonContent {\n supportUrl\n localizations(filters: { locale: { eq: $locale } }) {\n supportUrl\n }\n }\n defaultPurchase {\n stripePlanChoices {\n stripePlanChoice\n }\n purchaseDetails {\n productName\n localizations(filters: { locale: { eq: $locale } }) {\n productName\n }\n }\n }\n subGroups {\n groupName\n offerings {\n apiIdentifier\n }\n }\n }\n }\n }\n": types.IapOfferingsByStoreIDsDocument, "\n query Locales {\n i18NLocales(pagination: { limit: 100 }) {\n code\n }\n }\n": types.LocalesDocument, "\n query Offering($id: ID!, $locale: String!) {\n offering(documentId: $id) {\n stripeProductId\n countries\n defaultPurchase {\n purchaseDetails {\n productName\n details\n subtitle\n webIcon\n localizations(filters: { locale: { eq: $locale } }) {\n productName\n details\n subtitle\n webIcon\n }\n }\n }\n }\n }\n": types.OfferingDocument, "\n query pageContentByPriceIds($locale: String!, $stripePlanIds: [String]!) {\n purchases(\n filters: {\n or: [\n { stripePlanChoices: { stripePlanChoice: { in: $stripePlanIds } } }\n {\n offering: {\n stripeLegacyPlans: { stripeLegacyPlan: { in: $stripePlanIds } }\n }\n }\n ]\n }\n pagination: { limit: 50 }\n ) {\n offering {\n stripeLegacyPlans(pagination: { limit: 100 }) {\n stripeLegacyPlan\n }\n commonContent {\n supportUrl\n localizations(filters: { locale: { eq: $locale } }) {\n supportUrl\n }\n }\n }\n purchaseDetails {\n productName\n webIcon\n localizations(filters: { locale: { eq: $locale } }) {\n productName\n webIcon\n }\n }\n stripePlanChoices {\n stripePlanChoice\n }\n }\n }\n": types.PageContentByPriceIdsDocument, @@ -69,7 +69,7 @@ export function graphql(source: "\n query EligibilityContentByPlanIds($stripePl /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "\n query IapOfferingsByStoreIDs($locale: String!, $storeIDs: [String!]!) {\n iaps(filters: { storeID: { in: $storeIDs } }) {\n storeID\n interval\n offering {\n apiIdentifier\n commonContent {\n supportUrl\n localizations(filters: { locale: { eq: $locale } }) {\n supportUrl\n }\n }\n defaultPurchase {\n stripePlanChoices {\n stripePlanChoice\n }\n purchaseDetails {\n productName\n webIcon\n localizations(filters: { locale: { eq: $locale } }) {\n productName\n webIcon\n }\n }\n }\n subGroups {\n groupName\n offerings {\n apiIdentifier\n }\n }\n }\n }\n }\n"): (typeof documents)["\n query IapOfferingsByStoreIDs($locale: String!, $storeIDs: [String!]!) {\n iaps(filters: { storeID: { in: $storeIDs } }) {\n storeID\n interval\n offering {\n apiIdentifier\n commonContent {\n supportUrl\n localizations(filters: { locale: { eq: $locale } }) {\n supportUrl\n }\n }\n defaultPurchase {\n stripePlanChoices {\n stripePlanChoice\n }\n purchaseDetails {\n productName\n webIcon\n localizations(filters: { locale: { eq: $locale } }) {\n productName\n webIcon\n }\n }\n }\n subGroups {\n groupName\n offerings {\n apiIdentifier\n }\n }\n }\n }\n }\n"]; +export function graphql(source: "\n query IapOfferingsByStoreIDs($locale: String!, $storeIDs: [String!]!) {\n iaps(filters: { storeID: { in: $storeIDs } }) {\n storeID\n interval\n offering {\n apiIdentifier\n commonContent {\n supportUrl\n localizations(filters: { locale: { eq: $locale } }) {\n supportUrl\n }\n }\n defaultPurchase {\n stripePlanChoices {\n stripePlanChoice\n }\n purchaseDetails {\n productName\n localizations(filters: { locale: { eq: $locale } }) {\n productName\n }\n }\n }\n subGroups {\n groupName\n offerings {\n apiIdentifier\n }\n }\n }\n }\n }\n"): (typeof documents)["\n query IapOfferingsByStoreIDs($locale: String!, $storeIDs: [String!]!) {\n iaps(filters: { storeID: { in: $storeIDs } }) {\n storeID\n interval\n offering {\n apiIdentifier\n commonContent {\n supportUrl\n localizations(filters: { locale: { eq: $locale } }) {\n supportUrl\n }\n }\n defaultPurchase {\n stripePlanChoices {\n stripePlanChoice\n }\n purchaseDetails {\n productName\n localizations(filters: { locale: { eq: $locale } }) {\n productName\n }\n }\n }\n subGroups {\n groupName\n offerings {\n apiIdentifier\n }\n }\n }\n }\n }\n"]; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ diff --git a/libs/shared/cms/src/__generated__/graphql.ts b/libs/shared/cms/src/__generated__/graphql.ts index cf69bf27ea3..8bd3c2e8cd5 100644 --- a/libs/shared/cms/src/__generated__/graphql.ts +++ b/libs/shared/cms/src/__generated__/graphql.ts @@ -1792,7 +1792,7 @@ export type RelyingParty = { createdAt: Maybe; documentId: Scalars['ID']['output']; entrypoint: Maybe; - l10nId: Maybe; + l10nId: Scalars['String']['output']; name: Maybe; publishedAt: Maybe; shared: ComponentAccountsShared; @@ -2382,7 +2382,7 @@ export type IapOfferingsByStoreIDsQueryVariables = Exact<{ }>; -export type IapOfferingsByStoreIDsQuery = { __typename?: 'Query', iaps: Array<{ __typename?: 'Iap', storeID: string, interval: Enum_Iap_Interval, offering: { __typename?: 'Offering', apiIdentifier: string, commonContent: { __typename?: 'CommonContent', supportUrl: string, localizations: Array<{ __typename?: 'CommonContent', supportUrl: string } | null> } | null, defaultPurchase: { __typename?: 'Purchase', stripePlanChoices: Array<{ __typename?: 'ComponentStripeStripePlanChoices', stripePlanChoice: string } | null> | null, purchaseDetails: { __typename?: 'PurchaseDetail', productName: string, webIcon: string, localizations: Array<{ __typename?: 'PurchaseDetail', productName: string, webIcon: string } | null> } | null } | null, subGroups: Array<{ __typename?: 'Subgroup', groupName: string | null, offerings: Array<{ __typename?: 'Offering', apiIdentifier: string } | null> } | null> } | null } | null> }; +export type IapOfferingsByStoreIDsQuery = { __typename?: 'Query', iaps: Array<{ __typename?: 'Iap', storeID: string, interval: Enum_Iap_Interval, offering: { __typename?: 'Offering', apiIdentifier: string, commonContent: { __typename?: 'CommonContent', supportUrl: string, localizations: Array<{ __typename?: 'CommonContent', supportUrl: string } | null> } | null, defaultPurchase: { __typename?: 'Purchase', stripePlanChoices: Array<{ __typename?: 'ComponentStripeStripePlanChoices', stripePlanChoice: string } | null> | null, purchaseDetails: { __typename?: 'PurchaseDetail', productName: string, localizations: Array<{ __typename?: 'PurchaseDetail', productName: string } | null> } | null } | null, subGroups: Array<{ __typename?: 'Subgroup', groupName: string | null, offerings: Array<{ __typename?: 'Offering', apiIdentifier: string } | null> } | null> } | null } | null> }; export type LocalesQueryVariables = Exact<{ [key: string]: never; }>; @@ -2427,7 +2427,7 @@ export type RelyingPartiesQueryVariables = Exact<{ }>; -export type RelyingPartiesQuery = { __typename?: 'Query', relyingParties: Array<{ __typename?: 'RelyingParty', clientId: string | null, entrypoint: string | null, name: string | null, l10nId: string | null, shared: { __typename?: 'ComponentAccountsShared', buttonColor: string | null, logoUrl: string | null, logoAltText: string | null, emailFromName: string | null, emailLogoUrl: string | null, emailLogoAltText: string | null, emailLogoWidth: string | null, pageTitle: string | null, headerLogoUrl: string | null, headerLogoAltText: string | null, favicon: string | null, featureFlags: { __typename?: 'ComponentAccountsFeatureFlags', syncConfirmedPageHideCTA: boolean | null, syncHidePromoAfterLogin: boolean | null } | null, backgrounds: { __typename?: 'ComponentAccountsSharedBackgrounds', defaultLayout: string | null, header: string | null, splitLayout: string | null, splitLayoutAltText: string | null } | null }, EmailFirstPage: { __typename?: 'ComponentAccountsPageConfig', logoUrl: string | null, logoAltText: string | null, headline: string, description: string | null, primaryButtonText: string, pageTitle: string | null, splitLayout: boolean | null }, SignupSetPasswordPage: { __typename?: 'ComponentAccountsPageConfig', logoUrl: string | null, logoAltText: string | null, headline: string, description: string | null, primaryButtonText: string, pageTitle: string | null, splitLayout: boolean | null }, SignupConfirmCodePage: { __typename?: 'ComponentAccountsPageConfig', headline: string, description: string | null, primaryButtonText: string, pageTitle: string | null, splitLayout: boolean | null }, SignupConfirmedSyncPage: { __typename?: 'ComponentAccountsPageConfig', headline: string, description: string | null, primaryButtonText: string, pageTitle: string | null, splitLayout: boolean | null, primaryImage: { __typename?: 'ComponentAccountsImage', url: string, altText: string } | null } | null, SigninPage: { __typename?: 'ComponentAccountsPageConfig', headline: string, description: string | null, primaryButtonText: string, pageTitle: string | null, splitLayout: boolean | null }, SigninTokenCodePage: { __typename?: 'ComponentAccountsPageConfig', headline: string, description: string | null, primaryButtonText: string, pageTitle: string | null, splitLayout: boolean | null } | null, SigninUnblockCodePage: { __typename?: 'ComponentAccountsPageConfig', headline: string, description: string | null, primaryButtonText: string, pageTitle: string | null, splitLayout: boolean | null } | null, NewDeviceLoginEmail: { __typename?: 'ComponentAccountsEmailConfig', subject: string, headline: string, description: string } | null, VerifyLoginCodeEmail: { __typename?: 'ComponentAccountsEmailConfig', subject: string, headline: string, description: string } | null, VerifyShortCodeEmail: { __typename?: 'ComponentAccountsEmailConfig', subject: string, headline: string, description: string } | null } | null> }; +export type RelyingPartiesQuery = { __typename?: 'Query', relyingParties: Array<{ __typename?: 'RelyingParty', clientId: string | null, entrypoint: string | null, name: string | null, l10nId: string, shared: { __typename?: 'ComponentAccountsShared', buttonColor: string | null, logoUrl: string | null, logoAltText: string | null, emailFromName: string | null, emailLogoUrl: string | null, emailLogoAltText: string | null, emailLogoWidth: string | null, pageTitle: string | null, headerLogoUrl: string | null, headerLogoAltText: string | null, favicon: string | null, featureFlags: { __typename?: 'ComponentAccountsFeatureFlags', syncConfirmedPageHideCTA: boolean | null, syncHidePromoAfterLogin: boolean | null } | null, backgrounds: { __typename?: 'ComponentAccountsSharedBackgrounds', defaultLayout: string | null, header: string | null, splitLayout: string | null, splitLayoutAltText: string | null } | null }, EmailFirstPage: { __typename?: 'ComponentAccountsPageConfig', logoUrl: string | null, logoAltText: string | null, headline: string, description: string | null, primaryButtonText: string, pageTitle: string | null, splitLayout: boolean | null }, SignupSetPasswordPage: { __typename?: 'ComponentAccountsPageConfig', logoUrl: string | null, logoAltText: string | null, headline: string, description: string | null, primaryButtonText: string, pageTitle: string | null, splitLayout: boolean | null }, SignupConfirmCodePage: { __typename?: 'ComponentAccountsPageConfig', headline: string, description: string | null, primaryButtonText: string, pageTitle: string | null, splitLayout: boolean | null }, SignupConfirmedSyncPage: { __typename?: 'ComponentAccountsPageConfig', headline: string, description: string | null, primaryButtonText: string, pageTitle: string | null, splitLayout: boolean | null, primaryImage: { __typename?: 'ComponentAccountsImage', url: string, altText: string } | null } | null, SigninPage: { __typename?: 'ComponentAccountsPageConfig', headline: string, description: string | null, primaryButtonText: string, pageTitle: string | null, splitLayout: boolean | null }, SigninTokenCodePage: { __typename?: 'ComponentAccountsPageConfig', headline: string, description: string | null, primaryButtonText: string, pageTitle: string | null, splitLayout: boolean | null } | null, SigninUnblockCodePage: { __typename?: 'ComponentAccountsPageConfig', headline: string, description: string | null, primaryButtonText: string, pageTitle: string | null, splitLayout: boolean | null } | null, NewDeviceLoginEmail: { __typename?: 'ComponentAccountsEmailConfig', subject: string, headline: string, description: string } | null, VerifyLoginCodeEmail: { __typename?: 'ComponentAccountsEmailConfig', subject: string, headline: string, description: string } | null, VerifyShortCodeEmail: { __typename?: 'ComponentAccountsEmailConfig', subject: string, headline: string, description: string } | null } | null> }; export type ServicesWithCapabilitiesQueryVariables = Exact<{ [key: string]: never; }>; @@ -2438,7 +2438,7 @@ export type ServicesWithCapabilitiesQuery = { __typename?: 'Query', services: Ar export const CapabilityServiceByPlanIdsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"CapabilityServiceByPlanIds"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"stripePlanIds"}},"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"purchases"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"filters"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"or"},"value":{"kind":"ListValue","values":[{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"stripePlanChoices"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"stripePlanChoice"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"in"},"value":{"kind":"Variable","name":{"kind":"Name","value":"stripePlanIds"}}}]}}]}}]},{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"offering"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"stripeLegacyPlans"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"stripeLegacyPlan"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"in"},"value":{"kind":"Variable","name":{"kind":"Name","value":"stripePlanIds"}}}]}}]}}]}}]}]}}]}},{"kind":"Argument","name":{"kind":"Name","value":"pagination"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"200"}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"stripePlanChoices"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"stripePlanChoice"}}]}},{"kind":"Field","name":{"kind":"Name","value":"offering"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"stripeLegacyPlans"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"pagination"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"200"}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"stripeLegacyPlan"}}]}},{"kind":"Field","name":{"kind":"Name","value":"capabilities"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"slug"}},{"kind":"Field","name":{"kind":"Name","value":"services"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"oauthClientId"}}]}}]}}]}}]}}]}}]} as unknown as DocumentNode; export const EligibilityContentByOfferingDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"EligibilityContentByOffering"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"apiIdentifier"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"offerings"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"filters"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"apiIdentifier"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"eq"},"value":{"kind":"Variable","name":{"kind":"Name","value":"apiIdentifier"}}}]}}]}},{"kind":"Argument","name":{"kind":"Name","value":"pagination"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"200"}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"apiIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"stripeProductId"}},{"kind":"Field","name":{"kind":"Name","value":"defaultPurchase"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"stripePlanChoices"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"stripePlanChoice"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"subGroups"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"groupName"}},{"kind":"Field","name":{"kind":"Name","value":"offerings"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"apiIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"stripeProductId"}},{"kind":"Field","name":{"kind":"Name","value":"defaultPurchase"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"stripePlanChoices"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"stripePlanChoice"}}]}}]}}]}}]}}]}}]}}]} as unknown as DocumentNode; export const EligibilityContentByPlanIdsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"EligibilityContentByPlanIds"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"stripePlanIds"}},"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"purchases"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"filters"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"or"},"value":{"kind":"ListValue","values":[{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"stripePlanChoices"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"stripePlanChoice"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"in"},"value":{"kind":"Variable","name":{"kind":"Name","value":"stripePlanIds"}}}]}}]}}]},{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"offering"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"stripeLegacyPlans"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"stripeLegacyPlan"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"in"},"value":{"kind":"Variable","name":{"kind":"Name","value":"stripePlanIds"}}}]}}]}}]}}]}]}}]}},{"kind":"Argument","name":{"kind":"Name","value":"pagination"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"200"}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"stripePlanChoices"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"stripePlanChoice"}}]}},{"kind":"Field","name":{"kind":"Name","value":"offering"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"apiIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"stripeProductId"}},{"kind":"Field","name":{"kind":"Name","value":"stripeLegacyPlans"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"pagination"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"200"}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"stripeLegacyPlan"}}]}},{"kind":"Field","name":{"kind":"Name","value":"countries"}},{"kind":"Field","name":{"kind":"Name","value":"subGroups"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"groupName"}},{"kind":"Field","name":{"kind":"Name","value":"offerings"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"apiIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"stripeProductId"}},{"kind":"Field","name":{"kind":"Name","value":"stripeLegacyPlans"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"pagination"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"200"}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"stripeLegacyPlan"}}]}},{"kind":"Field","name":{"kind":"Name","value":"countries"}}]}}]}}]}}]}}]}}]} as unknown as DocumentNode; -export const IapOfferingsByStoreIDsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"IapOfferingsByStoreIDs"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"locale"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"storeIDs"}},"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"iaps"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"filters"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"storeID"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"in"},"value":{"kind":"Variable","name":{"kind":"Name","value":"storeIDs"}}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"storeID"}},{"kind":"Field","name":{"kind":"Name","value":"interval"}},{"kind":"Field","name":{"kind":"Name","value":"offering"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"apiIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"commonContent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"supportUrl"}},{"kind":"Field","name":{"kind":"Name","value":"localizations"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"filters"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"locale"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"eq"},"value":{"kind":"Variable","name":{"kind":"Name","value":"locale"}}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"supportUrl"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"defaultPurchase"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"stripePlanChoices"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"stripePlanChoice"}}]}},{"kind":"Field","name":{"kind":"Name","value":"purchaseDetails"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"productName"}},{"kind":"Field","name":{"kind":"Name","value":"webIcon"}},{"kind":"Field","name":{"kind":"Name","value":"localizations"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"filters"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"locale"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"eq"},"value":{"kind":"Variable","name":{"kind":"Name","value":"locale"}}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"productName"}},{"kind":"Field","name":{"kind":"Name","value":"webIcon"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"subGroups"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"groupName"}},{"kind":"Field","name":{"kind":"Name","value":"offerings"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"apiIdentifier"}}]}}]}}]}}]}}]}}]} as unknown as DocumentNode; +export const IapOfferingsByStoreIDsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"IapOfferingsByStoreIDs"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"locale"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"storeIDs"}},"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"iaps"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"filters"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"storeID"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"in"},"value":{"kind":"Variable","name":{"kind":"Name","value":"storeIDs"}}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"storeID"}},{"kind":"Field","name":{"kind":"Name","value":"interval"}},{"kind":"Field","name":{"kind":"Name","value":"offering"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"apiIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"commonContent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"supportUrl"}},{"kind":"Field","name":{"kind":"Name","value":"localizations"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"filters"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"locale"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"eq"},"value":{"kind":"Variable","name":{"kind":"Name","value":"locale"}}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"supportUrl"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"defaultPurchase"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"stripePlanChoices"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"stripePlanChoice"}}]}},{"kind":"Field","name":{"kind":"Name","value":"purchaseDetails"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"productName"}},{"kind":"Field","name":{"kind":"Name","value":"localizations"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"filters"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"locale"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"eq"},"value":{"kind":"Variable","name":{"kind":"Name","value":"locale"}}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"productName"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"subGroups"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"groupName"}},{"kind":"Field","name":{"kind":"Name","value":"offerings"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"apiIdentifier"}}]}}]}}]}}]}}]}}]} as unknown as DocumentNode; export const LocalesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"Locales"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"i18NLocales"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"pagination"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"100"}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}}]}}]}}]} as unknown as DocumentNode; export const OfferingDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"Offering"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"locale"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"offering"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"documentId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"stripeProductId"}},{"kind":"Field","name":{"kind":"Name","value":"countries"}},{"kind":"Field","name":{"kind":"Name","value":"defaultPurchase"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"purchaseDetails"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"productName"}},{"kind":"Field","name":{"kind":"Name","value":"details"}},{"kind":"Field","name":{"kind":"Name","value":"subtitle"}},{"kind":"Field","name":{"kind":"Name","value":"webIcon"}},{"kind":"Field","name":{"kind":"Name","value":"localizations"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"filters"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"locale"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"eq"},"value":{"kind":"Variable","name":{"kind":"Name","value":"locale"}}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"productName"}},{"kind":"Field","name":{"kind":"Name","value":"details"}},{"kind":"Field","name":{"kind":"Name","value":"subtitle"}},{"kind":"Field","name":{"kind":"Name","value":"webIcon"}}]}}]}}]}}]}}]}}]} as unknown as DocumentNode; export const PageContentByPriceIdsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"pageContentByPriceIds"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"locale"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"stripePlanIds"}},"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"purchases"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"filters"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"or"},"value":{"kind":"ListValue","values":[{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"stripePlanChoices"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"stripePlanChoice"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"in"},"value":{"kind":"Variable","name":{"kind":"Name","value":"stripePlanIds"}}}]}}]}}]},{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"offering"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"stripeLegacyPlans"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"stripeLegacyPlan"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"in"},"value":{"kind":"Variable","name":{"kind":"Name","value":"stripePlanIds"}}}]}}]}}]}}]}]}}]}},{"kind":"Argument","name":{"kind":"Name","value":"pagination"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"50"}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"offering"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"stripeLegacyPlans"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"pagination"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"100"}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"stripeLegacyPlan"}}]}},{"kind":"Field","name":{"kind":"Name","value":"commonContent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"supportUrl"}},{"kind":"Field","name":{"kind":"Name","value":"localizations"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"filters"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"locale"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"eq"},"value":{"kind":"Variable","name":{"kind":"Name","value":"locale"}}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"supportUrl"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"purchaseDetails"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"productName"}},{"kind":"Field","name":{"kind":"Name","value":"webIcon"}},{"kind":"Field","name":{"kind":"Name","value":"localizations"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"filters"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"locale"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"eq"},"value":{"kind":"Variable","name":{"kind":"Name","value":"locale"}}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"productName"}},{"kind":"Field","name":{"kind":"Name","value":"webIcon"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"stripePlanChoices"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"stripePlanChoice"}}]}}]}}]}}]} as unknown as DocumentNode; diff --git a/libs/shared/cms/src/lib/queries/iap-offerings-by-storeids/factories.ts b/libs/shared/cms/src/lib/queries/iap-offerings-by-storeids/factories.ts index 3436c7fe225..11c4366d8bd 100644 --- a/libs/shared/cms/src/lib/queries/iap-offerings-by-storeids/factories.ts +++ b/libs/shared/cms/src/lib/queries/iap-offerings-by-storeids/factories.ts @@ -63,10 +63,7 @@ export const IapOfferingDefaultPurchaseFactory = ( stripePlanChoices: [IapOfferingPurchaseStripePlanChoiceResultFactory()], purchaseDetails: { productName: faker.string.sample(), - webIcon: faker.internet.url(), - localizations: [ - { productName: faker.string.sample(), webIcon: faker.internet.url() }, - ], + localizations: [{ productName: faker.string.sample() }], }, ...override, }); diff --git a/libs/shared/cms/src/lib/queries/iap-offerings-by-storeids/query.ts b/libs/shared/cms/src/lib/queries/iap-offerings-by-storeids/query.ts index d49cd3032a2..dedc66cf80b 100644 --- a/libs/shared/cms/src/lib/queries/iap-offerings-by-storeids/query.ts +++ b/libs/shared/cms/src/lib/queries/iap-offerings-by-storeids/query.ts @@ -23,10 +23,8 @@ export const iapOfferingsByStoreIDsQuery = graphql(` } purchaseDetails { productName - webIcon localizations(filters: { locale: { eq: $locale } }) { productName - webIcon } } } diff --git a/libs/shared/cms/src/lib/queries/iap-offerings-by-storeids/types.ts b/libs/shared/cms/src/lib/queries/iap-offerings-by-storeids/types.ts index bb683a67873..e266b4e1a3c 100644 --- a/libs/shared/cms/src/lib/queries/iap-offerings-by-storeids/types.ts +++ b/libs/shared/cms/src/lib/queries/iap-offerings-by-storeids/types.ts @@ -15,7 +15,6 @@ export interface IapOfferingSubGroupResult { export interface IapOfferingDefaultPurchaseDetails { productName: string; - webIcon: string; } export interface IapOfferingPurchaseStripePlanChoiceResult {