feat(TopBar): add a search messages button#18417
Conversation
|
Without looking at the code at all:
Please add screenshots to assist the review process Also your commit is missing the DCO to confirm you did the changes and the license is okay: |
|
Besides, |
05a95c1 to
a22d52d
Compare
|
Thanks for the feedback! I've updated the PR:
One thing worth a look during review: the button needed a small change in Happy to adjust the button placement or the approach if you'd prefer a different one. |
Add a magnify icon button to the TopBar that opens the message search
directly from the chat view. The button is only shown when the user is
authenticated, not in a call, and not in sidebar mode.
The message search (SearchMessagesTab) already exists but is only
reachable through the RightSidebar, which makes it hard to discover.
The button reuses the existing sidebarStore.showSidebar({ activeTab })
flow; RightSidebar.handleUpdateActive now routes the 'search' value to
handleUpdateState('search') so the sidebar opens straight on the search
view instead of falling back to the participants tab.
Assisted-by: ClaudeCode:claude-opus-4-8
Signed-off-by: Jafet Lopez <jafetlopezch@gmail.com>
a22d52d to
10f284a
Compare
|
Hello there, We hope that the review process is going smooth and is helpful for you. We want to ensure your pull request is reviewed to your satisfaction. If you have a moment, our community management team would very much appreciate your feedback on your experience with this PR review process. Your feedback is valuable to us as we continuously strive to improve our community developer experience. Please take a moment to complete our short survey by clicking on the following link: https://cloud.nextcloud.com/apps/forms/s/i9Ago4EQRZ7TWxjfmeEpPkf6 Thank you for contributing to Nextcloud and we hope to hear from you soon! (If you believe you should not receive this message, you can add yourself to the blocklist.) |
|
Sorry, the PR got lost behind all the other work. |
|
Nice! This is definitely an improvement for searching for messages and I'd prefer we remove it from the right sidebar too. My only concern is that there's now 3 searches visible almost all the time on the screen. Considering we had discussed the possibility of combining it with the left search somehow, I'm wondering if directly implementing that makes more sense? What do you think @nickvergessen @Antreesy |
My take would be still to have 'left search' as global (all messages across instance) and 'right search' as conversation-scoped |
Antreesy
left a comment
There was a problem hiding this comment.
Please see review comments. I tried with these changes and pretty much satisfied with the result =)
| :title="t('spreed', 'Search messages')" | ||
| :aria-label="t('spreed', 'Search messages')" | ||
| variant="tertiary" | ||
| @click="openSidebar('search')"> |
There was a problem hiding this comment.
To ensure smooth sidebar animation, when open, add this:
diff --git a/src/components/UIShared/SearchBox.vue b/src/components/UIShared/SearchBox.vue
--- a/src/components/UIShared/SearchBox.vue (revision 061dcb50567122589c59b0d56d3d3d23437d0ffa)
+++ b/src/components/UIShared/SearchBox.vue (date 1784043601178)
@@ -127,10 +127,11 @@
},
/**
- * Focuses the input
+ * Focuses the input. `preventScroll` is on to avoid scrolling
+ * hidden containers (e.g. sidebar) into view and aborting animations.
*/
focus() {
- this.$refs.searchConversations.focus()
+ this.$refs.searchConversations.focus({ preventScroll: true })
},
getTrailingButton() {
There was a problem hiding this comment.
Also tab id is 'search-messages', this should be used
| if (active === 'search') { | ||
| // 'search' is not a real tab: route it to the search content state | ||
| this.handleUpdateState('search') | ||
| return | ||
| } |
There was a problem hiding this comment.
To support all cases:
| if (active === 'search') { | |
| // 'search' is not a real tab: route it to the search content state | |
| this.handleUpdateState('search') | |
| return | |
| } | |
| switch (active) { | |
| case 'search-messages': | |
| this.contentState = 'search' | |
| break | |
| case 'threads': | |
| this.contentState = 'threads' | |
| break | |
| default: | |
| this.contentState = 'default' | |
| } |
| <CalendarEventsDialog v-if="showCalendarEvents" :token="token" /> | ||
|
|
||
| <!-- Search messages button --> | ||
| <NcButton |
There was a problem hiding this comment.
As discussed above, same button should be removed from RightSidebarContent.vue
Make sure there is no more space reserved for it in these components CSS (otherwise name will be cropped)
☑️ Resolves
The in-conversation message search is hard to find: the only way to reach it is through the right sidebar. This adds a search button to the conversation top bar that opens it directly.
While wiring the button I noticed
showSidebar({ activeTab: 'search' })landed on the participants tab, since'search'is a content state and not a tab id.RightSidebar.handleUpdateActivenow forwards'search'tohandleUpdateState('search').The first version of this PR also bound Ctrl+F, removed after @Antreesy pointed out it is already taken by the conversation search in the left navigation.
AI (if applicable)
Developed with Claude Code (claude-opus-4-8), commit carries the
Assisted-bytrailer. Reviewed and verified on a local Nextcloud 34 + Talk stable34 instance.🖌️ UI Checklist
🖼️ Screenshots / Screencasts
🏁 Checklist