This adds a new field in the "Organization settings" menu for the
moderation request channel. It only includes private channels as the
dropdown options.
Fixes#20047.
Co-authored-by: Adam Sah <140002+asah@users.noreply.github.com>
Co-authored-by: Alya Abbott <alya@zulip.com>
Fixed feature level in topic name where notification is sent. Also,
changelog entries will be included in the notification message instead
of only changed endpoints.
So that we don't exceed the limit of 250 invoice items for a Stripe
invoice, we bundle additional license ledger entries into a single
invoice item when we invoice the plan.
This updates the `/export/realm/consents` API endpoint to also include
`email_address_visibility` field for each item in the `export_consents`
object.
This is a prep commit to add a warnings in the "Start export?"
confirmation modal for when there are no usable owner account.
8ab400b95d adds a couple guardrails
againts generating an exporting realm with no usable owner and admin
accounts.
As per #34275, this commit lifts these guardrails to allow generating
export with no usable owner accounts. Export data without usable user
account might still have other uses other than for import.
Since `compose_validate.validate` sets the error messages
for posting policy, it is important that it is called before
we check for posting policy errors.
To fix it, we remove independent calls to
check_posting_policy_for_compose_box and call it after validation.
This also fixes a bug where compose posting policy error is
not displayed when a user is trying to DM a recipient with no
previous message history and the user is not allowed to start
a new DM conversation.
Co-authored-by: Lauryn Menard <lauryn@zulip.com>
Replace fixed margin approach with flexbox layout for proper horizontal
alignment of "Deactivate account" and "Deactivate organization" buttons.
Includes responsive design for narrow screens.
Fixes#36104.
Earlier, we were passing invalid `data` argument to
`firebase_messaging.Message` which would result in an error while
sending E2EE push notification for android devices.
The API requires all keys and values in the `data` dictionary
to be strings. One of the value was an integer.
This commit fixes the bug by converting the values to str if they
are not.
Signed-off-by: Prakhar Pratyush <prakhar@zulip.com>
The encrypted push notification payload previously included a `pm_users`
field for group direct messages.
This commit replaces the `pm_users` field with `recipient_user_ids`.
(new name to migrate from the old "private" keyword)
It's a sorted array of all user IDs participating in a 1:1 or group DM
conversation, including both `user_id` and `sender_id`.
* Previously, `pm_users` was included only for group DMs;
`recipient_user_ids` is present for both 1:1 and group DM conversations.
* The old `pm_users` field was a string containing a comma-separated
list of sorted user IDs. `recipient_user_ids` has a more structured
array format.
Signed-off-by: Prakhar Pratyush <prakhar@zulip.com>
This migration handles cases where same anonymous group was used
for a setting of multiple streams by creating new anonymous groups
for them with the same set of members and subgroups. This was
possible when multiple streams were created in a single request
to "POST /users/me/subscriptions" endpoint.
When creating multiple streams using "POST /users/me/subscriptions"
endpoint, same anonymous group was being used for settings of all
the streams, like if can_subscribe_group was being set to an
anonymous group, all streams created using that endpoint would
use the same anonymous group for can_subscribe_group setting.
Using the same anonymous groups for multiple streams caused
unintended behavior -
- Changing a setting for one stream also changed it for all
other streams sharing the the same anonymous group, because
eventually the members and subgroups of the group were updated.
- Changing the setting to a named user group failed because
`do_change_stream_permission_group` attempts to delete the
anonymous group during the update. However, deletion of
anonymous group is restricted if they are still referenced
by setting fields.
This commit fixes this so that one anonymous group is used
only for one setting for a single stream.
We changed the API in 53983c9 so that the server nows sends explicit
peer_remove events before the deactivation event. This means that we
should not have to remove subscribers when receiving a user deactivation
event.
We convert the existing function to raise a blueslip error instead if
our understanding of the system is somehow wrong. That way the error
would be caught instead of slipping through the cracks.
Users are removed from archived streams as well on deactivation. Since
archived stream subscriber list is also visible in channel settings, we
should send peer_remove for it as well.
Earlier:
When a user clicked the desktop notification, but before we finished
processing that click, the message deletion got processed.
It resulted in an error.
This commit fixes the bug by taking the user to the conversation
where the now-deleted message had been prior to deletion -
narrow to the message's near view.
Signed-off-by: Prakhar Pratyush <prakhar@zulip.com>
Documents changes made in #36038. Also:
- Updates docs follow modern patterns and describe up-to-date UI.
- Sets expectation that users should upload custom avatars.
This commit adds code to support cropping realm logo, icon and
user avatar using "ImageEditor" plugin from Uppy.
We do not use Dashboard plugin from Uppy, which is the default
way to allow cropping using Uppy, since we do not want to
show dashboard UI from uppy and we would need some workarounds
which are not trivial to not show the dashboard UI in the upload
workflow.
Fixes part of #24324.
The "name" field included in the users.info API response is actually the
senders Slack username, which may be the prefix of their email address.
This updates the integration to use the "real_name" field instead, which
is the senders full name.
Fixes#36090.