From 2fab5f4c9a52a45b7b4890ba01b1724c375616cf Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Wed, 1 Oct 2025 16:53:10 +0530 Subject: [PATCH] feat: sort the conversations before rendering --- .../store/modules/conversations/getters.js | 51 +++++++++++-------- 1 file changed, 29 insertions(+), 22 deletions(-) diff --git a/app/javascript/dashboard/store/modules/conversations/getters.js b/app/javascript/dashboard/store/modules/conversations/getters.js index 9f5744fbb..37a8e5562 100644 --- a/app/javascript/dashboard/store/modules/conversations/getters.js +++ b/app/javascript/dashboard/store/modules/conversations/getters.js @@ -75,14 +75,17 @@ const getters = { getMineChats: (_state, _, __, rootGetters) => activeFilters => { const currentUserID = rootGetters.getCurrentUser?.id; - return _state.allConversations.filter(conversation => { - const { assignee } = conversation.meta; - const isAssignedToMe = assignee && assignee.id === currentUserID; - const shouldFilter = applyPageFilters(conversation, activeFilters); - const isChatMine = isAssignedToMe && shouldFilter; + // Sort after filtering so tab lists keep server pagination order despite merge appends. + return _state.allConversations + .filter(conversation => { + const { assignee } = conversation.meta; + const isAssignedToMe = assignee && assignee.id === currentUserID; + const shouldFilter = applyPageFilters(conversation, activeFilters); + const isChatMine = isAssignedToMe && shouldFilter; - return isChatMine; - }); + return isChatMine; + }) + .sort((a, b) => sortComparator(a, b, _state.chatSortFilter)); }, getAppliedConversationFiltersV2: _state => { // TODO: Replace existing one with V2 after migrating the filters to use camelcase @@ -96,11 +99,13 @@ const getters = { return hasAppliedFilters ? filterQueryGenerator(_state.appliedFilters) : []; }, getUnAssignedChats: _state => activeFilters => { - return _state.allConversations.filter(conversation => { - const isUnAssigned = !conversation.meta.assignee; - const shouldFilter = applyPageFilters(conversation, activeFilters); - return isUnAssigned && shouldFilter; - }); + return _state.allConversations + .filter(conversation => { + const isUnAssigned = !conversation.meta.assignee; + const shouldFilter = applyPageFilters(conversation, activeFilters); + return isUnAssigned && shouldFilter; + }) + .sort((a, b) => sortComparator(a, b, _state.chatSortFilter)); }, getAllStatusChats: (_state, _, __, rootGetters) => activeFilters => { const currentUser = rootGetters.getCurrentUser; @@ -110,17 +115,19 @@ const getters = { const permissions = getUserPermissions(currentUser, currentAccountId); const userRole = getUserRole(currentUser, currentAccountId); - return _state.allConversations.filter(conversation => { - const shouldFilter = applyPageFilters(conversation, activeFilters); - const allowedForRole = applyRoleFilter( - conversation, - userRole, - permissions, - currentUserId - ); + return _state.allConversations + .filter(conversation => { + const shouldFilter = applyPageFilters(conversation, activeFilters); + const allowedForRole = applyRoleFilter( + conversation, + userRole, + permissions, + currentUserId + ); - return shouldFilter && allowedForRole; - }); + return shouldFilter && allowedForRole; + }) + .sort((a, b) => sortComparator(a, b, _state.chatSortFilter)); }, getChatListLoadingStatus: ({ listLoadingStatus }) => listLoadingStatus, getAllMessagesLoaded(_state) {