chore: added a new sort by unread option for conversations (CW-7152) (#14512)
## Description Added a new option for the sort by option in conversation filters called unread. This is to filter out unread conversations. Fixes # CW-7152 ## Type of change Please delete options that are not relevant. - [ ] Bug fix (non-breaking change which fixes an issue) - [x] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality not to work as expected) - [ ] This change requires a documentation update ## How Has This Been Tested? Tested manually in local. <img width="1397" height="603" alt="Screenshot 2026-05-20 at 10 40 20 PM" src="https://github.com/user-attachments/assets/6c60263e-907b-419f-a7ed-06010bbe8736" /> ## Checklist: - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my code - [ ] I have commented on my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published in downstream modules
This commit is contained in:
@@ -308,6 +308,15 @@ function filterByAssigneeTab(conversations) {
|
||||
return [...conversations];
|
||||
}
|
||||
|
||||
function sortByUnreadStatus(conversations) {
|
||||
return [...conversations].sort((a, b) => {
|
||||
const unreadCountDiff = (b.unread_count || 0) - (a.unread_count || 0);
|
||||
if (unreadCountDiff !== 0) return unreadCountDiff;
|
||||
|
||||
return (b.last_activity_at || 0) - (a.last_activity_at || 0);
|
||||
});
|
||||
}
|
||||
|
||||
const conversationList = computed(() => {
|
||||
let localConversationList = [];
|
||||
|
||||
@@ -337,6 +346,13 @@ const conversationList = computed(() => {
|
||||
});
|
||||
}
|
||||
|
||||
if (
|
||||
!hasAppliedFiltersOrActiveFolders.value &&
|
||||
activeSortBy.value === wootConstants.SORT_BY_TYPE.UNREAD
|
||||
) {
|
||||
localConversationList = sortByUnreadStatus(localConversationList);
|
||||
}
|
||||
|
||||
return localConversationList;
|
||||
});
|
||||
|
||||
|
||||
@@ -78,6 +78,10 @@ const chatSortOptions = computed(() => [
|
||||
label: t('CHAT_LIST.SORT_ORDER_ITEMS.created_at_asc.TEXT'),
|
||||
value: 'created_at_asc',
|
||||
},
|
||||
{
|
||||
label: t('CHAT_LIST.SORT_ORDER_ITEMS.unread.TEXT'),
|
||||
value: 'unread',
|
||||
},
|
||||
{
|
||||
label: t('CHAT_LIST.SORT_ORDER_ITEMS.priority_desc.TEXT'),
|
||||
value: 'priority_desc',
|
||||
|
||||
@@ -27,6 +27,7 @@ export default {
|
||||
WAITING_SINCE_ASC: 'waiting_since_asc',
|
||||
WAITING_SINCE_DESC: 'waiting_since_desc',
|
||||
PRIORITY_DESC_CREATED_AT_ASC: 'priority_desc_created_at_asc',
|
||||
UNREAD: 'unread',
|
||||
},
|
||||
ARTICLE_STATUS_TYPES: {
|
||||
DRAFT: 0,
|
||||
|
||||
@@ -79,6 +79,9 @@
|
||||
},
|
||||
"priority_desc_created_at_asc": {
|
||||
"TEXT": "Priority: Highest first, Created: Oldest first"
|
||||
},
|
||||
"unread": {
|
||||
"TEXT": "Unread Count: Highest first"
|
||||
}
|
||||
},
|
||||
"ATTACHMENTS": {
|
||||
|
||||
Reference in New Issue
Block a user