-
Notifications
You must be signed in to change notification settings - Fork 343
Channel link autocomplete #1902
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Exciting! Thanks for building this. Just to record here what I said on the team call yesterday: for this PR, we can start the reviews in parallel with you writing the tests. So I'd suggest going ahead and adding those docs and comments next — then once you consider the PR all ready except for the tests, just mention that here and add the "maintainer review" label. |
5a8171d
to
6671cfa
Compare
Thanks @gnprice for mentioning this. This is now ready for an initial review. (While working on the first todo, I realized that there were a few other places that needed some changes, which caused a delay 😀) |
6671cfa
to
fe25a32
Compare
(just rebased atop main with conflicts resolved) |
fe25a32
to
480e787
Compare
In the following commits, this will be used as one of the criteria for sorting channels in channel link autocomplete.
480e787
to
6b2fb06
Compare
There are new changes made to `stream op: delete` event in server-10: - The `streams` field which used to be an array of the just-deleted channel objects is now an array of objects which only contains ID of the just-deleted channels (this would crash the app before this commit). - The same `streams` field is also deprecated and will be removed in a future release. - As a replacement to `streams`, `stream_ids` is introduced which is an array of the just-deleted channel IDs.
A small helper method for casting an object to a specific type, or returning `null` if that's not successfull. This will become handy in the following commits where we want to cast a `ZulipStream` object to a `Subscription` object.
These two methods were introduced but never called.
…sult It seems like the params `User` and `UserGroup` are not used inside the respected `_rankUserResult` and `_rankUserGroupResult` methods, so good to remove.
Also, generalize the dartdoc of NameMatchQuality. For almost all types of autocompletes, the matching mechanism/quality to an autocomplete query seems to be the same with rare exceptions (at the time of writing this, only the emoji autocomplete matching mechanism is different).
As of this commit, it's not yet possible in the app to initiate a channel link autocomplete interaction. So in the widgets code that would consume the results of such an interaction, we just throw for now, leaving that to be implemented in a later commit.
For this commit we temporarily intercept the query at the AutocompleteField widget, to avoid invoking the widgets that are still unimplemented. That lets us defer those widgets' logic to a separate later commit.
This will make it easy to use the fragment string in several other places, such as in the next commits where we need to create a fallback markdown link for a channel.
6b2fb06
to
5072dce
Compare
@chrisbobbe Pushed a new revision with tests included. |
Thanks for this, and apologies for my delay in reviewing! Here's a review of the first six commits: 05c8437 channel: Add isRecentlyActive field plus some comments on later commits where I happened to see something interesting. 🙂 |
TODOs:
Adding some dartdocs and commentsTestsFixes-partly: #124 (topic link autocomplete will be its own PR)
Screenshots
Screen recording
Screen.Recording.2025-10-08.at.9.08.43.PM.mov