diff --git a/packages/twenty-front/src/modules/information-banner/components/billing/InformationBannerBillingSubscriptionPaused.tsx b/packages/twenty-front/src/modules/information-banner/components/billing/InformationBannerBillingSubscriptionPaused.tsx index 2bb5460d6..0b5622f02 100644 --- a/packages/twenty-front/src/modules/information-banner/components/billing/InformationBannerBillingSubscriptionPaused.tsx +++ b/packages/twenty-front/src/modules/information-banner/components/billing/InformationBannerBillingSubscriptionPaused.tsx @@ -1,9 +1,14 @@ import { useRedirect } from '@/domain-manager/hooks/useRedirect'; import { InformationBanner } from '@/information-banner/components/InformationBanner'; +import { useSettingsPermissionMap } from '@/settings/roles/hooks/useSettingsPermissionMap'; import { SettingsPath } from '@/types/SettingsPath'; -import { useBillingPortalSessionQuery } from '~/generated/graphql'; -import { getSettingsPath } from '~/utils/navigation/getSettingsPath'; +import { t } from '@lingui/core/macro'; import { isDefined } from 'twenty-shared/utils'; +import { + SettingPermissionType, + useBillingPortalSessionQuery, +} from '~/generated/graphql'; +import { getSettingsPath } from '~/utils/navigation/getSettingsPath'; export const InformationBannerBillingSubscriptionPaused = () => { const { redirect } = useRedirect(); @@ -14,6 +19,10 @@ export const InformationBannerBillingSubscriptionPaused = () => { }, }); + const { + [SettingPermissionType.WORKSPACE]: hasPermissionToUpdateBillingDetails, + } = useSettingsPermissionMap(); + const openBillingPortal = () => { if (isDefined(data) && isDefined(data.billingPortalSession.url)) { redirect(data.billingPortalSession.url); @@ -23,8 +32,12 @@ export const InformationBannerBillingSubscriptionPaused = () => { return ( openBillingPortal()} isButtonDisabled={loading || !isDefined(data)} /> diff --git a/packages/twenty-front/src/modules/information-banner/components/billing/InformationBannerEndTrialPeriod.tsx b/packages/twenty-front/src/modules/information-banner/components/billing/InformationBannerEndTrialPeriod.tsx index 48755263a..70533cedb 100644 --- a/packages/twenty-front/src/modules/information-banner/components/billing/InformationBannerEndTrialPeriod.tsx +++ b/packages/twenty-front/src/modules/information-banner/components/billing/InformationBannerEndTrialPeriod.tsx @@ -1,16 +1,25 @@ import { useEndSubscriptionTrialPeriod } from '@/billing/hooks/useEndSubscriptionTrialPeriod'; import { InformationBanner } from '@/information-banner/components/InformationBanner'; +import { useSettingsPermissionMap } from '@/settings/roles/hooks/useSettingsPermissionMap'; import { useLingui } from '@lingui/react/macro'; +import { SettingPermissionType } from '~/generated-metadata/graphql'; export const InformationBannerEndTrialPeriod = () => { const { endTrialPeriod, isLoading } = useEndSubscriptionTrialPeriod(); const { t } = useLingui(); + const { [SettingPermissionType.WORKSPACE]: hasPermissionToEndTrialPeriod } = + useSettingsPermissionMap(); + return ( await endTrialPeriod()} isButtonDisabled={isLoading} /> diff --git a/packages/twenty-front/src/modules/information-banner/components/billing/InformationBannerFailPaymentInfo.tsx b/packages/twenty-front/src/modules/information-banner/components/billing/InformationBannerFailPaymentInfo.tsx index 934d5789e..2c5dbb72c 100644 --- a/packages/twenty-front/src/modules/information-banner/components/billing/InformationBannerFailPaymentInfo.tsx +++ b/packages/twenty-front/src/modules/information-banner/components/billing/InformationBannerFailPaymentInfo.tsx @@ -1,9 +1,14 @@ import { useRedirect } from '@/domain-manager/hooks/useRedirect'; import { InformationBanner } from '@/information-banner/components/InformationBanner'; +import { useSettingsPermissionMap } from '@/settings/roles/hooks/useSettingsPermissionMap'; import { SettingsPath } from '@/types/SettingsPath'; -import { useBillingPortalSessionQuery } from '~/generated/graphql'; -import { getSettingsPath } from '~/utils/navigation/getSettingsPath'; +import { t } from '@lingui/core/macro'; import { isDefined } from 'twenty-shared/utils'; +import { + SettingPermissionType, + useBillingPortalSessionQuery, +} from '~/generated/graphql'; +import { getSettingsPath } from '~/utils/navigation/getSettingsPath'; export const InformationBannerFailPaymentInfo = () => { const { redirect } = useRedirect(); @@ -14,6 +19,10 @@ export const InformationBannerFailPaymentInfo = () => { }, }); + const { + [SettingPermissionType.WORKSPACE]: hasPermissionToUpdateBillingDetails, + } = useSettingsPermissionMap(); + const openBillingPortal = () => { if (isDefined(data) && isDefined(data.billingPortalSession.url)) { redirect(data.billingPortalSession.url); @@ -23,8 +32,12 @@ export const InformationBannerFailPaymentInfo = () => { return ( openBillingPortal()} isButtonDisabled={loading || !isDefined(data)} /> diff --git a/packages/twenty-front/src/modules/information-banner/components/billing/InformationBannerNoBillingSubscription.tsx b/packages/twenty-front/src/modules/information-banner/components/billing/InformationBannerNoBillingSubscription.tsx index eefaa20a0..a2a9c0f0c 100644 --- a/packages/twenty-front/src/modules/information-banner/components/billing/InformationBannerNoBillingSubscription.tsx +++ b/packages/twenty-front/src/modules/information-banner/components/billing/InformationBannerNoBillingSubscription.tsx @@ -1,6 +1,9 @@ import { BILLING_CHECKOUT_SESSION_DEFAULT_VALUE } from '@/billing/constants/BillingCheckoutSessionDefaultValue'; import { useHandleCheckoutSession } from '@/billing/hooks/useHandleCheckoutSession'; import { InformationBanner } from '@/information-banner/components/InformationBanner'; +import { useSettingsPermissionMap } from '@/settings/roles/hooks/useSettingsPermissionMap'; +import { t } from '@lingui/core/macro'; +import { SettingPermissionType } from '~/generated-metadata/graphql'; export const InformationBannerNoBillingSubscription = () => { const { handleCheckoutSession, isSubmitting } = useHandleCheckoutSession({ @@ -9,11 +12,18 @@ export const InformationBannerNoBillingSubscription = () => { requirePaymentMethod: true, }); + const { [SettingPermissionType.WORKSPACE]: hasPermissionToSubscribe } = + useSettingsPermissionMap(); + return ( handleCheckoutSession()} isButtonDisabled={isSubmitting} />