From 98154bbeab2f5ea888dcb61bfd3a35a109ebb9a0 Mon Sep 17 00:00:00 2001 From: Muhsin Keloth Date: Fri, 10 Jul 2026 16:22:49 +0400 Subject: [PATCH] fix(meta): show restriction alerts for inbox setup (#14974) Instagram inbox creation and WhatsApp embedded signup on Chatwoot Cloud now reflect the temporary Meta restriction. Instagram is hidden from onboarding on Cloud, while the regular Instagram inbox creation page shows a disabled action with a status-linked amber warning. WhatsApp embedded signup on Cloud stays visible with its connect action disabled. WhatsApp Call setup always uses the manual WhatsApp form. Existing Instagram conversations and Instagram inbox settings on Cloud also show amber warning banners with the public incident link. Self-hosted installations keep their existing Instagram, WhatsApp, and WhatsApp Call setup behavior because the temporary restriction is based only on the Chatwoot Cloud environment check. --------- Co-authored-by: Muhsin <12408980+muhsin-k@users.noreply.github.com> Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> --- .../components/widgets/ChannelItem.vue | 6 +-- .../widgets/conversation/MessagesView.vue | 21 ++++++++- app/javascript/dashboard/constants/globals.js | 7 +-- .../i18n/locale/en/conversation.json | 2 + .../dashboard/i18n/locale/en/inboxMgmt.json | 7 ++- .../inbox-setup/useChannelConfig.js | 7 ++- .../inbox-setup/useChannelConnect.js | 7 +++ .../inbox-setup/useDetectedChannels.spec.js | 36 +++++++++++---- .../dashboard/settings/inbox/Settings.vue | 34 ++++++++++++++ .../settings/inbox/channels/CloudWhatsapp.vue | 1 + .../settings/inbox/channels/Instagram.vue | 39 ++++++++++++++-- .../settings/inbox/channels/Whatsapp.vue | 15 +++++-- .../settings/inbox/channels/WhatsappCall.vue | 17 +------ .../inbox/channels/WhatsappEmbeddedSignup.vue | 45 ++++++++++++++++++- 14 files changed, 196 insertions(+), 48 deletions(-) diff --git a/app/javascript/dashboard/components/widgets/ChannelItem.vue b/app/javascript/dashboard/components/widgets/ChannelItem.vue index 7ed2505c1..e055c2d9e 100644 --- a/app/javascript/dashboard/components/widgets/ChannelItem.vue +++ b/app/javascript/dashboard/components/widgets/ChannelItem.vue @@ -1,7 +1,6 @@ diff --git a/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/WhatsappEmbeddedSignup.vue b/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/WhatsappEmbeddedSignup.vue index 3dda0ad8e..0972e4b95 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/WhatsappEmbeddedSignup.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/WhatsappEmbeddedSignup.vue @@ -7,6 +7,7 @@ import { useAlert } from 'dashboard/composables'; import { useWhatsappEmbeddedSignup } from 'dashboard/composables/useWhatsappEmbeddedSignup'; import Icon from 'next/icon/Icon.vue'; import NextButton from 'next/button/Button.vue'; +import Banner from 'next/banner/Banner.vue'; import LoadingState from 'dashboard/components/widgets/LoadingState.vue'; import InboxesAPI from 'dashboard/api/inboxes'; import { parseAPIErrorResponse } from 'dashboard/store/utils/api'; @@ -17,6 +18,22 @@ const props = defineProps({ type: Boolean, default: false, }, + isDisabled: { + type: Boolean, + default: false, + }, + showRestrictionAlert: { + type: Boolean, + default: false, + }, + restrictionStatusUrl: { + type: String, + default: '', + }, + restrictionWarningText: { + type: String, + default: '', + }, }); const store = useStore(); @@ -81,6 +98,8 @@ const handleSignupSuccess = async inboxData => { }; const launchEmbeddedSignup = async () => { + if (props.isDisabled) return; + let credentials; try { credentials = await runEmbeddedSignup(); @@ -174,9 +193,33 @@ const launchEmbeddedSignup = async () => { + +
+ + + {{ + restrictionWarningText || + $t('INBOX_MGMT.ADD.WHATSAPP.EMBEDDED_SIGNUP.RESTRICTED_WARNING') + }} + + {{ $t('INBOX_MGMT.ADD.WHATSAPP.EMBEDDED_SIGNUP.STATUS_LINK') }} + + +
+
+