Bug : Inbox Filter indicator is removed when a conversation is selected (#535)

This commit is contained in:
Nithin David Thomas 2020-02-22 14:24:51 +05:30 committed by GitHub
parent bc884ae184
commit 330bf87f08
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 51 additions and 4 deletions

View file

@ -46,7 +46,7 @@ import getEmojiSVG from '../emoji/utils';
import conversationMixin from '../../../mixins/conversations';
import timeMixin from '../../../mixins/time';
import router from '../../../routes';
import { frontendURL } from '../../../helper/URLHelper';
import { frontendURL, conversationUrl } from '../../../helper/URLHelper';
export default {
components: {
@ -95,9 +95,9 @@ export default {
methods: {
cardClick(chat) {
router.push({
path: frontendURL(`conversations/${chat.id}`),
});
const { activeInbox } = this;
const path = conversationUrl(activeInbox, chat.id);
router.push({ path: frontendURL(path) });
},
extractMessageText(chatItem) {
if (chatItem.content) {

View file

@ -4,3 +4,10 @@ export const frontendURL = (path, params) => {
const stringifiedParams = params ? `?${queryString.stringify(params)}` : '';
return `/app/${path}${stringifiedParams}`;
};
export const conversationUrl = (activeInbox, id) => {
const path = activeInbox
? `inbox/${activeInbox}/conversations/${id}`
: `conversations/${id}`;
return path;
};

View file

@ -0,0 +1,21 @@
import { frontendURL, conversationUrl } from '../URLHelper';
describe('#URL Helpers', () => {
describe('conversationUrl', () => {
it('should return direct conversation URL if activeInbox is nil', () => {
expect(conversationUrl(undefined, 1)).toBe('conversations/1');
});
it('should return ibox conversation URL if activeInbox is not nil', () => {
expect(conversationUrl(2, 1)).toBe('inbox/2/conversations/1');
});
});
describe('frontendURL', () => {
it('should return url without params if params passed is nil', () => {
expect(frontendURL('main', null)).toBe('/app/main');
});
it('should return url without params if params passed is not nil', () => {
expect(frontendURL('main', { ping: 'pong' })).toBe('/app/main?ping=pong');
});
});
});

View file

@ -6,6 +6,7 @@ export default {
'home',
'inbox_dashboard',
'inbox_conversation',
'conversation_through_inbox',
'settings_account_reports',
'billing_deactivated',
'profile_settings',

View file

@ -69,6 +69,12 @@ export default {
this.$store.dispatch('setActiveInbox', this.inboxId);
}
break;
case 'conversation_through_inbox':
if (this.inboxId) {
this.$store.dispatch('setActiveInbox', this.inboxId);
}
this.setActiveChat();
break;
default:
this.$store.dispatch('setActiveInbox', null);
break;

View file

@ -31,5 +31,17 @@ export default {
return { conversationId: route.params.conversation_id };
},
},
{
path: frontendURL('inbox/:inbox_id/conversations/:conversation_id'),
name: 'conversation_through_inbox',
roles: ['administrator', 'agent'],
component: ConversationView,
props: route => {
return {
conversationId: route.params.conversation_id,
inboxId: route.params.inbox_id,
};
},
},
],
};