mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-10-31 02:57:57 +00:00 
			
		
		
		
	chore: Cleanup feature flags (#6096)
- Add more feature flags for CRM, auto_resolution, and reports - Add a SuperAdmin link in the sidebar if the user is a super-admin - SuperAdmin could view all the features on an account irrespective of whether the feature is enabled.
This commit is contained in:
		| @@ -1,3 +1,4 @@ | |||||||
|  | import { FEATURE_FLAGS } from '../../../../featureFlags'; | ||||||
| import { frontendURL } from '../../../../helper/URLHelper'; | import { frontendURL } from '../../../../helper/URLHelper'; | ||||||
|  |  | ||||||
| const primaryMenuItems = accountId => [ | const primaryMenuItems = accountId => [ | ||||||
| @@ -13,6 +14,7 @@ const primaryMenuItems = accountId => [ | |||||||
|     icon: 'book-contacts', |     icon: 'book-contacts', | ||||||
|     key: 'contacts', |     key: 'contacts', | ||||||
|     label: 'CONTACTS', |     label: 'CONTACTS', | ||||||
|  |     featureFlag: FEATURE_FLAGS.CRM, | ||||||
|     toState: frontendURL(`accounts/${accountId}/contacts`), |     toState: frontendURL(`accounts/${accountId}/contacts`), | ||||||
|     toStateName: 'contacts_dashboard', |     toStateName: 'contacts_dashboard', | ||||||
|     roles: ['administrator', 'agent'], |     roles: ['administrator', 'agent'], | ||||||
| @@ -21,6 +23,7 @@ const primaryMenuItems = accountId => [ | |||||||
|     icon: 'arrow-trending-lines', |     icon: 'arrow-trending-lines', | ||||||
|     key: 'reports', |     key: 'reports', | ||||||
|     label: 'REPORTS', |     label: 'REPORTS', | ||||||
|  |     featureFlag: FEATURE_FLAGS.REPORTS, | ||||||
|     toState: frontendURL(`accounts/${accountId}/reports`), |     toState: frontendURL(`accounts/${accountId}/reports`), | ||||||
|     toStateName: 'settings_account_reports', |     toStateName: 'settings_account_reports', | ||||||
|     roles: ['administrator'], |     roles: ['administrator'], | ||||||
| @@ -29,7 +32,7 @@ const primaryMenuItems = accountId => [ | |||||||
|     icon: 'megaphone', |     icon: 'megaphone', | ||||||
|     key: 'campaigns', |     key: 'campaigns', | ||||||
|     label: 'CAMPAIGNS', |     label: 'CAMPAIGNS', | ||||||
|     featureFlag: 'campaigns', |     featureFlag: FEATURE_FLAGS.CAMPAIGNS, | ||||||
|     toState: frontendURL(`accounts/${accountId}/campaigns`), |     toState: frontendURL(`accounts/${accountId}/campaigns`), | ||||||
|     toStateName: 'settings_account_campaigns', |     toStateName: 'settings_account_campaigns', | ||||||
|     roles: ['administrator'], |     roles: ['administrator'], | ||||||
| @@ -38,7 +41,7 @@ const primaryMenuItems = accountId => [ | |||||||
|     icon: 'library', |     icon: 'library', | ||||||
|     key: 'helpcenter', |     key: 'helpcenter', | ||||||
|     label: 'HELP_CENTER.TITLE', |     label: 'HELP_CENTER.TITLE', | ||||||
|     featureFlag: 'help_center', |     featureFlag: FEATURE_FLAGS.HELP_CENTER, | ||||||
|     toState: frontendURL(`accounts/${accountId}/portals`), |     toState: frontendURL(`accounts/${accountId}/portals`), | ||||||
|     toStateName: 'default_portal_articles', |     toStateName: 'default_portal_articles', | ||||||
|     roles: ['administrator'], |     roles: ['administrator'], | ||||||
|   | |||||||
| @@ -102,6 +102,7 @@ const settings = accountId => ({ | |||||||
|       label: 'AGENT_BOTS', |       label: 'AGENT_BOTS', | ||||||
|       beta: true, |       beta: true, | ||||||
|       hasSubMenu: false, |       hasSubMenu: false, | ||||||
|  |       globalConfigFlag: 'csmlEditorHost', | ||||||
|       toState: frontendURL(`accounts/${accountId}/settings/agent-bots`), |       toState: frontendURL(`accounts/${accountId}/settings/agent-bots`), | ||||||
|       toStateName: 'agent_bots', |       toStateName: 'agent_bots', | ||||||
|       featureFlag: FEATURE_FLAGS.AGENT_BOTS, |       featureFlag: FEATURE_FLAGS.AGENT_BOTS, | ||||||
|   | |||||||
| @@ -61,6 +61,24 @@ | |||||||
|             </a> |             </a> | ||||||
|           </router-link> |           </router-link> | ||||||
|         </woot-dropdown-item> |         </woot-dropdown-item> | ||||||
|  |         <woot-dropdown-item v-if="currentUser.type === 'SuperAdmin'"> | ||||||
|  |           <a | ||||||
|  |             href="/super_admin" | ||||||
|  |             class="button small clear secondary" | ||||||
|  |             target="_blank" | ||||||
|  |             rel="noopener nofollow noreferrer" | ||||||
|  |             @click="$emit('close')" | ||||||
|  |           > | ||||||
|  |             <fluent-icon | ||||||
|  |               icon="content-settings" | ||||||
|  |               size="14" | ||||||
|  |               class="icon icon--font" | ||||||
|  |             /> | ||||||
|  |             <span class="button__content"> | ||||||
|  |               {{ $t('SIDEBAR_ITEMS.SUPER_ADMIN_CONSOLE') }} | ||||||
|  |             </span> | ||||||
|  |           </a> | ||||||
|  |         </woot-dropdown-item> | ||||||
|         <woot-dropdown-item> |         <woot-dropdown-item> | ||||||
|           <woot-button |           <woot-button | ||||||
|             variant="clear" |             variant="clear" | ||||||
|   | |||||||
| @@ -106,18 +106,22 @@ export default { | |||||||
|       activeInbox: 'getSelectedInbox', |       activeInbox: 'getSelectedInbox', | ||||||
|       accountId: 'getCurrentAccountId', |       accountId: 'getCurrentAccountId', | ||||||
|       isFeatureEnabledonAccount: 'accounts/isFeatureEnabledonAccount', |       isFeatureEnabledonAccount: 'accounts/isFeatureEnabledonAccount', | ||||||
|  |       globalConfig: 'globalConfig/get', | ||||||
|     }), |     }), | ||||||
|     hasSubMenu() { |     hasSubMenu() { | ||||||
|       return !!this.menuItem.children; |       return !!this.menuItem.children; | ||||||
|     }, |     }, | ||||||
|     isMenuItemVisible() { |     isMenuItemVisible() { | ||||||
|       if (!this.menuItem.featureFlag) { |       if (this.menuItem.globalConfigFlag) { | ||||||
|         return true; |         return !!this.globalConfig[this.menuItem.globalConfigFlag]; | ||||||
|       } |       } | ||||||
|  |       if (this.menuItem.featureFlag) { | ||||||
|         return this.isFeatureEnabledonAccount( |         return this.isFeatureEnabledonAccount( | ||||||
|           this.accountId, |           this.accountId, | ||||||
|           this.menuItem.featureFlag |           this.menuItem.featureFlag | ||||||
|         ); |         ); | ||||||
|  |       } | ||||||
|  |       return true; | ||||||
|     }, |     }, | ||||||
|     isAllConversations() { |     isAllConversations() { | ||||||
|       return ( |       return ( | ||||||
|   | |||||||
| @@ -1,13 +1,18 @@ | |||||||
| export const FEATURE_FLAGS = { | export const FEATURE_FLAGS = { | ||||||
|   AGENT_BOTS: 'agent_bots', |   AGENT_BOTS: 'agent_bots', | ||||||
|   AGENT_MANAGEMENT: 'agent_management', |   AGENT_MANAGEMENT: 'agent_management', | ||||||
|  |   AUTO_RESOLVE_CONVERSATIONS: 'auto_resolve_conversations', | ||||||
|   AUTOMATIONS: 'automations', |   AUTOMATIONS: 'automations', | ||||||
|  |   CAMPAIGNS: 'campaigns', | ||||||
|   CANNED_RESPONSES: 'canned_responses', |   CANNED_RESPONSES: 'canned_responses', | ||||||
|  |   CRM: 'crm', | ||||||
|   CUSTOM_ATTRIBUTES: 'custom_attributes', |   CUSTOM_ATTRIBUTES: 'custom_attributes', | ||||||
|   INBOX_MANAGEMENT: 'inbox_management', |   INBOX_MANAGEMENT: 'inbox_management', | ||||||
|   INTEGRATIONS: 'integrations', |   INTEGRATIONS: 'integrations', | ||||||
|   LABELS: 'labels', |   LABELS: 'labels', | ||||||
|   MACROS: 'macros', |   MACROS: 'macros', | ||||||
|  |   HELP_CENTER: 'help_center', | ||||||
|  |   REPORTS: 'reports', | ||||||
|   TEAM_MANAGEMENT: 'team_management', |   TEAM_MANAGEMENT: 'team_management', | ||||||
|   VOICE_RECORDER: 'voice_recorder', |   VOICE_RECORDER: 'voice_recorder', | ||||||
| }; | }; | ||||||
|   | |||||||
| @@ -132,6 +132,7 @@ | |||||||
|     "SELECTOR_SUBTITLE": "Select an account from the following list", |     "SELECTOR_SUBTITLE": "Select an account from the following list", | ||||||
|     "PROFILE_SETTINGS": "Profile Settings", |     "PROFILE_SETTINGS": "Profile Settings", | ||||||
|     "KEYBOARD_SHORTCUTS": "Keyboard Shortcuts", |     "KEYBOARD_SHORTCUTS": "Keyboard Shortcuts", | ||||||
|  |     "SUPER_ADMIN_CONSOLE": "Super Admin Console", | ||||||
|     "LOGOUT": "Logout" |     "LOGOUT": "Logout" | ||||||
|   }, |   }, | ||||||
|   "APP_GLOBAL": { |   "APP_GLOBAL": { | ||||||
|   | |||||||
| @@ -32,6 +32,7 @@ const GO_TO_COMMANDS = [ | |||||||
|     id: 'goto_contacts_dashboard', |     id: 'goto_contacts_dashboard', | ||||||
|     title: 'COMMAND_BAR.COMMANDS.GO_TO_CONTACTS_DASHBOARD', |     title: 'COMMAND_BAR.COMMANDS.GO_TO_CONTACTS_DASHBOARD', | ||||||
|     section: 'COMMAND_BAR.SECTIONS.GENERAL', |     section: 'COMMAND_BAR.SECTIONS.GENERAL', | ||||||
|  |     featureFlag: FEATURE_FLAGS.CRM, | ||||||
|     icon: ICON_CONTACT_DASHBOARD, |     icon: ICON_CONTACT_DASHBOARD, | ||||||
|     path: accountId => `accounts/${accountId}/contacts`, |     path: accountId => `accounts/${accountId}/contacts`, | ||||||
|     role: ['administrator', 'agent'], |     role: ['administrator', 'agent'], | ||||||
| @@ -40,6 +41,7 @@ const GO_TO_COMMANDS = [ | |||||||
|     id: 'open_reports_overview', |     id: 'open_reports_overview', | ||||||
|     section: 'COMMAND_BAR.SECTIONS.REPORTS', |     section: 'COMMAND_BAR.SECTIONS.REPORTS', | ||||||
|     title: 'COMMAND_BAR.COMMANDS.GO_TO_REPORTS_OVERVIEW', |     title: 'COMMAND_BAR.COMMANDS.GO_TO_REPORTS_OVERVIEW', | ||||||
|  |     featureFlag: FEATURE_FLAGS.REPORTS, | ||||||
|     icon: ICON_REPORTS_OVERVIEW, |     icon: ICON_REPORTS_OVERVIEW, | ||||||
|     path: accountId => `accounts/${accountId}/reports/overview`, |     path: accountId => `accounts/${accountId}/reports/overview`, | ||||||
|     role: ['administrator'], |     role: ['administrator'], | ||||||
| @@ -48,6 +50,7 @@ const GO_TO_COMMANDS = [ | |||||||
|     id: 'open_conversation_reports', |     id: 'open_conversation_reports', | ||||||
|     section: 'COMMAND_BAR.SECTIONS.REPORTS', |     section: 'COMMAND_BAR.SECTIONS.REPORTS', | ||||||
|     title: 'COMMAND_BAR.COMMANDS.GO_TO_CONVERSATION_REPORTS', |     title: 'COMMAND_BAR.COMMANDS.GO_TO_CONVERSATION_REPORTS', | ||||||
|  |     featureFlag: FEATURE_FLAGS.REPORTS, | ||||||
|     icon: ICON_CONVERSATION_REPORTS, |     icon: ICON_CONVERSATION_REPORTS, | ||||||
|     path: accountId => `accounts/${accountId}/reports/conversation`, |     path: accountId => `accounts/${accountId}/reports/conversation`, | ||||||
|     role: ['administrator'], |     role: ['administrator'], | ||||||
| @@ -56,6 +59,7 @@ const GO_TO_COMMANDS = [ | |||||||
|     id: 'open_agent_reports', |     id: 'open_agent_reports', | ||||||
|     section: 'COMMAND_BAR.SECTIONS.REPORTS', |     section: 'COMMAND_BAR.SECTIONS.REPORTS', | ||||||
|     title: 'COMMAND_BAR.COMMANDS.GO_TO_AGENT_REPORTS', |     title: 'COMMAND_BAR.COMMANDS.GO_TO_AGENT_REPORTS', | ||||||
|  |     featureFlag: FEATURE_FLAGS.REPORTS, | ||||||
|     icon: ICON_AGENT_REPORTS, |     icon: ICON_AGENT_REPORTS, | ||||||
|     path: accountId => `accounts/${accountId}/reports/agent`, |     path: accountId => `accounts/${accountId}/reports/agent`, | ||||||
|     role: ['administrator'], |     role: ['administrator'], | ||||||
| @@ -64,6 +68,7 @@ const GO_TO_COMMANDS = [ | |||||||
|     id: 'open_label_reports', |     id: 'open_label_reports', | ||||||
|     section: 'COMMAND_BAR.SECTIONS.REPORTS', |     section: 'COMMAND_BAR.SECTIONS.REPORTS', | ||||||
|     title: 'COMMAND_BAR.COMMANDS.GO_TO_LABEL_REPORTS', |     title: 'COMMAND_BAR.COMMANDS.GO_TO_LABEL_REPORTS', | ||||||
|  |     featureFlag: FEATURE_FLAGS.REPORTS, | ||||||
|     icon: ICON_LABEL_REPORTS, |     icon: ICON_LABEL_REPORTS, | ||||||
|     path: accountId => `accounts/${accountId}/reports/label`, |     path: accountId => `accounts/${accountId}/reports/label`, | ||||||
|     role: ['administrator'], |     role: ['administrator'], | ||||||
| @@ -72,6 +77,7 @@ const GO_TO_COMMANDS = [ | |||||||
|     id: 'open_inbox_reports', |     id: 'open_inbox_reports', | ||||||
|     section: 'COMMAND_BAR.SECTIONS.REPORTS', |     section: 'COMMAND_BAR.SECTIONS.REPORTS', | ||||||
|     title: 'COMMAND_BAR.COMMANDS.GO_TO_INBOX_REPORTS', |     title: 'COMMAND_BAR.COMMANDS.GO_TO_INBOX_REPORTS', | ||||||
|  |     featureFlag: FEATURE_FLAGS.REPORTS, | ||||||
|     icon: ICON_INBOX_REPORTS, |     icon: ICON_INBOX_REPORTS, | ||||||
|     path: accountId => `accounts/${accountId}/reports/inboxes`, |     path: accountId => `accounts/${accountId}/reports/inboxes`, | ||||||
|     role: ['administrator'], |     role: ['administrator'], | ||||||
| @@ -80,6 +86,7 @@ const GO_TO_COMMANDS = [ | |||||||
|     id: 'open_team_reports', |     id: 'open_team_reports', | ||||||
|     section: 'COMMAND_BAR.SECTIONS.REPORTS', |     section: 'COMMAND_BAR.SECTIONS.REPORTS', | ||||||
|     title: 'COMMAND_BAR.COMMANDS.GO_TO_TEAM_REPORTS', |     title: 'COMMAND_BAR.COMMANDS.GO_TO_TEAM_REPORTS', | ||||||
|  |     featureFlag: FEATURE_FLAGS.REPORTS, | ||||||
|     icon: ICON_TEAM_REPORTS, |     icon: ICON_TEAM_REPORTS, | ||||||
|     path: accountId => `accounts/${accountId}/reports/teams`, |     path: accountId => `accounts/${accountId}/reports/teams`, | ||||||
|     role: ['administrator'], |     role: ['administrator'], | ||||||
|   | |||||||
| @@ -62,7 +62,10 @@ | |||||||
|               " |               " | ||||||
|             /> |             /> | ||||||
|           </label> |           </label> | ||||||
|           <label :class="{ error: $v.autoResolveDuration.$error }"> |           <label | ||||||
|  |             v-if="showAutoResolutionConfig" | ||||||
|  |             :class="{ error: $v.autoResolveDuration.$error }" | ||||||
|  |           > | ||||||
|             {{ $t('GENERAL_SETTINGS.FORM.AUTO_RESOLVE_DURATION.LABEL') }} |             {{ $t('GENERAL_SETTINGS.FORM.AUTO_RESOLVE_DURATION.LABEL') }} | ||||||
|             <input |             <input | ||||||
|               v-model="autoResolveDuration" |               v-model="autoResolveDuration" | ||||||
| @@ -120,6 +123,7 @@ import { mapGetters } from 'vuex'; | |||||||
| import alertMixin from 'shared/mixins/alertMixin'; | import alertMixin from 'shared/mixins/alertMixin'; | ||||||
| import configMixin from 'shared/mixins/configMixin'; | import configMixin from 'shared/mixins/configMixin'; | ||||||
| import accountMixin from '../../../../mixins/account'; | import accountMixin from '../../../../mixins/account'; | ||||||
|  | import { FEATURE_FLAGS } from '../../../../featureFlags'; | ||||||
| const semver = require('semver'); | const semver = require('semver'); | ||||||
|  |  | ||||||
| export default { | export default { | ||||||
| @@ -153,7 +157,15 @@ export default { | |||||||
|       globalConfig: 'globalConfig/get', |       globalConfig: 'globalConfig/get', | ||||||
|       getAccount: 'accounts/getAccount', |       getAccount: 'accounts/getAccount', | ||||||
|       uiFlags: 'accounts/getUIFlags', |       uiFlags: 'accounts/getUIFlags', | ||||||
|  |       accountId: 'getCurrentAccountId', | ||||||
|  |       isFeatureEnabledonAccount: 'accounts/isFeatureEnabledonAccount', | ||||||
|     }), |     }), | ||||||
|  |     showAutoResolutionConfig() { | ||||||
|  |       return this.isFeatureEnabledonAccount( | ||||||
|  |         this.accountId, | ||||||
|  |         FEATURE_FLAGS.AUTO_RESOLVE_CONVERSATIONS | ||||||
|  |       ); | ||||||
|  |     }, | ||||||
|     hasAnUpdateAvailable() { |     hasAnUpdateAvailable() { | ||||||
|       if (!semver.valid(this.latestChatwootVersion)) { |       if (!semver.valid(this.latestChatwootVersion)) { | ||||||
|         return false; |         return false; | ||||||
|   | |||||||
| @@ -21,7 +21,16 @@ export const getters = { | |||||||
|   getUIFlags($state) { |   getUIFlags($state) { | ||||||
|     return $state.uiFlags; |     return $state.uiFlags; | ||||||
|   }, |   }, | ||||||
|   isFeatureEnabledonAccount: $state => (id, featureName) => { |   isFeatureEnabledonAccount: ($state, _, __, rootGetters) => ( | ||||||
|  |     id, | ||||||
|  |     featureName | ||||||
|  |   ) => { | ||||||
|  |     // If a user is SuperAdmin and has access to the account, then they would see all the available features | ||||||
|  |     const isUserASuperAdmin = rootGetters.getCurrentUser?.type === 'SuperAdmin'; | ||||||
|  |     if (isUserASuperAdmin) { | ||||||
|  |       return true; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     const { features = {} } = |     const { features = {} } = | ||||||
|       $state.records.find(record => record.id === Number(id)) || {}; |       $state.records.find(record => record.id === Number(id)) || {}; | ||||||
|     return features[featureName] || false; |     return features[featureName] || false; | ||||||
|   | |||||||
| @@ -57,6 +57,7 @@ | |||||||
|   "contact-card-group-outline": "M18.75 4A3.25 3.25 0 0 1 22 7.25v9.505a3.25 3.25 0 0 1-3.25 3.25H5.25A3.25 3.25 0 0 1 2 16.755V7.25a3.25 3.25 0 0 1 3.066-3.245L5.25 4h13.5Zm0 1.5H5.25l-.144.006A1.75 1.75 0 0 0 3.5 7.25v9.505c0 .966.784 1.75 1.75 1.75h13.5a1.75 1.75 0 0 0 1.75-1.75V7.25a1.75 1.75 0 0 0-1.75-1.75Zm-9.497 7a.75.75 0 0 1 .75.75v.582c0 1.272-.969 1.918-2.502 1.918S5 15.104 5 13.831v-.581a.75.75 0 0 1 .75-.75h3.503Zm1.58-.001 1.417.001a.75.75 0 0 1 .75.75v.333c0 .963-.765 1.417-1.875 1.417-.116 0-.229-.005-.337-.015a2.85 2.85 0 0 0 .206-.9l.009-.253v-.582c0-.269-.061-.524-.17-.751Zm4.417.001h3a.75.75 0 0 1 .102 1.493L18.25 14h-3a.75.75 0 0 1-.102-1.493l.102-.007h3-3Zm-7.75-4a1.5 1.5 0 1 1 0 3.001 1.5 1.5 0 0 1 0-3.001Zm3.87.502a1.248 1.248 0 1 1 0 2.496 1.248 1.248 0 0 1 0-2.496Zm3.88.498h3a.75.75 0 0 1 .102 1.493L18.25 11h-3a.75.75 0 0 1-.102-1.493l.102-.007h3-3Z", |   "contact-card-group-outline": "M18.75 4A3.25 3.25 0 0 1 22 7.25v9.505a3.25 3.25 0 0 1-3.25 3.25H5.25A3.25 3.25 0 0 1 2 16.755V7.25a3.25 3.25 0 0 1 3.066-3.245L5.25 4h13.5Zm0 1.5H5.25l-.144.006A1.75 1.75 0 0 0 3.5 7.25v9.505c0 .966.784 1.75 1.75 1.75h13.5a1.75 1.75 0 0 0 1.75-1.75V7.25a1.75 1.75 0 0 0-1.75-1.75Zm-9.497 7a.75.75 0 0 1 .75.75v.582c0 1.272-.969 1.918-2.502 1.918S5 15.104 5 13.831v-.581a.75.75 0 0 1 .75-.75h3.503Zm1.58-.001 1.417.001a.75.75 0 0 1 .75.75v.333c0 .963-.765 1.417-1.875 1.417-.116 0-.229-.005-.337-.015a2.85 2.85 0 0 0 .206-.9l.009-.253v-.582c0-.269-.061-.524-.17-.751Zm4.417.001h3a.75.75 0 0 1 .102 1.493L18.25 14h-3a.75.75 0 0 1-.102-1.493l.102-.007h3-3Zm-7.75-4a1.5 1.5 0 1 1 0 3.001 1.5 1.5 0 0 1 0-3.001Zm3.87.502a1.248 1.248 0 1 1 0 2.496 1.248 1.248 0 0 1 0-2.496Zm3.88.498h3a.75.75 0 0 1 .102 1.493L18.25 11h-3a.75.75 0 0 1-.102-1.493l.102-.007h3-3Z", | ||||||
|   "contact-card-outline": "M19.75 4A2.25 2.25 0 0 1 22 6.25v11.505a2.25 2.25 0 0 1-2.25 2.25H4.25A2.25 2.25 0 0 1 2 17.755V6.25A2.25 2.25 0 0 1 4.25 4h15.5Zm0 1.5H4.25a.75.75 0 0 0-.75.75v11.505c0 .414.336.75.75.75h15.5a.75.75 0 0 0 .75-.75V6.25a.75.75 0 0 0-.75-.75Zm-10 7a.75.75 0 0 1 .75.75v.493l-.008.108c-.163 1.113-1.094 1.65-2.492 1.65s-2.33-.537-2.492-1.65l-.008-.11v-.491a.75.75 0 0 1 .75-.75h3.5Zm3.502.496h4.498a.75.75 0 0 1 .102 1.493l-.102.007h-4.498a.75.75 0 0 1-.102-1.493l.102-.007h4.498-4.498ZM8 8.502a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3Zm5.252.998h4.498a.75.75 0 0 1 .102 1.493L17.75 11h-4.498a.75.75 0 0 1-.102-1.493l.102-.007h4.498-4.498Z", |   "contact-card-outline": "M19.75 4A2.25 2.25 0 0 1 22 6.25v11.505a2.25 2.25 0 0 1-2.25 2.25H4.25A2.25 2.25 0 0 1 2 17.755V6.25A2.25 2.25 0 0 1 4.25 4h15.5Zm0 1.5H4.25a.75.75 0 0 0-.75.75v11.505c0 .414.336.75.75.75h15.5a.75.75 0 0 0 .75-.75V6.25a.75.75 0 0 0-.75-.75Zm-10 7a.75.75 0 0 1 .75.75v.493l-.008.108c-.163 1.113-1.094 1.65-2.492 1.65s-2.33-.537-2.492-1.65l-.008-.11v-.491a.75.75 0 0 1 .75-.75h3.5Zm3.502.496h4.498a.75.75 0 0 1 .102 1.493l-.102.007h-4.498a.75.75 0 0 1-.102-1.493l.102-.007h4.498-4.498ZM8 8.502a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3Zm5.252.998h4.498a.75.75 0 0 1 .102 1.493L17.75 11h-4.498a.75.75 0 0 1-.102-1.493l.102-.007h4.498-4.498Z", | ||||||
|   "contact-identify-outline": "m11.91 13.998 7.843.002a2.25 2.25 0 0 1 2.25 2.25v.905A3.75 3.75 0 0 1 20.696 20C19.13 21.344 16.89 22 14 22h-.179c.234-.47.242-1.025.026-1.502l.153.003c2.56 0 4.458-.557 5.719-1.64a2.25 2.25 0 0 0 .784-1.706v-.905a.75.75 0 0 0-.75-.75h-7.776a5.565 5.565 0 0 0-.068-1.502ZM6.5 10.5a4.5 4.5 0 0 1 3.46 7.376l2.823 2.814a.75.75 0 0 1-.975 1.135l-.085-.073-2.903-2.896A4.5 4.5 0 1 1 6.5 10.5Zm0 1.5a3 3 0 1 0 0 6 3 3 0 0 0 0-6ZM14 2.004a5 5 0 1 1 0 10 5 5 0 0 1 0-10Zm0 1.5a3.5 3.5 0 1 0 0 7 3.5 3.5 0 0 0 0-7Z", |   "contact-identify-outline": "m11.91 13.998 7.843.002a2.25 2.25 0 0 1 2.25 2.25v.905A3.75 3.75 0 0 1 20.696 20C19.13 21.344 16.89 22 14 22h-.179c.234-.47.242-1.025.026-1.502l.153.003c2.56 0 4.458-.557 5.719-1.64a2.25 2.25 0 0 0 .784-1.706v-.905a.75.75 0 0 0-.75-.75h-7.776a5.565 5.565 0 0 0-.068-1.502ZM6.5 10.5a4.5 4.5 0 0 1 3.46 7.376l2.823 2.814a.75.75 0 0 1-.975 1.135l-.085-.073-2.903-2.896A4.5 4.5 0 1 1 6.5 10.5Zm0 1.5a3 3 0 1 0 0 6 3 3 0 0 0 0-6ZM14 2.004a5 5 0 1 1 0 10 5 5 0 0 1 0-10Zm0 1.5a3.5 3.5 0 1 0 0 7 3.5 3.5 0 0 0 0-7Z", | ||||||
|  |   "content-settings-outline": "m17.751 3 .185.005a3.25 3.25 0 0 1 3.06 3.06l.005.185v5.772a6.468 6.468 0 0 0-1.5-.709L19.5 8H4.501L4.5 17.75a1.75 1.75 0 0 0 1.606 1.744l.144.006h5.064c.172.534.412 1.037.708 1.5H6.25a3.25 3.25 0 0 1-3.245-3.066L3 17.75V6.25a3.25 3.25 0 0 1 3.066-3.245L6.25 3h11.501Zm0 1.5h-11.5a1.75 1.75 0 0 0-1.75 1.75v.25h15v-.25a1.75 1.75 0 0 0-1.75-1.75Zm-7.501 5a.75.75 0 0 1 .743.648l.007.102v7a.75.75 0 0 1-.648.743L10.25 18h-3.5a.75.75 0 0 1-.743-.648L6 17.25v-7a.75.75 0 0 1 .648-.743L6.75 9.5h3.5ZM9.5 11h-2v5.5h2V11Zm8.5-.75a.75.75 0 0 0-.75-.75h-4.496l-.101.007A.75.75 0 0 0 12.754 11h4.496l.102-.007A.75.75 0 0 0 18 10.25Zm-3.72 3.725a2 2 0 0 1-1.442 2.497l-.584.144a5.729 5.729 0 0 0 .006 1.807l.54.13a2 2 0 0 1 1.45 2.51l-.187.632c.44.386.94.699 1.484.921l.494-.518a2 2 0 0 1 2.899 0l.498.525a5.28 5.28 0 0 0 1.483-.913l-.198-.686a2 2 0 0 1 1.442-2.496l.583-.144a5.729 5.729 0 0 0-.006-1.808l-.54-.13a2 2 0 0 1-1.45-2.51l.187-.63a5.28 5.28 0 0 0-1.484-.923l-.493.519a2 2 0 0 1-2.9 0l-.498-.525c-.544.22-1.044.53-1.483.912l.198.686ZM17.5 19c-.8 0-1.45-.672-1.45-1.5 0-.829.65-1.5 1.45-1.5.8 0 1.45.671 1.45 1.5 0 .828-.65 1.5-1.45 1.5Z", | ||||||
|   "copy-outline": [ |   "copy-outline": [ | ||||||
|     "M8 3a1 1 0 0 0-1 1v.5a.5.5 0 0 1-1 0V4a2 2 0 0 1 2-2h.5a.5.5 0 0 1 0 1H8z", |     "M8 3a1 1 0 0 0-1 1v.5a.5.5 0 0 1-1 0V4a2 2 0 0 1 2-2h.5a.5.5 0 0 1 0 1H8z", | ||||||
|     "M7 12a1 1 0 0 0 1 1h.5a.5.5 0 0 1 0 1H8a2 2 0 0 1-2-2v-.5a.5.5 0 0 1 1 0v.5z", |     "M7 12a1 1 0 0 0 1 1h.5a.5.5 0 0 1 0 1H8a2 2 0 0 1-2-2v-.5a.5.5 0 0 1 1 0v.5z", | ||||||
|   | |||||||
| @@ -16,6 +16,7 @@ json.custom_attributes resource.custom_attributes if resource.custom_attributes. | |||||||
| json.role resource.active_account_user&.role | json.role resource.active_account_user&.role | ||||||
| json.ui_settings resource.ui_settings | json.ui_settings resource.ui_settings | ||||||
| json.uid resource.uid | json.uid resource.uid | ||||||
|  | json.type resource.type | ||||||
| json.accounts do | json.accounts do | ||||||
|   json.array! resource.account_users do |account_user| |   json.array! resource.account_users do |account_user| | ||||||
|     json.id account_user.account_id |     json.id account_user.account_id | ||||||
|   | |||||||
| @@ -1,8 +1,6 @@ | |||||||
| # DO NOT change the order of features EVER | # DO NOT change the order of features EVER | ||||||
| - name: inbound_emails | - name: inbound_emails | ||||||
|   enabled: true |   enabled: true | ||||||
| - name: channel_website |  | ||||||
|   enabled: true |  | ||||||
| - name: channel_email | - name: channel_email | ||||||
|   enabled: true |   enabled: true | ||||||
| - name: channel_facebook | - name: channel_facebook | ||||||
| @@ -15,8 +13,6 @@ | |||||||
|   enabled: false |   enabled: false | ||||||
| - name: email_continuity_on_api_channel | - name: email_continuity_on_api_channel | ||||||
|   enabled: false |   enabled: false | ||||||
| - name: campaigns |  | ||||||
|   enabled: true |  | ||||||
| - name: help_center | - name: help_center | ||||||
|   enabled: true |   enabled: true | ||||||
| - name: agent_bots | - name: agent_bots | ||||||
| @@ -43,3 +39,13 @@ | |||||||
|   enabled: true |   enabled: true | ||||||
| - name: mobile_v2 | - name: mobile_v2 | ||||||
|   enabled: false |   enabled: false | ||||||
|  | - name: channel_website | ||||||
|  |   enabled: true | ||||||
|  | - name: campaigns | ||||||
|  |   enabled: true | ||||||
|  | - name: reports | ||||||
|  |   enabled: true | ||||||
|  | - name: crm | ||||||
|  |   enabled: true | ||||||
|  | - name: auto_resolve_conversations | ||||||
|  |   enabled: true | ||||||
|   | |||||||
							
								
								
									
										16
									
								
								db/migrate/20221219162759_enabled_new_features.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								db/migrate/20221219162759_enabled_new_features.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | |||||||
|  | class EnabledNewFeatures < ActiveRecord::Migration[6.1] | ||||||
|  |   def change | ||||||
|  |     Account.find_in_batches do |account_batch| | ||||||
|  |       account_batch.each do |account| | ||||||
|  |         account.enable_features( | ||||||
|  |           'channel_website', | ||||||
|  |           'campaigns', | ||||||
|  |           'reports', | ||||||
|  |           'crm', | ||||||
|  |           'auto_resolve_conversations' | ||||||
|  |         ) | ||||||
|  |         account.save! | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | end | ||||||
| @@ -10,7 +10,7 @@ | |||||||
| # | # | ||||||
| # It's strongly recommended that you check this file into your version control system. | # It's strongly recommended that you check this file into your version control system. | ||||||
|  |  | ||||||
| ActiveRecord::Schema.define(version: 2022_11_16_000514) do | ActiveRecord::Schema.define(version: 2022_12_19_162759) do | ||||||
|  |  | ||||||
|   # These are extensions that must be enabled in order to support this database |   # These are extensions that must be enabled in order to support this database | ||||||
|   enable_extension "pg_stat_statements" |   enable_extension "pg_stat_statements" | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Pranav Raj S
					Pranav Raj S