feat: Order conversations by priority (#7053)
This commit is contained in:
@@ -5,7 +5,8 @@ class ConversationFinder
|
|||||||
SORT_OPTIONS = {
|
SORT_OPTIONS = {
|
||||||
latest: 'latest',
|
latest: 'latest',
|
||||||
sort_on_created_at: 'sort_on_created_at',
|
sort_on_created_at: 'sort_on_created_at',
|
||||||
last_user_message_at: 'last_user_message_at'
|
last_user_message_at: 'last_user_message_at',
|
||||||
|
sort_on_priority: 'sort_on_priority'
|
||||||
}.with_indifferent_access
|
}.with_indifferent_access
|
||||||
|
|
||||||
# assumptions
|
# assumptions
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ export default {
|
|||||||
SORT_BY_TYPE: {
|
SORT_BY_TYPE: {
|
||||||
LATEST: 'latest',
|
LATEST: 'latest',
|
||||||
CREATED_AT: 'sort_on_created_at',
|
CREATED_AT: 'sort_on_created_at',
|
||||||
|
PRIORITY: 'sort_on_priority',
|
||||||
},
|
},
|
||||||
ARTICLE_STATUS_TYPES: {
|
ARTICLE_STATUS_TYPES: {
|
||||||
DRAFT: 0,
|
DRAFT: 0,
|
||||||
|
|||||||
@@ -47,6 +47,9 @@
|
|||||||
},
|
},
|
||||||
"sort_on_created_at": {
|
"sort_on_created_at": {
|
||||||
"TEXT": "Created at"
|
"TEXT": "Created at"
|
||||||
|
},
|
||||||
|
"sort_on_priority": {
|
||||||
|
"TEXT": "Priority"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ATTACHMENTS": {
|
"ATTACHMENTS": {
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ describe('#messageTimestamp', () => {
|
|||||||
|
|
||||||
describe('#dynamicTime', () => {
|
describe('#dynamicTime', () => {
|
||||||
it('returns correct value', () => {
|
it('returns correct value', () => {
|
||||||
|
Date.now = jest.fn(() => new Date(Date.UTC(2023, 1, 14)).valueOf());
|
||||||
expect(TimeMixin.methods.dynamicTime(1612971343)).toEqual(
|
expect(TimeMixin.methods.dynamicTime(1612971343)).toEqual(
|
||||||
'about 2 years ago'
|
'about 2 years ago'
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
import { MESSAGE_TYPE } from 'shared/constants/messages';
|
import {
|
||||||
|
MESSAGE_TYPE,
|
||||||
|
CONVERSATION_PRIORITY_ORDER,
|
||||||
|
} from 'shared/constants/messages';
|
||||||
import { applyPageFilters } from './helpers';
|
import { applyPageFilters } from './helpers';
|
||||||
|
|
||||||
export const getSelectedChatConversation = ({
|
export const getSelectedChatConversation = ({
|
||||||
@@ -13,6 +16,12 @@ const getters = {
|
|||||||
const comparator = {
|
const comparator = {
|
||||||
latest: (a, b) => b.last_activity_at - a.last_activity_at,
|
latest: (a, b) => b.last_activity_at - a.last_activity_at,
|
||||||
sort_on_created_at: (a, b) => a.created_at - b.created_at,
|
sort_on_created_at: (a, b) => a.created_at - b.created_at,
|
||||||
|
sort_on_priority: (a, b) => {
|
||||||
|
return (
|
||||||
|
CONVERSATION_PRIORITY_ORDER[a.priority] -
|
||||||
|
CONVERSATION_PRIORITY_ORDER[b.priority]
|
||||||
|
);
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
return allConversations.sort(comparator[chatSortFilter]);
|
return allConversations.sort(comparator[chatSortFilter]);
|
||||||
|
|||||||
@@ -130,6 +130,66 @@ describe('#getters', () => {
|
|||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
it('order conversations based on priority', () => {
|
||||||
|
const state = {
|
||||||
|
allConversations: [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
messages: [
|
||||||
|
{
|
||||||
|
content: 'test1',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
priority: 'low',
|
||||||
|
created_at: 1683645801,
|
||||||
|
last_activity_at: 2466424490,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
messages: [{ content: 'test2' }],
|
||||||
|
priority: 'urgent',
|
||||||
|
created_at: 1652109801,
|
||||||
|
last_activity_at: 1466424480,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
messages: [{ content: 'test3' }],
|
||||||
|
priority: 'medium',
|
||||||
|
created_at: 1652109801,
|
||||||
|
last_activity_at: 1466421280,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
chatSortFilter: 'sort_on_priority',
|
||||||
|
};
|
||||||
|
|
||||||
|
expect(getters.getAllConversations(state)).toEqual([
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
messages: [{ content: 'test2' }],
|
||||||
|
priority: 'urgent',
|
||||||
|
created_at: 1652109801,
|
||||||
|
last_activity_at: 1466424480,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
messages: [{ content: 'test3' }],
|
||||||
|
priority: 'medium',
|
||||||
|
created_at: 1652109801,
|
||||||
|
last_activity_at: 1466421280,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
messages: [
|
||||||
|
{
|
||||||
|
content: 'test1',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
priority: 'low',
|
||||||
|
created_at: 1683645801,
|
||||||
|
last_activity_at: 2466424490,
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
describe('#getUnAssignedChats', () => {
|
describe('#getUnAssignedChats', () => {
|
||||||
it('order returns only chats assigned to user', () => {
|
it('order returns only chats assigned to user', () => {
|
||||||
|
|||||||
@@ -27,6 +27,14 @@ export const CONVERSATION_PRIORITY = {
|
|||||||
MEDIUM: 'medium',
|
MEDIUM: 'medium',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const CONVERSATION_PRIORITY_ORDER = {
|
||||||
|
urgent: 1,
|
||||||
|
high: 2,
|
||||||
|
medium: 3,
|
||||||
|
low: 4,
|
||||||
|
null: 5,
|
||||||
|
};
|
||||||
|
|
||||||
// Size in mega bytes
|
// Size in mega bytes
|
||||||
export const MAXIMUM_FILE_UPLOAD_SIZE = 40;
|
export const MAXIMUM_FILE_UPLOAD_SIZE = 40;
|
||||||
export const MAXIMUM_FILE_UPLOAD_SIZE_TWILIO_SMS_CHANNEL = 5;
|
export const MAXIMUM_FILE_UPLOAD_SIZE_TWILIO_SMS_CHANNEL = 5;
|
||||||
|
|||||||
Reference in New Issue
Block a user