diff --git a/app/javascript/dashboard/routes/dashboard/conversation/conversation.routes.js b/app/javascript/dashboard/routes/dashboard/conversation/conversation.routes.js index 241c70f45..d58617f30 100644 --- a/app/javascript/dashboard/routes/dashboard/conversation/conversation.routes.js +++ b/app/javascript/dashboard/routes/dashboard/conversation/conversation.routes.js @@ -1,5 +1,6 @@ /* eslint arrow-body-style: 0 */ import { frontendURL } from '../../../helper/URLHelper'; +import store from '../../../store'; import ConversationView from './ConversationView.vue'; const CONVERSATION_PERMISSIONS = [ @@ -10,6 +11,37 @@ const CONVERSATION_PERMISSIONS = [ 'conversation_participating_manage', ]; +const isFolderAvailable = async folderId => { + let folders = store.getters['customViews/getConversationCustomViews']; + if (!folders.length) { + await store.dispatch('customViews/get', 'conversation'); + folders = store.getters['customViews/getConversationCustomViews']; + } + return folders.some(folder => folder.id === Number(folderId)); +}; + +const redirectFolderListIfUnavailable = async (to, _from, next) => { + if (await isFolderAvailable(to.params.id)) { + next(); + return; + } + next({ name: 'home', params: { accountId: to.params.accountId } }); +}; + +const redirectFolderConversationIfUnavailable = async (to, _from, next) => { + if (await isFolderAvailable(to.params.id)) { + next(); + return; + } + next({ + name: 'inbox_conversation', + params: { + accountId: to.params.accountId, + conversation_id: to.params.conversation_id, + }, + }); +}; + export default { routes: [ { @@ -113,6 +145,7 @@ export default { meta: { permissions: CONVERSATION_PERMISSIONS, }, + beforeEnter: redirectFolderListIfUnavailable, component: ConversationView, props: route => ({ foldersId: route.params.id }), }, @@ -125,6 +158,7 @@ export default { permissions: CONVERSATION_PERMISSIONS, }, component: ConversationView, + beforeEnter: redirectFolderConversationIfUnavailable, props: route => ({ conversationId: route.params.conversation_id, foldersId: route.params.id,