diff --git a/packages/console/src/pages/TenantSettings/Subscription/CurrentPlan/MauLimitExceededNotification/index.tsx b/packages/console/src/pages/TenantSettings/Subscription/CurrentPlan/MauLimitExceededNotification/index.tsx
index 52c538e6e..3a5713270 100644
--- a/packages/console/src/pages/TenantSettings/Subscription/CurrentPlan/MauLimitExceededNotification/index.tsx
+++ b/packages/console/src/pages/TenantSettings/Subscription/CurrentPlan/MauLimitExceededNotification/index.tsx
@@ -1,4 +1,4 @@
-import { useContext } from 'react';
+import { useContext, useMemo } from 'react';
import { toastResponseError } from '@/cloud/hooks/use-cloud-api';
import { subscriptionPage } from '@/consts/pages';
@@ -6,8 +6,12 @@ import { ReservedPlanId } from '@/consts/subscriptions';
import { TenantsContext } from '@/contexts/TenantsProvider';
import DynamicT from '@/ds-components/DynamicT';
import InlineNotification from '@/ds-components/InlineNotification';
+import { useConfirmModal } from '@/hooks/use-confirm-modal';
import useSubscribe from '@/hooks/use-subscribe';
+import useSubscriptionPlans from '@/hooks/use-subscription-plans';
+import NotEligibleSwitchPlanModalContent from '@/pages/TenantSettings/components/NotEligibleSwitchPlanModalContent';
import { type SubscriptionPlan } from '@/types/subscriptions';
+import { isExceededQuotaLimitError } from '@/utils/subscription';
type Props = {
activeUsers: number;
@@ -18,12 +22,21 @@ type Props = {
function MauLimitExceededNotification({ activeUsers, currentPlan, className }: Props) {
const { currentTenantId } = useContext(TenantsContext);
const { subscribe } = useSubscribe();
+ const { show } = useConfirmModal();
+ const { data: subscriptionPlans } = useSubscriptionPlans();
+ const proPlan = useMemo(
+ () => subscriptionPlans?.find(({ id }) => id === ReservedPlanId.pro),
+ [subscriptionPlans]
+ );
+
const {
quota: { mauLimit },
} = currentPlan;
+
if (
mauLimit === null || // Unlimited
- activeUsers < mauLimit
+ activeUsers < mauLimit ||
+ !proPlan
) {
return null;
}
@@ -36,11 +49,21 @@ function MauLimitExceededNotification({ activeUsers, currentPlan, className }: P
onClick={async () => {
try {
await subscribe({
- planId: ReservedPlanId.pro,
+ planId: proPlan.id,
tenantId: currentTenantId,
callbackPage: subscriptionPage,
});
} catch (error: unknown) {
+ if (await isExceededQuotaLimitError(error)) {
+ await show({
+ ModalContent: () => ,
+ title: 'subscription.not_eligible_modal.upgrade_title',
+ confirmButtonText: 'general.got_it',
+ confirmButtonType: 'primary',
+ });
+ return;
+ }
+
void toastResponseError(error);
}
}}
diff --git a/packages/console/src/pages/TenantSettings/Subscription/SwitchPlanActionBar/index.tsx b/packages/console/src/pages/TenantSettings/Subscription/SwitchPlanActionBar/index.tsx
index 8a62ae6b1..bf5f58144 100644
--- a/packages/console/src/pages/TenantSettings/Subscription/SwitchPlanActionBar/index.tsx
+++ b/packages/console/src/pages/TenantSettings/Subscription/SwitchPlanActionBar/index.tsx
@@ -1,9 +1,8 @@
-import { ResponseError } from '@withtyped/client';
import { useContext } from 'react';
import { toast } from 'react-hot-toast';
import { Trans, useTranslation } from 'react-i18next';
-import { responseErrorBodyGuard, toastResponseError } from '@/cloud/hooks/use-cloud-api';
+import { toastResponseError } from '@/cloud/hooks/use-cloud-api';
import PlanName from '@/components/PlanName';
import { contactEmailLink } from '@/consts';
import { subscriptionPage } from '@/consts/pages';
@@ -13,11 +12,11 @@ import Button from '@/ds-components/Button';
import Spacer from '@/ds-components/Spacer';
import { useConfirmModal } from '@/hooks/use-confirm-modal';
import useSubscribe from '@/hooks/use-subscribe';
+import NotEligibleSwitchPlanModalContent from '@/pages/TenantSettings/components/NotEligibleSwitchPlanModalContent';
import { type SubscriptionPlan } from '@/types/subscriptions';
-import { isDowngradePlan } from '@/utils/subscription';
+import { isDowngradePlan, isExceededQuotaLimitError } from '@/utils/subscription';
import DowngradeConfirmModalContent from '../DowngradeConfirmModalContent';
-import NotEligibleDowngradeModalContent from '../NotEligibleDowngradeModalContent';
import * as styles from './index.module.scss';
@@ -37,64 +36,62 @@ function SwitchPlanActionBar({
const { subscribe, cancelSubscription } = useSubscribe();
const { show } = useConfirmModal();
- const handleDownGrade = async (targetPlan: SubscriptionPlan) => {
- const { id: planId, name } = targetPlan;
- try {
- if (planId === ReservedPlanId.free) {
- await cancelSubscription(currentTenantId);
- onSubscriptionUpdated();
- toast.success(
- }}>{t('downgrade_success')}
- );
- return;
- }
-
- await subscribe({
- tenantId: currentTenantId,
- planId,
- isDowngrade: true,
- callbackPage: subscriptionPage,
- });
- } catch (error: unknown) {
- /**
- * Note: this is a temporary solution to handle the case when the user tries to downgrade but the quota limit is exceeded.
- * Need a better solution to handle this case by sharing the error type between the console and cloud. - LOG-6608
- */
- if (error instanceof ResponseError) {
- const parsed = responseErrorBodyGuard.safeParse(await error.response.json());
- if (parsed.success && parsed.data.message.includes('Exceeded quota limit')) {
- await show({
- ModalContent: () => ,
- title: 'subscription.downgrade_modal.not_eligible',
- confirmButtonText: 'general.got_it',
- confirmButtonType: 'primary',
- });
- }
- return;
- }
-
- void toastResponseError(error);
- }
- };
-
- const onDowngradeClick = async (targetPlanId: string) => {
+ const handleSubscribe = async (targetPlanId: string, isDowngrade: boolean) => {
const currentPlan = subscriptionPlans.find(({ id }) => id === currentSubscriptionPlanId);
const targetPlan = subscriptionPlans.find(({ id }) => id === targetPlanId);
if (!currentPlan || !targetPlan) {
return;
}
- const [result] = await show({
- ModalContent: () => (
-
- ),
- title: 'subscription.downgrade_modal.title',
- confirmButtonText: 'subscription.downgrade_modal.downgrade',
- size: 'large',
- });
+ if (isDowngrade) {
+ const [result] = await show({
+ ModalContent: () => (
+
+ ),
+ title: 'subscription.downgrade_modal.title',
+ confirmButtonText: 'subscription.downgrade_modal.downgrade',
+ size: 'large',
+ });
- if (result) {
- await handleDownGrade(targetPlan);
+ if (!result) {
+ return;
+ }
+ }
+
+ try {
+ if (targetPlanId === ReservedPlanId.free) {
+ await cancelSubscription(currentTenantId);
+ onSubscriptionUpdated();
+ toast.success(
+ }}>
+ {t('downgrade_success')}
+
+ );
+ return;
+ }
+
+ await subscribe({
+ tenantId: currentTenantId,
+ planId: targetPlanId,
+ isDowngrade,
+ callbackPage: subscriptionPage,
+ });
+ } catch (error: unknown) {
+ if (await isExceededQuotaLimitError(error)) {
+ await show({
+ ModalContent: () => (
+
+ ),
+ title: isDowngrade
+ ? 'subscription.not_eligible_modal.downgrade_title'
+ : 'subscription.not_eligible_modal.upgrade_title',
+ confirmButtonText: 'general.got_it',
+ confirmButtonType: 'primary',
+ });
+ return;
+ }
+
+ void toastResponseError(error);
}
};
@@ -117,22 +114,8 @@ function SwitchPlanActionBar({
}
type={isDowngrade ? 'default' : 'primary'}
disabled={isCurrentPlan}
- onClick={async () => {
- if (isDowngrade) {
- await onDowngradeClick(planId);
-
- return;
- }
-
- try {
- await subscribe({
- tenantId: currentTenantId,
- planId,
- callbackPage: subscriptionPage,
- });
- } catch (error: unknown) {
- void toastResponseError(error);
- }
+ onClick={() => {
+ void handleSubscribe(planId, isDowngrade);
}}
/>
diff --git a/packages/console/src/pages/TenantSettings/Subscription/NotEligibleDowngradeModalContent/index.module.scss b/packages/console/src/pages/TenantSettings/components/NotEligibleSwitchPlanModalContent/index.module.scss
similarity index 100%
rename from packages/console/src/pages/TenantSettings/Subscription/NotEligibleDowngradeModalContent/index.module.scss
rename to packages/console/src/pages/TenantSettings/components/NotEligibleSwitchPlanModalContent/index.module.scss
diff --git a/packages/console/src/pages/TenantSettings/Subscription/NotEligibleDowngradeModalContent/index.tsx b/packages/console/src/pages/TenantSettings/components/NotEligibleSwitchPlanModalContent/index.tsx
similarity index 84%
rename from packages/console/src/pages/TenantSettings/Subscription/NotEligibleDowngradeModalContent/index.tsx
rename to packages/console/src/pages/TenantSettings/components/NotEligibleSwitchPlanModalContent/index.tsx
index f1b10d95f..4a0764c66 100644
--- a/packages/console/src/pages/TenantSettings/Subscription/NotEligibleDowngradeModalContent/index.tsx
+++ b/packages/console/src/pages/TenantSettings/components/NotEligibleSwitchPlanModalContent/index.tsx
@@ -20,10 +20,13 @@ const excludedQuotaKeys = new Set([
type Props = {
targetPlan: SubscriptionPlan;
+ isDowngrade?: boolean;
};
-function NotEligibleDowngradeModalContent({ targetPlan }: Props) {
- const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' });
+function NotEligibleSwitchPlanModalContent({ targetPlan, isDowngrade = false }: Props) {
+ const { t } = useTranslation(undefined, {
+ keyPrefix: 'admin_console.subscription.not_eligible_modal',
+ });
const { name, quota } = targetPlan;
@@ -40,7 +43,7 @@ function NotEligibleDowngradeModalContent({ targetPlan }: Props) {
name: ,
}}
>
- {t('subscription.downgrade_modal.not_eligible_description')}
+ {t(isDowngrade ? 'downgrade_description' : 'upgrade_description')}
@@ -68,7 +71,7 @@ function NotEligibleDowngradeModalContent({ targetPlan }: Props) {
),
}}
>
- {t('subscription.downgrade_modal.a_maximum_of')}
+ {t('a_maximum_of')}
) : (
,
}}
>
- {t('subscription.downgrade_modal.help_tip')}
+ {t(isDowngrade ? 'downgrade_help_tip' : 'upgrade_help_tip')}
);
}
-export default NotEligibleDowngradeModalContent;
+export default NotEligibleSwitchPlanModalContent;
diff --git a/packages/console/src/utils/subscription.ts b/packages/console/src/utils/subscription.ts
index 9e46a953e..7a21841e6 100644
--- a/packages/console/src/utils/subscription.ts
+++ b/packages/console/src/utils/subscription.ts
@@ -1,5 +1,7 @@
+import { ResponseError } from '@withtyped/client';
import dayjs from 'dayjs';
+import { responseErrorBodyGuard } from '@/cloud/hooks/use-cloud-api';
import { type SubscriptionPlanResponse } from '@/cloud/types/router';
import {
communitySupportEnabledMap,
@@ -52,3 +54,21 @@ export const getLatestUnpaidInvoice = (invoices: Invoice[]) =>
new Date(invoiceB.createdAt).getTime() - new Date(invoiceA.createdAt).getTime()
)
.find(({ status }) => status === 'uncollectible');
+
+/**
+ * Note: this is a temporary solution to handle the case when the user tries to downgrade but the quota limit is exceeded.
+ * Need a better solution to handle this case by sharing the error type between the console and cloud. - LOG-6608
+ */
+export const isExceededQuotaLimitError = async (error: unknown) => {
+ if (!(error instanceof ResponseError)) {
+ return false;
+ }
+
+ try {
+ const responseBody = await error.response.json();
+ const { message } = responseErrorBodyGuard.parse(responseBody);
+ return message.includes('Exceeded quota limit');
+ } catch {
+ return false;
+ }
+};
diff --git a/packages/phrases/src/locales/de/translation/admin-console/subscription/index.ts b/packages/phrases/src/locales/de/translation/admin-console/subscription/index.ts
index 867955dc3..96f9008c9 100644
--- a/packages/phrases/src/locales/de/translation/admin-console/subscription/index.ts
+++ b/packages/phrases/src/locales/de/translation/admin-console/subscription/index.ts
@@ -51,11 +51,17 @@ const subscription = {
before: 'Vorher: ',
after: 'Nachher: ',
downgrade: 'Herabstufen',
- not_eligible: 'Sie sind nicht berechtigt für eine Herabstufung',
- not_eligible_description:
- 'Stellen Sie sicher, dass Sie die folgenden Kriterien erfüllen, bevor Sie auf herabstufen.',
+ },
+ not_eligible_modal: {
+ downgrade_title: 'Downgrade nicht möglich',
+ downgrade_description:
+ 'Stellen Sie sicher, dass Sie die folgenden Kriterien erfüllen, bevor Sie auf downgraden.',
+ downgrade_help_tip: 'Hilfe beim Downgrade benötigt? Kontaktieren Sie uns.',
+ upgrade_title: 'Upgrade nicht möglich',
+ upgrade_description:
+ 'Sie verwenden derzeit mehr als das von zugelassene Kontingent. Stellen Sie sicher, dass Sie die folgenden Kriterien erfüllen, bevor Sie auf upgraden.',
+ upgrade_help_tip: 'Hilfe beim Upgrade benötigt? Kontaktieren Sie uns.',
a_maximum_of: 'Maximal ',
- help_tip: 'Benötigen Sie Hilfe beim Herabstufen? Kontaktieren Sie uns.',
},
upgrade_success: 'Erfolgreich auf hochgestuft',
downgrade_success: 'Erfolgreich auf herabgestuft',
diff --git a/packages/phrases/src/locales/en/translation/admin-console/subscription/index.ts b/packages/phrases/src/locales/en/translation/admin-console/subscription/index.ts
index 24a0f4bcd..715aa7775 100644
--- a/packages/phrases/src/locales/en/translation/admin-console/subscription/index.ts
+++ b/packages/phrases/src/locales/en/translation/admin-console/subscription/index.ts
@@ -51,11 +51,17 @@ const subscription = {
before: 'Before: ',
after: 'After: ',
downgrade: 'Downgrade',
- not_eligible: 'You are not eligible for downgrade',
- not_eligible_description:
+ },
+ not_eligible_modal: {
+ downgrade_title: 'You are not eligible for downgrade',
+ downgrade_description:
'Make sure you meet the following criteria before downgrading to the .',
+ downgrade_help_tip: 'Need help downgrading? Contact us.',
+ upgrade_title: 'You are not eligible for upgrade',
+ upgrade_description:
+ 'You’re currently using more than what the allows. Before you consider upgrading to the , make sure you meet the following criteria before upgrading.',
+ upgrade_help_tip: 'Need help upgrading? Contact us.',
a_maximum_of: 'A maximum of ',
- help_tip: 'Need help downgrading? Contact us.',
},
upgrade_success: 'Successfully upgraded to ',
downgrade_success: 'Successfully downgraded to ',
diff --git a/packages/phrases/src/locales/es/translation/admin-console/subscription/index.ts b/packages/phrases/src/locales/es/translation/admin-console/subscription/index.ts
index f37f91e4d..e47151728 100644
--- a/packages/phrases/src/locales/es/translation/admin-console/subscription/index.ts
+++ b/packages/phrases/src/locales/es/translation/admin-console/subscription/index.ts
@@ -53,11 +53,17 @@ const subscription = {
before: 'Antes: ',
after: 'Después: ',
downgrade: 'Degradar',
- not_eligible: 'No cumple con los requisitos para degradar',
- not_eligible_description:
- 'Asegúrese de cumplir con los siguientes criterios antes de degradar a .',
+ },
+ not_eligible_modal: {
+ downgrade_title: 'No es posible el cambio a un plan inferior',
+ downgrade_description:
+ 'Asegúrese de cumplir con los siguientes criterios antes de cambiar al plan .',
+ downgrade_help_tip: '¿Necesitas ayuda para cambiar de plan? Contáctenos.',
+ upgrade_title: 'No es posible el cambio a un plan superior',
+ upgrade_description:
+ 'Actualmente está utilizando más de lo permitido por el plan . Asegúrese de cumplir con los siguientes criterios antes de considerar el cambio al plan .',
+ upgrade_help_tip: '¿Necesitas ayuda para cambiar de plan? Contáctenos.',
a_maximum_of: 'Un máximo de ',
- help_tip: 'Necesitas ayuda para degradar? Contáctenos.',
},
upgrade_success: 'Actualizado con éxito a ',
downgrade_success: 'Degradado con éxito a ',
diff --git a/packages/phrases/src/locales/fr/translation/admin-console/subscription/index.ts b/packages/phrases/src/locales/fr/translation/admin-console/subscription/index.ts
index e8ecdb5b5..faf456343 100644
--- a/packages/phrases/src/locales/fr/translation/admin-console/subscription/index.ts
+++ b/packages/phrases/src/locales/fr/translation/admin-console/subscription/index.ts
@@ -45,9 +45,7 @@ const subscription = {
uncollectible: 'En souffrance',
},
},
-
quota_item,
-
downgrade_modal: {
title: 'Êtes-vous sûr de vouloir passer à un Plan Inférieur?',
description:
@@ -55,11 +53,17 @@ const subscription = {
before: 'Avant: ',
after: 'Après: ',
downgrade: 'Passer à un Plan Inférieur',
- not_eligible: "Vous n'êtes pas éligible pour passer à un Plan Inférieur",
- not_eligible_description:
- 'Veuillez vous assurer de répondre aux critères suivants avant de passer au . ',
+ },
+ not_eligible_modal: {
+ downgrade_title: "Vous n'êtes pas éligible pour une rétrogradation",
+ downgrade_description:
+ 'Assurez-vous de remplir les critères suivants avant de rétrograder vers le plan .',
+ downgrade_help_tip: "Besoin d'aide pour rétrograder ? Contactez-nous.",
+ upgrade_title: "Vous n'êtes pas éligible pour une mise à niveau",
+ upgrade_description:
+ 'Vous utilisez actuellement plus que ce que permet le plan . Avant de considérer une mise à niveau vers le plan , assurez-vous de remplir les critères suivants.',
+ upgrade_help_tip: "Besoin d'aide pour la mise à niveau ? Contactez-nous.",
a_maximum_of: 'Un maximum de ',
- help_tip: "Besoin d'aide pour rétrograder ? Contactez-nous.",
},
upgrade_success: 'Passé avec succès à ',
downgrade_success: 'Rétrogradé avec succès à ',
diff --git a/packages/phrases/src/locales/it/translation/admin-console/subscription/index.ts b/packages/phrases/src/locales/it/translation/admin-console/subscription/index.ts
index 00783e2a6..60282cc85 100644
--- a/packages/phrases/src/locales/it/translation/admin-console/subscription/index.ts
+++ b/packages/phrases/src/locales/it/translation/admin-console/subscription/index.ts
@@ -52,11 +52,17 @@ const subscription = {
before: 'Prima: ',
after: 'Dopo: ',
downgrade: 'Degrado',
- not_eligible: 'Non sei idoneo al degrado',
- not_eligible_description:
- 'Assicurati di soddisfare i seguenti criteri prima di degradare a .',
+ },
+ not_eligible_modal: {
+ downgrade_title: 'Non sei idoneo per il downgrade',
+ downgrade_description:
+ 'Assicurati di soddisfare i seguenti criteri prima di eseguire il downgrade al piano .',
+ downgrade_help_tip: 'Hai bisogno di aiuto per il downgrade? Contattaci.',
+ upgrade_title: "Non sei idoneo per l'upgrade",
+ upgrade_description:
+ "Attualmente stai utilizzando più di quanto consentito dal piano . Prima di considerare l'upgrade al piano , assicurati di soddisfare i seguenti criteri.",
+ upgrade_help_tip: "Hai bisogno di aiuto per l'upgrade? Contattaci.",
a_maximum_of: 'Un massimo di ',
- help_tip: 'Hai bisogno di aiuto per il degrado? Contattaci.',
},
upgrade_success: 'Aggiornamento effettuato con successo a ',
downgrade_success: 'Degrado effettuato con successo a ',
diff --git a/packages/phrases/src/locales/ja/translation/admin-console/subscription/index.ts b/packages/phrases/src/locales/ja/translation/admin-console/subscription/index.ts
index e29ffd94b..a8df1f70e 100644
--- a/packages/phrases/src/locales/ja/translation/admin-console/subscription/index.ts
+++ b/packages/phrases/src/locales/ja/translation/admin-console/subscription/index.ts
@@ -52,11 +52,17 @@ const subscription = {
before: '前: ',
after: '後: ',
downgrade: 'ダウングレード',
- not_eligible: 'ダウングレードできません',
- not_eligible_description:
- 'にダウングレードする前に、以下の基準を満たしていることを確認してください。',
- a_maximum_of: '最大 ',
- help_tip: 'ダウングレードのヘルプが必要ですか? お問い合わせ。',
+ },
+ not_eligible_modal: {
+ downgrade_title: 'ダウングレードの対象外です',
+ downgrade_description:
+ 'へダウングレードする前に、以下の条件を満たしていることを確認してください。',
+ downgrade_help_tip: 'ダウングレードのヘルプが必要ですか?お問い合わせください。',
+ upgrade_title: 'アップグレードの対象外です',
+ upgrade_description:
+ 'が許可する量を超えて使用しています。 へのアップグレードを検討する前に、以下の条件を満たしていることを確認してください。',
+ upgrade_help_tip: 'アップグレードのヘルプが必要ですか?お問い合わせください。',
+ a_maximum_of: ' の最大数',
},
upgrade_success: '正常ににアップグレードされました',
downgrade_success: '正常ににダウングレードされました',
diff --git a/packages/phrases/src/locales/ko/translation/admin-console/subscription/index.ts b/packages/phrases/src/locales/ko/translation/admin-console/subscription/index.ts
index 993b59656..fe202cf6d 100644
--- a/packages/phrases/src/locales/ko/translation/admin-console/subscription/index.ts
+++ b/packages/phrases/src/locales/ko/translation/admin-console/subscription/index.ts
@@ -51,11 +51,16 @@ const subscription = {
before: '이전: ',
after: '이후: ',
downgrade: '다운그레이드',
- not_eligible: '다운그레이드할 수 없습니다.',
- not_eligible_description:
- '으로 다운그레이드하기 전에 다음 기준을 충족하는지 확인하세요.',
- a_maximum_of: ' 최대',
- help_tip: '다운그레이드 도움이 필요하신가요? 문의하기.',
+ },
+ not_eligible_modal: {
+ downgrade_title: '다운그레이드할 수 없습니다',
+ downgrade_description: '로 다운그레이드하기 전에 다음 기준을 충족하는지 확인하세요.',
+ downgrade_help_tip: '다운그레이드 도움이 필요하세요? 문의하세요.',
+ upgrade_title: '업그레이드할 수 없습니다',
+ upgrade_description:
+ '이(가) 허용하는 양을 현재 사용 중입니다. 로 업그레이드를 고려하기 전에 다음 기준을 충족하는지 확인하세요.',
+ upgrade_help_tip: '업그레이드 도움이 필요하세요? 문의하세요.',
+ a_maximum_of: ' 최대 한도',
},
upgrade_success: '성공적으로 으로 업그레이드되었습니다.',
downgrade_success: '성공적으로 으로 다운그레이드되었습니다.',
diff --git a/packages/phrases/src/locales/pl-pl/translation/admin-console/subscription/index.ts b/packages/phrases/src/locales/pl-pl/translation/admin-console/subscription/index.ts
index b1dff1d4c..a634ee385 100644
--- a/packages/phrases/src/locales/pl-pl/translation/admin-console/subscription/index.ts
+++ b/packages/phrases/src/locales/pl-pl/translation/admin-console/subscription/index.ts
@@ -52,11 +52,17 @@ const subscription = {
before: 'Przed: ',
after: 'Po: ',
downgrade: 'Zdegradować',
- not_eligible: 'Nie spełniasz wymogów do zdegradowania',
- not_eligible_description:
- 'Upewnij się, że spełniasz następujące kryteria przed dokonaniem degradacji do . ',
+ },
+ not_eligible_modal: {
+ downgrade_title: 'Nie spełniasz warunków do zmniejszenia',
+ downgrade_description:
+ 'Upewnij się, że spełniasz następujące kryteria przed zmniejszeniem do .',
+ downgrade_help_tip: 'Potrzebna pomoc przy zmniejszaniu? Skontaktuj się z nami.',
+ upgrade_title: 'Nie spełniasz warunków do zwiększenia',
+ upgrade_description:
+ 'Obecnie używasz więcej niż to, co pozwala . Przed rozważeniem zwiększenia do , upewnij się, że spełniasz następujące kryteria.',
+ upgrade_help_tip: 'Potrzebna pomoc przy zwiększaniu? Skontaktuj się z nami.',
a_maximum_of: 'Maksymalnie ',
- help_tip: 'Potrzebujesz pomocy przy zdegradowaniu? Skontaktuj się z nami.',
},
upgrade_success: 'Pomyślnie uaktualniono do ',
downgrade_success: 'Pomyślnie zdegradowano do ',
diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/subscription/index.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/subscription/index.ts
index 46aa76538..909189872 100644
--- a/packages/phrases/src/locales/pt-br/translation/admin-console/subscription/index.ts
+++ b/packages/phrases/src/locales/pt-br/translation/admin-console/subscription/index.ts
@@ -43,9 +43,7 @@ const subscription = {
uncollectible: 'Vencida',
},
},
-
quota_item,
-
downgrade_modal: {
title: 'Tem certeza de que deseja fazer downgrade?',
description:
@@ -53,11 +51,17 @@ const subscription = {
before: 'Antes: ',
after: 'Depois: ',
downgrade: 'Downgrade',
- not_eligible: 'Não é elegível para downgrade',
- not_eligible_description:
- 'Certifique-se de atender aos seguintes critérios antes de fazer downgrade para o .',
+ },
+ not_eligible_modal: {
+ downgrade_title: 'Você não é elegível para fazer downgrade',
+ downgrade_description:
+ 'Certifique-se de atender aos seguintes critérios antes de fazer o downgrade para o plano .',
+ downgrade_help_tip: 'Precisa de ajuda com o downgrade? Contate-nos.',
+ upgrade_title: 'Você não é elegível para fazer upgrade',
+ upgrade_description:
+ 'Atualmente, você está usando mais do que o permitido pelo plano . Antes de considerar o upgrade para o plano , certifique-se de atender aos seguintes critérios.',
+ upgrade_help_tip: 'Precisa de ajuda com o upgrade? Contate-nos.',
a_maximum_of: 'Um máximo de ',
- help_tip: 'Precisa de ajuda para fazer o downgrade? Contate-nos.',
},
upgrade_success: 'Atualizado com sucesso para ',
downgrade_success: 'Downgrade realizado com sucesso para ',
diff --git a/packages/phrases/src/locales/pt-pt/translation/admin-console/subscription/index.ts b/packages/phrases/src/locales/pt-pt/translation/admin-console/subscription/index.ts
index b244f1976..e308aa415 100644
--- a/packages/phrases/src/locales/pt-pt/translation/admin-console/subscription/index.ts
+++ b/packages/phrases/src/locales/pt-pt/translation/admin-console/subscription/index.ts
@@ -52,11 +52,17 @@ const subscription = {
before: 'Antes: ',
after: 'Depois: ',
downgrade: 'Downgrade',
- not_eligible: 'Você não é elegível para fazer o downgrade',
- not_eligible_description:
- 'Verifique se você atende aos seguintes critérios antes de fazer o downgrade para o .',
- a_maximum_of: 'No máximo ',
- help_tip: 'Precisa de ajuda para fazer o downgrade? Entre em contato conosco.',
+ },
+ not_eligible_modal: {
+ downgrade_title: 'Não é possível fazer downgrade',
+ downgrade_description:
+ 'Certifique-se de cumprir os seguintes critérios antes de efetuar o downgrade para o plano .',
+ downgrade_help_tip: 'Precisa de ajuda com o downgrade? Contacte-nos.',
+ upgrade_title: 'Não é possível fazer upgrade',
+ upgrade_description:
+ 'Atualmente está a utilizar mais do que o permitido pelo plano . Antes de considerar o upgrade para o plano , certifique-se de cumprir os seguintes critérios.',
+ upgrade_help_tip: 'Precisa de ajuda com o upgrade? Contacte-nos.',
+ a_maximum_of: 'Um máximo de ',
},
upgrade_success: 'Atualizou com sucesso para ',
downgrade_success: 'Downgrade concluído com sucesso para ',
diff --git a/packages/phrases/src/locales/ru/translation/admin-console/subscription/index.ts b/packages/phrases/src/locales/ru/translation/admin-console/subscription/index.ts
index e75b2a5df..7d52eb48a 100644
--- a/packages/phrases/src/locales/ru/translation/admin-console/subscription/index.ts
+++ b/packages/phrases/src/locales/ru/translation/admin-console/subscription/index.ts
@@ -51,11 +51,17 @@ const subscription = {
before: 'Позднее: ',
after: 'После: ',
downgrade: 'Понизить уровень',
- not_eligible: 'Вы не имеете права на понижение уровня',
- not_eligible_description:
- 'Убедитесь, что вы соответствуете следующим критериям, прежде чем понизить до .',
+ },
+ not_eligible_modal: {
+ downgrade_title: 'Вы не можете понизить уровень тарифа',
+ downgrade_description:
+ 'Перед понижением до тарифа , убедитесь, что соответствуете следующим критериям.',
+ downgrade_help_tip: 'Нужна помощь в понижении? Свяжитесь с нами.',
+ upgrade_title: 'Вы не можете повысить уровень тарифа',
+ upgrade_description:
+ 'В настоящее время вы используете более того, что позволяет тариф . Перед рассмотрением перехода на тариф , убедитесь, что соответствуете следующим критериям.',
+ upgrade_help_tip: 'Нужна помощь в повышении? Свяжитесь с нами.',
a_maximum_of: 'Максимум ',
- help_tip: 'Нужна помощь в понижении уровня? Свяжитесь с нами.',
},
upgrade_success: 'Успешно повышен до ',
downgrade_success: 'Успешно понижен до ',
diff --git a/packages/phrases/src/locales/tr-tr/translation/admin-console/subscription/index.ts b/packages/phrases/src/locales/tr-tr/translation/admin-console/subscription/index.ts
index d22b271a8..2abf72b7e 100644
--- a/packages/phrases/src/locales/tr-tr/translation/admin-console/subscription/index.ts
+++ b/packages/phrases/src/locales/tr-tr/translation/admin-console/subscription/index.ts
@@ -52,11 +52,19 @@ const subscription = {
before: 'Önce: ',
after: 'Sonra: ',
downgrade: 'Düşür',
- not_eligible: 'Düşürme için uygun değilsiniz',
- not_eligible_description:
- "Aşağıdaki kriterleri karşıladığınızdan emin olun 'ye düşürmeden önce.",
- a_maximum_of: 'En fazla ',
- help_tip: 'Düşürme için yardıma mı ihtiyacınız var? Bizimle iletişime geçin.',
+ },
+ not_eligible_modal: {
+ downgrade_title: 'Düşürme için uygun değilsiniz',
+ downgrade_description:
+ ' planına düşürmeden önce aşağıdaki kriterleri sağladığınızdan emin olun.',
+ downgrade_help_tip:
+ 'Düşürme konusunda yardıma mı ihtiyacınız var? Bizimle iletişime geçin.',
+ upgrade_title: 'Yükseltme için uygun değilsiniz',
+ upgrade_description:
+ 'Şu anda izin verilen miktarın üzerinde kullanıyorsunuz. planına yükseltmeyi düşünmeden önce aşağıdaki kriterleri sağladığınızdan emin olun.',
+ upgrade_help_tip:
+ 'Yükseltme konusunda yardıma mı ihtiyacınız var? Bizimle iletişime geçin.',
+ a_maximum_of: ' için maksimum',
},
upgrade_success: 'Successfully upgraded to ',
downgrade_success: 'Successfully downgraded to ',
diff --git a/packages/phrases/src/locales/zh-cn/translation/admin-console/subscription/index.ts b/packages/phrases/src/locales/zh-cn/translation/admin-console/subscription/index.ts
index 44b77e545..1b4789dfc 100644
--- a/packages/phrases/src/locales/zh-cn/translation/admin-console/subscription/index.ts
+++ b/packages/phrases/src/locales/zh-cn/translation/admin-console/subscription/index.ts
@@ -50,10 +50,16 @@ const subscription = {
before: '之前:',
after: '之后:',
downgrade: '降级',
- not_eligible: '您不符合降级条件',
- not_eligible_description: '在降级到 之前,请确保满足以下条件。',
- a_maximum_of: '最多 个',
- help_tip: '需要帮助降级?联系我们。',
+ },
+ not_eligible_modal: {
+ downgrade_title: '您不符合降级条件',
+ downgrade_description: '降级到前,请确保满足以下条件。',
+ downgrade_help_tip: '需要降级帮助?联系我们。',
+ upgrade_title: '您不符合升级条件',
+ upgrade_description:
+ '您目前使用的内容超过了允许的范围。在考虑升级到之前,请确保满足以下条件。',
+ upgrade_help_tip: '需要升级帮助?联系我们。',
+ a_maximum_of: '最多 ',
},
upgrade_success: '成功升级到 ',
downgrade_success: '成功降级到 ',
diff --git a/packages/phrases/src/locales/zh-hk/translation/admin-console/subscription/index.ts b/packages/phrases/src/locales/zh-hk/translation/admin-console/subscription/index.ts
index bad6b2c32..c3892f95e 100644
--- a/packages/phrases/src/locales/zh-hk/translation/admin-console/subscription/index.ts
+++ b/packages/phrases/src/locales/zh-hk/translation/admin-console/subscription/index.ts
@@ -49,10 +49,16 @@ const subscription = {
before: '之前:',
after: '之後:',
downgrade: '降級',
- not_eligible: '您不符合降級的資格',
- not_eligible_description: '在降級到之前,請確保符合以下標準。',
- a_maximum_of: '最多: ',
- help_tip: '需要協助降級嗎?聯繫我們。',
+ },
+ not_eligible_modal: {
+ downgrade_title: '您不符合降級條件',
+ downgrade_description: '降級到前,請確保符合以下條件。',
+ downgrade_help_tip: '需要降級幫助?聯絡我們。',
+ upgrade_title: '您不符合升級條件',
+ upgrade_description:
+ '您目前使用的內容超過了允許的範圍。在考慮升級到之前,請確保符合以下條件。',
+ upgrade_help_tip: '需要升級幫助?聯絡我們。',
+ a_maximum_of: '最多 ',
},
upgrade_success: '升級成功至',
downgrade_success: '成功降級至',
diff --git a/packages/phrases/src/locales/zh-tw/translation/admin-console/subscription/index.ts b/packages/phrases/src/locales/zh-tw/translation/admin-console/subscription/index.ts
index 3e2f96652..794c501af 100644
--- a/packages/phrases/src/locales/zh-tw/translation/admin-console/subscription/index.ts
+++ b/packages/phrases/src/locales/zh-tw/translation/admin-console/subscription/index.ts
@@ -49,10 +49,16 @@ const subscription = {
before: '在此之前:',
after: '在此之後:',
downgrade: '降級',
- not_eligible: '您不符合降級資格',
- not_eligible_description: '在降級到 之前,請確保符合以下條件。',
- a_maximum_of: '最大數量 ',
- help_tip: '需要協助降級嗎?聯繫我們。',
+ },
+ not_eligible_modal: {
+ downgrade_title: '您不符合降級條件',
+ downgrade_description: '降級到前,請確保符合以下條件。',
+ downgrade_help_tip: '需要降級幫助?聯絡我們。',
+ upgrade_title: '您不符合升級條件',
+ upgrade_description:
+ '您目前使用的內容超過了允許的範圍。在考慮升級到之前,請確保符合以下條件。',
+ upgrade_help_tip: '需要升級幫助?聯絡我們。',
+ a_maximum_of: '最多 ',
},
upgrade_success: '已成功升級到 ',
downgrade_success: '已成功降級到 ',