From c8387799323798a1a03f60cc53721872e1c02c81 Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Wed, 12 Feb 2025 06:06:20 +0530 Subject: [PATCH 1/8] feat: Use feature flags across the routes (#10797) --- .../routes/dashboard/settings/agentBots/agentBot.routes.js | 4 ++++ .../routes/dashboard/settings/agents/agent.routes.js | 2 ++ .../dashboard/settings/attributes/attributes.routes.js | 2 ++ .../routes/dashboard/settings/auditlogs/audit.routes.js | 2 ++ .../dashboard/settings/automation/automation.routes.js | 2 ++ .../routes/dashboard/settings/canned/canned.routes.js | 2 ++ .../dashboard/settings/customRoles/customRole.routes.js | 2 ++ .../routes/dashboard/settings/inbox/inbox.routes.js | 7 +++++++ .../dashboard/settings/integrations/integrations.routes.js | 6 ++++++ .../routes/dashboard/settings/labels/labels.routes.js | 2 ++ .../routes/dashboard/settings/macros/macros.routes.js | 4 ++++ .../dashboard/routes/dashboard/settings/sla/sla.routes.js | 3 +++ .../routes/dashboard/settings/teams/teams.routes.js | 2 +- 13 files changed, 39 insertions(+), 1 deletion(-) diff --git a/app/javascript/dashboard/routes/dashboard/settings/agentBots/agentBot.routes.js b/app/javascript/dashboard/routes/dashboard/settings/agentBots/agentBot.routes.js index 5d93ea01d..b3942d0fe 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/agentBots/agentBot.routes.js +++ b/app/javascript/dashboard/routes/dashboard/settings/agentBots/agentBot.routes.js @@ -1,3 +1,4 @@ +import { FEATURE_FLAGS } from '../../../../featureFlags'; import Bot from './Index.vue'; import CsmlEditBot from './csml/Edit.vue'; import CsmlNewBot from './csml/New.vue'; @@ -23,6 +24,7 @@ export default { name: 'agent_bots', component: Bot, meta: { + featureFlag: FEATURE_FLAGS.AGENT_BOTS, permissions: ['administrator'], }, }, @@ -31,6 +33,7 @@ export default { name: 'agent_bots_csml_new', component: CsmlNewBot, meta: { + featureFlag: FEATURE_FLAGS.AGENT_BOTS, permissions: ['administrator'], }, }, @@ -39,6 +42,7 @@ export default { name: 'agent_bots_csml_edit', component: CsmlEditBot, meta: { + featureFlag: FEATURE_FLAGS.AGENT_BOTS, permissions: ['administrator'], }, }, diff --git a/app/javascript/dashboard/routes/dashboard/settings/agents/agent.routes.js b/app/javascript/dashboard/routes/dashboard/settings/agents/agent.routes.js index 0e649fabe..e365d8e73 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/agents/agent.routes.js +++ b/app/javascript/dashboard/routes/dashboard/settings/agents/agent.routes.js @@ -1,3 +1,4 @@ +import { FEATURE_FLAGS } from '../../../../featureFlags'; import { frontendURL } from '../../../../helper/URLHelper'; import SettingsWrapper from '../SettingsWrapper.vue'; import AgentHome from './Index.vue'; @@ -19,6 +20,7 @@ export default { name: 'agent_list', component: AgentHome, meta: { + featureFlag: FEATURE_FLAGS.AGENT_MANAGEMENT, permissions: ['administrator'], }, }, diff --git a/app/javascript/dashboard/routes/dashboard/settings/attributes/attributes.routes.js b/app/javascript/dashboard/routes/dashboard/settings/attributes/attributes.routes.js index f74727059..bd9183572 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/attributes/attributes.routes.js +++ b/app/javascript/dashboard/routes/dashboard/settings/attributes/attributes.routes.js @@ -1,3 +1,4 @@ +import { FEATURE_FLAGS } from '../../../../featureFlags'; import { frontendURL } from '../../../../helper/URLHelper'; import SettingsWrapper from '../SettingsWrapper.vue'; import AttributesHome from './Index.vue'; @@ -19,6 +20,7 @@ export default { name: 'attributes_list', component: AttributesHome, meta: { + featureFlag: FEATURE_FLAGS.CUSTOM_ATTRIBUTES, permissions: ['administrator'], }, }, diff --git a/app/javascript/dashboard/routes/dashboard/settings/auditlogs/audit.routes.js b/app/javascript/dashboard/routes/dashboard/settings/auditlogs/audit.routes.js index 4d9e5d9ce..545c94eeb 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/auditlogs/audit.routes.js +++ b/app/javascript/dashboard/routes/dashboard/settings/auditlogs/audit.routes.js @@ -1,3 +1,4 @@ +import { FEATURE_FLAGS } from '../../../../featureFlags'; import { frontendURL } from '../../../../helper/URLHelper'; import SettingsWrapper from '../SettingsWrapper.vue'; @@ -19,6 +20,7 @@ export default { path: 'list', name: 'auditlogs_list', meta: { + featureFlag: FEATURE_FLAGS.AUDIT_LOGS, permissions: ['administrator'], }, component: AuditLogsHome, diff --git a/app/javascript/dashboard/routes/dashboard/settings/automation/automation.routes.js b/app/javascript/dashboard/routes/dashboard/settings/automation/automation.routes.js index 302e476bb..81cfc6cc4 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/automation/automation.routes.js +++ b/app/javascript/dashboard/routes/dashboard/settings/automation/automation.routes.js @@ -1,3 +1,4 @@ +import { FEATURE_FLAGS } from '../../../../featureFlags'; import { frontendURL } from '../../../../helper/URLHelper'; import SettingsWrapper from '../SettingsWrapper.vue'; import Automation from './Index.vue'; @@ -19,6 +20,7 @@ export default { name: 'automation_list', component: Automation, meta: { + featureFlag: FEATURE_FLAGS.AUTOMATIONS, permissions: ['administrator'], }, }, diff --git a/app/javascript/dashboard/routes/dashboard/settings/canned/canned.routes.js b/app/javascript/dashboard/routes/dashboard/settings/canned/canned.routes.js index 600d2664b..f9dbb6417 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/canned/canned.routes.js +++ b/app/javascript/dashboard/routes/dashboard/settings/canned/canned.routes.js @@ -1,3 +1,4 @@ +import { FEATURE_FLAGS } from '../../../../featureFlags'; import { frontendURL } from '../../../../helper/URLHelper'; import { ROLES, @@ -22,6 +23,7 @@ export default { path: 'list', name: 'canned_list', meta: { + featureFlag: FEATURE_FLAGS.CANNED_RESPONSES, permissions: [...ROLES, ...CONVERSATION_PERMISSIONS], }, component: CannedHome, diff --git a/app/javascript/dashboard/routes/dashboard/settings/customRoles/customRole.routes.js b/app/javascript/dashboard/routes/dashboard/settings/customRoles/customRole.routes.js index af2fc43ae..361231e23 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/customRoles/customRole.routes.js +++ b/app/javascript/dashboard/routes/dashboard/settings/customRoles/customRole.routes.js @@ -1,3 +1,4 @@ +import { FEATURE_FLAGS } from '../../../../featureFlags'; import { frontendURL } from 'dashboard/helper/URLHelper'; import SettingsWrapper from '../SettingsWrapper.vue'; @@ -17,6 +18,7 @@ export default { path: 'list', name: 'custom_roles_list', meta: { + featureFlag: FEATURE_FLAGS.CUSTOM_ROLES, permissions: ['administrator'], }, component: CustomRolesHome, diff --git a/app/javascript/dashboard/routes/dashboard/settings/inbox/inbox.routes.js b/app/javascript/dashboard/routes/dashboard/settings/inbox/inbox.routes.js index aa1115a06..e837c68de 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/inbox/inbox.routes.js +++ b/app/javascript/dashboard/routes/dashboard/settings/inbox/inbox.routes.js @@ -1,3 +1,4 @@ +import { FEATURE_FLAGS } from '../../../../featureFlags'; import { frontendURL } from '../../../../helper/URLHelper'; import ChannelFactory from './ChannelFactory.vue'; @@ -27,6 +28,7 @@ export default { name: 'settings_inbox_list', component: InboxHome, meta: { + featureFlag: FEATURE_FLAGS.INBOX_MANAGEMENT, permissions: ['administrator'], }, }, @@ -55,6 +57,7 @@ export default { name: 'settings_inbox_new', component: ChannelList, meta: { + featureFlag: FEATURE_FLAGS.INBOX_MANAGEMENT, permissions: ['administrator'], }, }, @@ -63,6 +66,7 @@ export default { name: 'settings_inbox_finish', component: FinishSetup, meta: { + featureFlag: FEATURE_FLAGS.INBOX_MANAGEMENT, permissions: ['administrator'], }, }, @@ -71,6 +75,7 @@ export default { name: 'settings_inboxes_page_channel', component: ChannelFactory, meta: { + featureFlag: FEATURE_FLAGS.INBOX_MANAGEMENT, permissions: ['administrator'], }, props: route => { @@ -81,6 +86,7 @@ export default { path: ':inbox_id/agents', name: 'settings_inboxes_add_agents', meta: { + featureFlag: FEATURE_FLAGS.INBOX_MANAGEMENT, permissions: ['administrator'], }, component: AddAgents, @@ -92,6 +98,7 @@ export default { name: 'settings_inbox_show', component: Settings, meta: { + featureFlag: FEATURE_FLAGS.INBOX_MANAGEMENT, permissions: ['administrator'], }, }, diff --git a/app/javascript/dashboard/routes/dashboard/settings/integrations/integrations.routes.js b/app/javascript/dashboard/routes/dashboard/settings/integrations/integrations.routes.js index 3bb3e4708..a2ec06ae0 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/integrations/integrations.routes.js +++ b/app/javascript/dashboard/routes/dashboard/settings/integrations/integrations.routes.js @@ -1,3 +1,4 @@ +import { FEATURE_FLAGS } from '../../../../featureFlags'; import { frontendURL } from '../../../../helper/URLHelper'; import SettingsWrapper from '../SettingsWrapper.vue'; import IntegrationHooks from './IntegrationHooks.vue'; @@ -19,6 +20,7 @@ export default { name: 'settings_applications', component: Index, meta: { + featureFlag: FEATURE_FLAGS.INTEGRATIONS, permissions: ['administrator'], }, }, @@ -27,6 +29,7 @@ export default { component: DashboardApps, name: 'settings_integrations_dashboard_apps', meta: { + featureFlag: FEATURE_FLAGS.INTEGRATIONS, permissions: ['administrator'], }, }, @@ -35,6 +38,7 @@ export default { component: Webhook, name: 'settings_integrations_webhook', meta: { + featureFlag: FEATURE_FLAGS.INTEGRATIONS, permissions: ['administrator'], }, }, @@ -62,6 +66,7 @@ export default { name: 'settings_integrations_slack', component: Slack, meta: { + featureFlag: FEATURE_FLAGS.INTEGRATIONS, permissions: ['administrator'], }, props: route => ({ code: route.query.code }), @@ -71,6 +76,7 @@ export default { name: 'settings_applications_integration', component: IntegrationHooks, meta: { + featureFlag: FEATURE_FLAGS.INTEGRATIONS, permissions: ['administrator'], }, props: route => ({ diff --git a/app/javascript/dashboard/routes/dashboard/settings/labels/labels.routes.js b/app/javascript/dashboard/routes/dashboard/settings/labels/labels.routes.js index ed5a504ab..2cd258902 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/labels/labels.routes.js +++ b/app/javascript/dashboard/routes/dashboard/settings/labels/labels.routes.js @@ -1,3 +1,4 @@ +import { FEATURE_FLAGS } from '../../../../featureFlags'; import { frontendURL } from '../../../../helper/URLHelper'; import SettingsWrapper from '../SettingsWrapper.vue'; @@ -23,6 +24,7 @@ export default { path: 'list', name: 'labels_list', meta: { + featureFlag: FEATURE_FLAGS.LABELS, permissions: ['administrator'], }, component: Index, diff --git a/app/javascript/dashboard/routes/dashboard/settings/macros/macros.routes.js b/app/javascript/dashboard/routes/dashboard/settings/macros/macros.routes.js index e1d4729e6..c45775fe9 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/macros/macros.routes.js +++ b/app/javascript/dashboard/routes/dashboard/settings/macros/macros.routes.js @@ -1,3 +1,4 @@ +import { FEATURE_FLAGS } from '../../../../featureFlags'; import { frontendURL } from 'dashboard/helper/URLHelper'; import { @@ -20,6 +21,7 @@ export default { name: 'macros_wrapper', component: Macros, meta: { + featureFlag: FEATURE_FLAGS.MACROS, permissions: [...ROLES, ...CONVERSATION_PERMISSIONS], }, }, @@ -41,6 +43,7 @@ export default { name: 'macros_edit', component: MacroEditor, meta: { + featureFlag: FEATURE_FLAGS.MACROS, permissions: [...ROLES, ...CONVERSATION_PERMISSIONS], }, }, @@ -49,6 +52,7 @@ export default { name: 'macros_new', component: MacroEditor, meta: { + featureFlag: FEATURE_FLAGS.MACROS, permissions: [...ROLES, ...CONVERSATION_PERMISSIONS], }, }, diff --git a/app/javascript/dashboard/routes/dashboard/settings/sla/sla.routes.js b/app/javascript/dashboard/routes/dashboard/settings/sla/sla.routes.js index 6955775b9..50ad28472 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/sla/sla.routes.js +++ b/app/javascript/dashboard/routes/dashboard/settings/sla/sla.routes.js @@ -1,3 +1,4 @@ +import { FEATURE_FLAGS } from '../../../../featureFlags'; import { frontendURL } from '../../../../helper/URLHelper'; import SettingsWrapper from '../SettingsWrapper.vue'; @@ -14,6 +15,7 @@ export default { path: '', name: 'sla_wrapper', meta: { + featureFlag: FEATURE_FLAGS.SLA, permissions: ['administrator'], }, redirect: to => { @@ -24,6 +26,7 @@ export default { path: 'list', name: 'sla_list', meta: { + featureFlag: FEATURE_FLAGS.SLA, permissions: ['administrator'], }, component: Index, diff --git a/app/javascript/dashboard/routes/dashboard/settings/teams/teams.routes.js b/app/javascript/dashboard/routes/dashboard/settings/teams/teams.routes.js index d360573a5..39dc603cf 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/teams/teams.routes.js +++ b/app/javascript/dashboard/routes/dashboard/settings/teams/teams.routes.js @@ -1,5 +1,5 @@ import { frontendURL } from '../../../../helper/URLHelper'; -import { FEATURE_FLAGS } from 'dashboard/featureFlags'; +import { FEATURE_FLAGS } from '../../../../featureFlags'; import TeamsIndex from './Index.vue'; import CreateStepWrap from './Create/Index.vue'; From b3f616da76e68fcdf90f017be4ee1e6e45f7224b Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Wed, 12 Feb 2025 11:52:01 +0530 Subject: [PATCH 2/8] feat: upgrade utils (#10884) --- package.json | 2 +- pnpm-lock.yaml | 28 ++++++++++++++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index aefa5439d..5e026a488 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "@breezystack/lamejs": "^1.2.7", "@chatwoot/ninja-keys": "1.2.3", "@chatwoot/prosemirror-schema": "1.1.1-next", - "@chatwoot/utils": "^0.0.38", + "@chatwoot/utils": "^0.0.39", "@formkit/core": "^1.6.7", "@formkit/vue": "^1.6.7", "@hcaptcha/vue3-hcaptcha": "^1.3.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6bbf22593..bb3403914 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,8 +23,8 @@ importers: specifier: 1.1.1-next version: 1.1.1-next '@chatwoot/utils': - specifier: ^0.0.38 - version: 0.0.38 + specifier: ^0.0.39 + version: 0.0.39 '@formkit/core': specifier: ^1.6.7 version: 1.6.7 @@ -397,8 +397,8 @@ packages: '@chatwoot/prosemirror-schema@1.1.1-next': resolution: {integrity: sha512-/M2qZ+ZF7GlQNt1riwVP499fvp3hxSqd5iy8hxyF9pkj9qQ+OKYn5JK+v3qwwqQY3IxhmNOn1Lp6tm7vstrd9Q==} - '@chatwoot/utils@0.0.38': - resolution: {integrity: sha512-6CTvuueBQLZJcm++pI2ZBY8Pp7OP3WzPCYyXoCagl8ZLpOfpjyVkLx9fc81falOoaVa/r+7EZ85Cv7vkT0ZyQw==} + '@chatwoot/utils@0.0.39': + resolution: {integrity: sha512-m/mt8WhhgEBj0kyfxCQjwyVLVj4Eyb1QRvs1cckL82b6xjyW69zicsVVpTIGd2DLTVdGPu1NzLPKKPaTOnIZgQ==} engines: {node: '>=10'} '@codemirror/commands@6.7.0': @@ -5133,7 +5133,7 @@ snapshots: prosemirror-utils: 1.2.2(prosemirror-model@1.22.3)(prosemirror-state@1.4.3) prosemirror-view: 1.34.1 - '@chatwoot/utils@0.0.38': + '@chatwoot/utils@0.0.39': dependencies: date-fns: 2.30.0 @@ -6599,7 +6599,7 @@ snapshots: '@videojs/http-streaming@2.13.1(video.js@7.18.1)': dependencies: - '@babel/runtime': 7.25.6 + '@babel/runtime': 7.26.7 '@videojs/vhs-utils': 3.0.4 aes-decrypter: 3.1.2 global: 4.4.0 @@ -6610,19 +6610,19 @@ snapshots: '@videojs/vhs-utils@3.0.4': dependencies: - '@babel/runtime': 7.25.6 + '@babel/runtime': 7.26.7 global: 4.4.0 url-toolkit: 2.2.5 '@videojs/vhs-utils@3.0.5': dependencies: - '@babel/runtime': 7.25.6 + '@babel/runtime': 7.26.7 global: 4.4.0 url-toolkit: 2.2.5 '@videojs/xhr@2.6.0': dependencies: - '@babel/runtime': 7.25.6 + '@babel/runtime': 7.26.7 global: 4.4.0 is-function: 1.0.2 @@ -6905,7 +6905,7 @@ snapshots: aes-decrypter@3.1.2: dependencies: - '@babel/runtime': 7.25.6 + '@babel/runtime': 7.26.7 '@videojs/vhs-utils': 3.0.5 global: 4.4.0 pkcs7: 1.0.4 @@ -8678,7 +8678,7 @@ snapshots: m3u8-parser@4.7.0: dependencies: - '@babel/runtime': 7.25.6 + '@babel/runtime': 7.26.7 '@videojs/vhs-utils': 3.0.5 global: 4.4.0 @@ -8813,7 +8813,7 @@ snapshots: mpd-parser@0.21.0: dependencies: - '@babel/runtime': 7.25.6 + '@babel/runtime': 7.26.7 '@videojs/vhs-utils': 3.0.5 '@xmldom/xmldom': 0.7.13 global: 4.4.0 @@ -8832,7 +8832,7 @@ snapshots: mux.js@6.0.1: dependencies: - '@babel/runtime': 7.25.6 + '@babel/runtime': 7.26.7 global: 4.4.0 mz@2.7.0: @@ -9066,7 +9066,7 @@ snapshots: pkcs7@1.0.4: dependencies: - '@babel/runtime': 7.25.6 + '@babel/runtime': 7.26.7 pkg-dir@7.0.0: dependencies: From cd80bd07ca9454ce3ff9e009e376c9ac13f50994 Mon Sep 17 00:00:00 2001 From: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Date: Wed, 12 Feb 2025 12:31:54 +0530 Subject: [PATCH 3/8] fix: TypeError - Cannot read properties of null (reading 'name') (#10887) --- .../components-next/message/bubbles/BaseAttachment.vue | 2 +- .../dashboard/components-next/message/bubbles/Dyte.vue | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/app/javascript/dashboard/components-next/message/bubbles/BaseAttachment.vue b/app/javascript/dashboard/components-next/message/bubbles/BaseAttachment.vue index 8beceee26..e10d68d64 100644 --- a/app/javascript/dashboard/components-next/message/bubbles/BaseAttachment.vue +++ b/app/javascript/dashboard/components-next/message/bubbles/BaseAttachment.vue @@ -24,7 +24,7 @@ const { sender } = useMessageContext(); const { t } = useI18n(); const senderName = computed(() => { - return sender?.value.name; + return sender?.value?.name || ''; }); diff --git a/app/javascript/dashboard/components-next/message/bubbles/Dyte.vue b/app/javascript/dashboard/components-next/message/bubbles/Dyte.vue index d1fa326b4..61d3cf31d 100644 --- a/app/javascript/dashboard/components-next/message/bubbles/Dyte.vue +++ b/app/javascript/dashboard/components-next/message/bubbles/Dyte.vue @@ -9,7 +9,7 @@ import { useI18n } from 'vue-i18n'; import { useMessageContext } from '../provider.js'; import BaseAttachmentBubble from './BaseAttachment.vue'; -const { contentAttributes } = useMessageContext(); +const { content, sender, contentAttributes } = useMessageContext(); const { t } = useI18n(); @@ -53,6 +53,11 @@ const action = computed(() => ({ sender-translation-key="CONVERSATION.SHARED_ATTACHMENT.MEETING" :action="action" > +
+ + + {{ content }} +