diff --git a/app/javascript/dashboard/helper/routeHelpers.js b/app/javascript/dashboard/helper/routeHelpers.js index c0abccc00..eb0921d26 100644 --- a/app/javascript/dashboard/helper/routeHelpers.js +++ b/app/javascript/dashboard/helper/routeHelpers.js @@ -49,3 +49,38 @@ export const validateLoggedInRoutes = (to, user, roleWiseRoutes) => { // Proceed to the route if none of the above conditions are met return null; }; + +export const isAConversationRoute = routeName => + [ + 'inbox_conversation', + 'conversation_through_mentions', + 'conversation_through_unattended', + 'conversation_through_inbox', + 'conversations_through_label', + 'conversations_through_team', + 'conversations_through_folders', + 'conversation_through_participating', + ].includes(routeName); + +export const getConversationDashboardRoute = routeName => { + switch (routeName) { + case 'inbox_conversation': + return 'home'; + case 'conversation_through_mentions': + return 'conversation_mentions'; + case 'conversation_through_unattended': + return 'conversation_unattended'; + case 'conversations_through_label': + return 'label_conversations'; + case 'conversations_through_team': + return 'team_conversations'; + case 'conversations_through_folders': + return 'folder_conversations'; + case 'conversation_through_participating': + return 'conversation_participating'; + case 'conversation_through_inbox': + return 'inbox_dashboard'; + default: + return null; + } +}; diff --git a/app/javascript/dashboard/helper/specs/routeHelpers.spec.js b/app/javascript/dashboard/helper/specs/routeHelpers.spec.js index f3417111a..3da657dd0 100644 --- a/app/javascript/dashboard/helper/specs/routeHelpers.spec.js +++ b/app/javascript/dashboard/helper/specs/routeHelpers.spec.js @@ -1,6 +1,8 @@ import { + getConversationDashboardRoute, getCurrentAccount, getUserRole, + isAConversationRoute, routeIsAccessibleFor, validateLoggedInRoutes, } from '../routeHelpers'; @@ -94,3 +96,41 @@ describe('#validateLoggedInRoutes', () => { }); }); }); + +describe('isAConversationRoute', () => { + it('returns true if conversation route name is provided', () => { + expect(isAConversationRoute('inbox_conversation')).toBe(true); + expect(isAConversationRoute('conversation_through_inbox')).toBe(true); + expect(isAConversationRoute('conversations_through_label')).toBe(true); + expect(isAConversationRoute('conversations_through_team')).toBe(true); + expect(isAConversationRoute('dashboard')).toBe(false); + }); +}); + +describe('getConversationDashboardRoute', () => { + it('returns dashboard route for conversation', () => { + expect(getConversationDashboardRoute('inbox_conversation')).toEqual('home'); + expect( + getConversationDashboardRoute('conversation_through_mentions') + ).toEqual('conversation_mentions'); + expect( + getConversationDashboardRoute('conversation_through_unattended') + ).toEqual('conversation_unattended'); + expect( + getConversationDashboardRoute('conversations_through_label') + ).toEqual('label_conversations'); + expect(getConversationDashboardRoute('conversations_through_team')).toEqual( + 'team_conversations' + ); + expect( + getConversationDashboardRoute('conversations_through_folders') + ).toEqual('folder_conversations'); + expect( + getConversationDashboardRoute('conversation_through_participating') + ).toEqual('conversation_participating'); + expect(getConversationDashboardRoute('conversation_through_inbox')).toEqual( + 'inbox_dashboard' + ); + expect(getConversationDashboardRoute('non_existent_route')).toBeNull(); + }); +}); diff --git a/app/javascript/dashboard/routes/dashboard/commands/conversationHotKeys.js b/app/javascript/dashboard/routes/dashboard/commands/conversationHotKeys.js index f8b8f99c9..8fdb6ab22 100644 --- a/app/javascript/dashboard/routes/dashboard/commands/conversationHotKeys.js +++ b/app/javascript/dashboard/routes/dashboard/commands/conversationHotKeys.js @@ -29,19 +29,7 @@ import { UNMUTE_ACTION, MUTE_ACTION, } from './commandBarActions'; - -export const isAConversationRoute = routeName => - [ - 'inbox_conversation', - 'conversation_through_mentions', - 'conversation_through_unattended', - 'conversation_through_inbox', - 'conversations_through_label', - 'conversations_through_team', - 'conversations_through_folders', - 'conversation_through_unattended', - 'conversation_through_participating', - ].includes(routeName); +import { isAConversationRoute } from '../../../helper/routeHelpers'; export default { watch: { diff --git a/app/javascript/dashboard/routes/dashboard/commands/specs/conversationHotKeys.spec.js b/app/javascript/dashboard/routes/dashboard/commands/specs/conversationHotKeys.spec.js deleted file mode 100644 index a7dd197fd..000000000 --- a/app/javascript/dashboard/routes/dashboard/commands/specs/conversationHotKeys.spec.js +++ /dev/null @@ -1,11 +0,0 @@ -import { isAConversationRoute } from '../conversationHotKeys'; - -describe('isAConversationRoute', () => { - it('returns true if conversation route name is provided', () => { - expect(isAConversationRoute('inbox_conversation')).toBe(true); - expect(isAConversationRoute('conversation_through_inbox')).toBe(true); - expect(isAConversationRoute('conversations_through_label')).toBe(true); - expect(isAConversationRoute('conversations_through_team')).toBe(true); - expect(isAConversationRoute('dashboard')).toBe(false); - }); -}); diff --git a/app/javascript/dashboard/routes/dashboard/conversation/contact/ContactInfo.vue b/app/javascript/dashboard/routes/dashboard/conversation/contact/ContactInfo.vue index 0f4d4c129..b868be0b5 100644 --- a/app/javascript/dashboard/routes/dashboard/conversation/contact/ContactInfo.vue +++ b/app/javascript/dashboard/routes/dashboard/conversation/contact/ContactInfo.vue @@ -177,6 +177,10 @@ import alertMixin from 'shared/mixins/alertMixin'; import adminMixin from '../../../../mixins/isAdmin'; import { mapGetters } from 'vuex'; import { getCountryFlag } from 'dashboard/helper/flag'; +import { + isAConversationRoute, + getConversationDashboardRoute, +} from '../../../../helper/routeHelpers'; export default { components: { @@ -290,8 +294,15 @@ export default { await this.$store.dispatch('contacts/delete', id); this.$emit('panel-close'); this.showAlert(this.$t('DELETE_CONTACT.API.SUCCESS_MESSAGE')); - if (this.$route.name !== 'contacts_dashboard') { - this.$router.push({ name: 'contacts_dashboard' }); + + if (isAConversationRoute(this.$route.name)) { + this.$router.push({ + name: getConversationDashboardRoute(this.$route.name), + }); + } else if (this.$route.name !== 'contacts_dashboard') { + this.$router.push({ + name: 'contacts_dashboard', + }); } } catch (error) { this.showAlert(