We have mostly decided on the structure of the group permission
setting object in server_supported_permission_settings field of
register response, so this commit removes the comment mentioning
it as unstable and adds the corresponding "Changes" entry.
(cherry picked from commit 6e17b05156)
Documentation for group setting values at /api/group-setting-values
incorrectly mentioned obejct fields as 'direct_member_ids' and
'direct_subgroup_ids' when they actually are 'direct_members' and
'direct_subgroups' from the start.
(cherry picked from commit aae639a8a0)
The import code wasn't setting subscriber_count at all, resulting in a
value of 0 when dealing with imports from 3rd party apps.
We run this unconditionally, also for imports from Zulip, since this
ensures we won't inherit incorrect values, if the data we're import has
them - e.g. due to some bugs that affected the server the data came from.
(cherry picked from commit 6ab30fcced)
Earlier, when generating redirect url for search exit, we did not
encode the url in case of topic narrows. We expect some characters
to be replaced when generating hash.
This commit encodes the url for channels and topic narrows and
prevents redirecting to broken hashes.
(cherry picked from commit acc5cffae4)
This commit updates the topic URL in the message header topic menu
popover, introduced in feedb6ea2d to a
permalink having a `with` operator attached to it.
(cherry picked from commit a0441b5bcb)
Previously, clicking on links with the composebox open
didn't close it.
7391a2983f introduced a bug
where the composebox focus logic wasn't triggered at all
if drag evidence wasn't present on the target.
We now do a `e.target.closest("a").length > 0` check
like before and only prevent the default click behavior if
dragging on the target link is detected.
This allows normal link clicks to trigger the
previous composebox focus trigger logic.
Fixes: https://chat.zulip.org/#narrow/channel/9-issues/topic/composebox.20closes.20when.20going.20to.20recent.20conversations
Signed-off-by: apoorvapendse <apoorvavpendse@gmail.com>
(cherry picked from commit 7a52313f85)
I noticed that when you are in a group dm narrow
and open drafts, the overlay-message-row class
is inside different containers, and the nth last
child check does not apply for that case, which is
why the test failed.
More generally, last-child is just not a good selector for robust
testing.
Signed-off-by: apoorvapendse <apoorvavpendse@gmail.com>
(cherry picked from commit 533f177175)
Links become unclickable if the following is true:
1. Composebox is open
2. You have selected some text
Currently doing this will prevent the default click behavior
which is a big bug and can get quite annoying.
We now switch to a more robust check which only prevents the
click behavior if some drag evidence is present, determined with
`mouse_drag.is_drag`
Signed-off-by: apoorvapendse <apoorvavpendse@gmail.com>
(cherry picked from commit 7391a2983f)
Endpoints marked deprecated:
* /users/me/apns_device_token
* /users/me/android_gcm_reg_id
The older endpoints were for non-E2EE push notification case.
Fixes part of #35213.
(cherry picked from commit e8c9f4a811)
The same subscription request can contain both existing channels
and newly created channels, so we clarify here that direct message
notifications are only sent when users are subscribed to existing
channels.
Also, updates this text to use "direct message" instead of "DM".
Co-authored-by: Lauryn Menard <lauryn@zulip.com>
(cherry picked from commit 396f4d004a)
For the sake of completion, we add a test case ensuring that
the response does not contain `new_subscription_messages_sent` if
the parameter `send_new_subscription_messages` is `false`,
as mentioned in the API documentation.
(cherry picked from commit 9b7d6335c1)
When the number of new subscriptions crosses a threshold, we wish to
avoid sending DMs to the user as implemented in #31206. But there was
a bug causing announcement channel and new channel notification
messages to also not be sent.
This commit fixes that bug by ensuring that we only exclude direct
message notications.
(cherry picked from commit 18d9b686b7)
In #31206, we changed `add_subscriptions_backend` to exclude the
notification bot DMs when subscribing users to a channel when the
number of subscriptions exceeds MAX_BULK_NEW_SUBSCRIPTION_MESSAGES.
This caused a bug where new channel announcement and creation
notification messages were not being sent. Here we add a test that
confirmes the current behavior, which will be corrected in a
subsequent commit.
Co-authored-by: Lauryn Menard <lauryn@zulip.com>
(cherry picked from commit 06d2ecb482)
Revises the description of the `folder_id` parameters in the
api/create-channel, api/subscribe and api/update-stream endpoints.
(cherry picked from commit 224499b58f)
Removes send_new_subscription_messages parameter from
`POST channel/create` endpoint as Notification Bot DMs
are never sent when users are subscribed as part of
creating a new channel.
Not considered a documentable API change, since the previous parameter
never had any effect, so this is effectively just a documentation and
error-handling bug fix, not an API change relevant to implementors.
(cherry picked from commit 699c0c6200)
Updates comments in send_user_subscribed_and_new_channel_notifications
so that it is clearer what notification each "if" block of the function
is generating.
Also, moves variables that are only used in the user subscribed DMs to
that "if" block.
(cherry picked from commit dda2c6e285)
Because send_messages_for_new_subscribers also sends channel
notification messages about newly created channels, a clearer
name for is send_user_subscribed_and_new_channel_notifications.
(cherry picked from commit 8b1e536e6b)
This parameter should be marked as required, but allowing an empty
string value. Updates the description of the parameter to be more
explicit of that fact.
(cherry picked from commit 6847c5bfdb)
Adds a visible example to the PATCH /channel_folders endpoint for
reordering an organization's channel folders. So that the example
works in a normal dev environment, we also add a second channel
folder when populating the dev database.
(cherry picked from commit 4f4923ef2b)
Also, note that an empty string for the "name" parameter, when
creating or updating a channel folder, is not a valid value.
(cherry picked from commit 451e64b3e6)
Adds a log for the end-to-end latency from when the worker decided
to send push notifications & received a success response from bouncer.
Fixes part of #35368.
(cherry picked from commit c604ecb902)
This reverts commit f119c33789.
With 51cef01c29 merged, there is no need
to fetch .recipient here, as it won't be accessed by the delete messages
codepath.
(cherry picked from commit 5ef6852cfe)
This avoids a potential unnecessary message.recipient fetch required by
is_stream_message(). is_stream_message() methods precedes the addition
of the denormalized is_channel_message column and is now unnecessary.
In practice, we usually fetch Message objects with `.recipient` already,
so I don't expect any notable performance impact here - but it's still a
useful change to make.
(cherry picked from commit 51cef01c29)
In `send_push_notifications`, we were manually asserting types of the
fields returned by the `remotes/push/e2ee/notify` endpoint at runtime
and constructed the `response_data` data structure for further use.
Pydantic is the perfect tool for this task.
This commit updates the concerned code to use Pydantic's `TypeAdapter`.
No functional change.
Fixes part of #35368.
(cherry picked from commit 5a37942c61)
Refactoring, no functional change.
This commit refactors `send_e2ee_push_notification_apple`
and `send_e2ee_push_notification_android` to return a
`SentPushNotificationResult` dataclass.
It's a cleaner protocol than passing a mutable data structure
`delete_device_ids` as argument and updating it within
functions.
Fixes part of #35368.
(cherry picked from commit 3548764e21)
This commit documents the `/remotes/push/e2ee/register` endpoint.
We use auth_email="ZULIP_ORG_ID" and auth_api_key="ZULIP_ORG_KEY"
instead of "BOT_EMAIL_ADDRESS" and "BOT_API_KEY".
(cherry picked from commit f52533795b)
Until now we were not documenting bouncer's REST API endpoints.
We plan to document the newly introduced "remotes/push/e2ee/register"
and "remotes/push/e2ee/notify" endpoints.
This commit does the prep work for documenting bouncer endpoints:
* mark the older endpoints related to sending non-E2EE push
notifications as "intentionally_undocumented" - we'll remove
them in future.
* the remaining endpoints are marked pending-to-document with
helpful comments.
(cherry picked from commit 062a736097)
The 'function' variable in 'APICodeExamplesPreprocessor.generate_text'
matches the pattern of API_ENDPOINT_NAME = r"/[a-z_\-/-{}]+:[a-z]+"
It is always of the form 'endpoint_path:endpoint_method'.
There's no possibility of multiple ':'.
This commit removes the unused code block in `render_curl_example`,
which was trying to get 'auth_email' & 'auth_api_key' from 'function'.
(cherry picked from commit 9785cb4a09)