iachat/app/javascript/dashboard/store/modules
Shivam Mishra 50efd28d16
feat: Add support for frontend filtering of conversations (#11111)
This pull request includes significant changes to the filtering logic
for conversations in the frontend, here's a summary of the changes

This includes adding a `matchesFilters` method that evaluates a
conversation against the applied filters. It does so by first evaluating
all the conditions, and later converting the results into a JSONLogic
object that can be evaluated according to Postgres operator precedence

### Alignment Specs

To ensure the frontend and backend implementations always align, we've
added tests on both sides with same cases, for anyone fixing any
regressions found in the frontend implementation, they need to ensure
the existing tests always pass.

Test Case | JavaScript Spec | Ruby Spec | Match?
-- | -- | -- | --
**A AND B OR C** | Present | Present | Yes
Matches when all conditions are true | Present | Present | Yes
Matches when first condition is false but third is true | Present |
Present | Yes
Matches when first and second conditions are false but third is true |
Present | Present | Yes
Does not match when all conditions are false | Present | Present | Yes
**A OR B AND C** | Present | Present | Yes
Matches when first condition is true | Present | Present | Yes
Matches when second and third conditions are true | Present | Present |
Yes
**A AND B OR C AND D** | Present | Present | Yes
Matches when first two conditions are true | Present | Present | Yes
Matches when last two conditions are true | Present | Present | Yes
**Mixed Operators (A AND (B OR C) AND D)** | Present | Present | Yes
Matches when all conditions in the chain are true | Present | Present |
Yes
Does not match when the last condition is false | Present | Present |
Yes

---------

Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com>
Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com>
Co-authored-by: Pranav <pranav@chatwoot.com>
2025-03-24 19:39:04 -07:00
..
contacts feat(v4): Compose new conversation without multiple clicks (#10545) 2024-12-05 20:16:29 -08:00
conversations feat: Add support for frontend filtering of conversations (#11111) 2025-03-24 19:39:04 -07:00
helpCenterArticles chore: Help center improvements (#10712) 2025-01-21 13:50:01 +05:30
helpCenterCategories feat(v4): Update the help center portal design (#10296) 2024-10-23 22:09:36 -07:00
helpCenterPortals feat(v4): Update the help center portal design (#10296) 2024-10-23 22:09:36 -07:00
notifications feat: Add unread badge to sidebar for inbox view (#10803) 2025-01-31 15:14:10 +05:30
specs feat: remove sentry log and allow same timestamp (#11100) 2025-03-18 15:08:28 +05:30
teams feat(v4): Update the report pages to show aggregate values (#10766) 2025-01-28 09:19:18 +05:30
accounts.js feat: Replace rtlMixin to a composable (#9924) 2024-08-12 15:50:21 +05:30
agentBots.js feat: Vite + vue 3 💚 (#10047) 2024-10-02 00:36:30 -07:00
agents.js feat(v4): Update the report pages to show aggregate values (#10766) 2025-01-28 09:19:18 +05:30
attributes.js fix: Update contact details page errors (#10536) 2024-12-04 13:58:53 -08:00
auditlogs.js feat: audit logs UI (#6803) 2023-04-17 19:11:05 +05:30
auth.js fix: Fix issue with profile picture not updating (#10532) 2024-12-04 15:02:29 -08:00
automations.js feat: Update the design for automation (#10002) 2024-08-22 16:22:54 +05:30
bulkActions.js feat: Adds support for all snooze option in bulk actions (#9361) 2024-05-09 19:27:31 +05:30
campaigns.js feat(v4): Update the campaigns page design (#10371) 2024-10-31 11:57:13 +05:30
cannedResponse.js feat: Update the design for canned responses (#9903) 2024-08-07 09:43:47 -07:00
contactConversations.js feat(v4): Add new contact details screen (#10504) 2024-12-03 21:29:47 -08:00
contactLabels.js feat: Vite + vue 3 💚 (#10047) 2024-10-02 00:36:30 -07:00
contactNotes.js feat(v4): Add new contact details screen (#10504) 2024-12-03 21:29:47 -08:00
conversationLabels.js feat: Vite + vue 3 💚 (#10047) 2024-10-02 00:36:30 -07:00
conversationMetadata.js feat: Vite + vue 3 💚 (#10047) 2024-10-02 00:36:30 -07:00
conversationPage.js feat: Vite + vue 3 💚 (#10047) 2024-10-02 00:36:30 -07:00
conversationSearch.js chore: Search improvements (#10801) 2025-02-03 19:34:50 +05:30
conversationStats.js chore: Reduce meta conversation API calls (#11116) 2025-03-20 13:08:59 -07:00
conversationTypingStatus.js feat: Vite + vue 3 💚 (#10047) 2024-10-02 00:36:30 -07:00
conversationWatchers.js feat: Vite + vue 3 💚 (#10047) 2024-10-02 00:36:30 -07:00
csat.js feat: more CSAT filters (#7038) 2023-05-18 22:50:46 +05:30
customRole.js chore: Custom Roles to manage permissions [ UI ] (#9865) 2024-09-17 11:40:11 -07:00
customViews.js feat: Improve Contact list (#10522) 2024-12-02 18:23:41 -08:00
dashboardApps.js feat: Add the ability to create dashboard apps from the UI (#4924) 2022-07-08 15:55:32 +07:00
draftMessages.js feat: Vite + vue 3 💚 (#10047) 2024-10-02 00:36:30 -07:00
inboxAssignableAgents.js feat: Vite + vue 3 💚 (#10047) 2024-10-02 00:36:30 -07:00
inboxes.js feat(v4): Add new contact details screen (#10504) 2024-12-03 21:29:47 -08:00
inboxMembers.js Chore: Inbox Members API improvements (#3008) 2021-09-14 11:55:02 +05:30
integrations.js feat: Vite + vue 3 💚 (#10047) 2024-10-02 00:36:30 -07:00
labels.js feat: multiple UX improvements to labels (#7358) 2023-06-25 18:49:49 +05:30
macros.js feat: Add API module and Vuex store for Macros (#5603) 2022-10-11 22:54:17 -07:00
reports.js feat: Add live report for teams (#10849) 2025-03-12 16:03:09 -07:00
sla.js feat: add option to delete and disable edits for SLA (#9108) 2024-03-15 12:21:32 +05:30
SLAReports.js feat: Download SLA reports (#9201) 2024-04-08 20:51:34 -07:00
summaryReports.js feat(v4): Update the report pages to show aggregate values (#10766) 2025-01-28 09:19:18 +05:30
teamMembers.js feat: Vite + vue 3 💚 (#10047) 2024-10-02 00:36:30 -07:00
userNotificationSettings.js feat: Vite + vue 3 💚 (#10047) 2024-10-02 00:36:30 -07:00
webhooks.js feat: Add event subscription option to webhooks (#4540) 2022-04-25 17:44:42 +05:30