iachat/app/javascript/dashboard/components/widgets
Cayo P. R. Oliveira 9a05ff5247
feat: find scheduled message (#237)
* feat(scheduled-messages): scroll to sent message from sidebar

- Expose message_id in JBuilder serialization and push_event_data
- Add HIGHLIGHT_MESSAGE bus event for in-page message highlighting
- Add 'Go to message' button on sent scheduled messages in sidebar
- Enhance onScrollToMessage to fetch messages around target when not in DOM
- Extend Message.vue highlight to work with bus events (not just route query)
- Add i18n keys for EN and pt-BR

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* refactor(scheduled-messages): make sent card clickable instead of button

Replace the 'Go to message' button with a clickable card. The entire
sent scheduled message card now has cursor-pointer, hover highlight,
and a tooltip — clicking anywhere on it scrolls to the message.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix(scheduled-messages): address PR review feedback

- Use camelCase value for HIGHLIGHT_MESSAGE bus event ('highlightMessage')
- Show toast alert when message not found after fetch or on fetch error
- Use the MESSAGE_NOT_FOUND i18n key that was previously unused

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix(scheduled-messages): use messageId query param for find message

Replace direct bus event emission with route navigation using
?messageId= query param, reusing the same proven mechanism used by
search results and copy-message-link.

Changes:
- ScheduledMessageItem: router.replace with ?messageId= instead of
  emitting SCROLL_TO_MESSAGE directly
- ConversationView: handle ?messageId= on same-conversation (was
  previously skipped), fetch messages around target and scroll
- MessagesView: clean up ?messageId= from URL after scroll/error

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix(scheduled-messages): add toast feedback for find message

Show a persistent "Searching for message..." toast while fetching,
auto-dismissed on success. Show "Message not found" error toast if
the message cannot be located.

Uses usePendingAlert for the loading state in both ConversationView
(initial fetch) and MessagesView (fallback fetch).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: prevent scroll overshoot when navigating to message

Remove the immediate fetchPreviousMessages() call after
scrollIntoView({ behavior: smooth }). The fetch was prepending
messages above the target while the smooth scroll animation was
still running, shifting the DOM and causing the scroll to stop
short of the target message. The scroll event handler will
naturally trigger message loading when the user scrolls up later.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore(scheduled-messages): remove redundant clearMessageIdFromRoute calls

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-19 22:35:04 -03:00
..
conversation feat: find scheduled message (#237) 2026-03-19 22:35:04 -03:00
DashboardApp feat: dashboard apps on sidebar (#146) 2025-11-19 14:44:18 -03:00
FilterInput chore: Remove vue-multiselect and migrate to next components (#13506) 2026-02-17 16:40:12 +05:30
forms chore: Replace Thumbnail with Avatar (#12119) 2025-08-11 15:47:17 +05:30
mentions chore: Replace plain editor with advanced editor (#13071) 2026-01-08 15:17:54 +05:30
modal fix: Inbox delete confirmation fails due to whitespace (#12498) 2025-09-23 22:20:43 +05:30
WootWriter feat: group conversations (#228) 2026-03-19 21:56:58 -03:00
AILoader.vue chore: Remove older UI (#11720) 2025-07-01 09:43:44 +05:30
AttachmentsPreview.vue feat: new Captain Editor (#13235) 2026-01-21 13:39:07 +05:30
AutomationActionInput.vue Merge branch 'main' into chore/merge-upstream-4.11.0 2026-02-17 23:05:26 -03:00
AutomationActionScheduledMessageInput.vue fix: update default delay for scheduled messages in automation (#209) 2026-02-04 18:23:25 -03:00
AutomationActionTeamMessageInput.vue chore: Remove vue-multiselect and migrate to next components (#13506) 2026-02-17 16:40:12 +05:30
AutomationFileInput.vue Merge branch 'main' into chore/merge-upstream-4.11.0 2026-02-17 23:05:26 -03:00
BackButton.vue chore: Update buttons in integrations page (#11120) 2025-03-20 21:15:47 +05:30
ChannelItem.vue feat: TikTok channel (#12741) 2025-12-17 07:54:50 -08:00
ChatTypeTabs.vue chore: Update theme colors and add new Inter variable fonts (#13347) 2026-01-28 14:36:04 -08:00
ColorPicker.vue chore: Remove older UI (#11720) 2025-07-01 09:43:44 +05:30
EmptyState.vue chore: Remove older UI (#11720) 2025-07-01 09:43:44 +05:30
FeatureToggle.vue style: apply fixes for eslint issues [cw-3590] (#10210) 2024-10-03 15:02:12 +05:30
FloatingCallWidget.vue feat: Voice Channel (#11602) 2025-12-19 12:41:33 -08:00
InboxName.vue Merge branch 'main' into chore/merge-upstream-4.6.0 2025-09-19 19:37:28 -03:00
LoadingState.vue chore: Remove older UI (#11720) 2025-07-01 09:43:44 +05:30
SettingIntroBanner.vue chore: Remove older UI (#11720) 2025-07-01 09:43:44 +05:30
ShowMore.vue feat(ee): Review Notes for CSAT Reports (#13289) 2026-01-15 19:53:57 -08:00
TableFooter.vue style: apply fixes for eslint issues [cw-3590] (#10210) 2024-10-03 15:02:12 +05:30
TableFooterPagination.vue chore: Update buttons in dashboard (#11145) 2025-03-31 17:21:32 -07:00
TableFooterResults.vue chore: Remove older UI (#11720) 2025-07-01 09:43:44 +05:30
TableHeaderCell.vue feat: Update design for report pages (#10506) 2024-11-27 18:10:15 +08:00
ThumbnailGroup.vue chore: Replace Thumbnail with Avatar (#12119) 2025-08-11 15:47:17 +05:30
UserAvatarWithName.vue chore: Replace Thumbnail with Avatar (#12119) 2025-08-11 15:47:17 +05:30
VideoCallButton.vue chore: Update reply editor design (#10575) 2025-01-08 17:49:53 +05:30