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.
Slack integration requires Slack API key and will make API calls to
Slack. It'll also trip at `validate_account_and_subdomain` when
receiving Slack calls from a dev environemnt. So this commit removes it
from the tool.
Migrate `stream_name` in Integration class to `channel` in
`WebhookScreenshotConfig` and `FixturelessScreenshotConfig` dataclasses.
`stream_name` is being used only when generating screenshots, and
hence belongs better in the screenshot config objects.
In the next commit, the ScreenshotConfig will be added as an Integration
property.
Earlier, while sending notification if `apns_context=None` - we logged:
"APNs: Dropping a notification because nothing configured. Set
ZULIP_SERVICES_URL (or APNS_CERT_FILE)." which is not accurate for E2EE
case.
For the non-E2EE case it is correct because configuring
ZULIP_SERVICES_URL results in transfering the responsbility to
make API call to APNs to the bouncer. Or they can configure
APNS_CERT_FILE if they want to send directly.
In E2EE case, the `send_e2ee_push_notification_apple` is part of
bouncer so configuring `ZULIP_SERVICES_URL` doesn't help. One needs
to configure either `APNS_TOKEN_KEY_FILE` or `APNS_CERT_FILE`.
Message to log is updated accordingly + severity increased from
DEBUG to ERROR.
Signed-off-by: Prakhar Pratyush <prakhar@zulip.com>
If `ANDROID_FCM_CREDENTIALS_PATH` is unset it results in fcm_app=None.
We should log error in this case and return, not doing so will result
in runtime error.
Signed-off-by: Prakhar Pratyush <prakhar@zulip.com>
The port redirect is only needed for document requests. When doing it
for all requests, including astro assets, hot reload in dev server
stopped working since the assets could not be resolved on the hot
reload.
We redirect non /help URLs to port 9991 when help center is running on
9995, since our webapp lives on 9991. When we run `run-dev` with
`--only-help-center` flag, the help center runs directly on port 9991.
Placed text just below the "Create organization" button.
Used styling to match "Learn how to import..." above.
Hidden the checkbox after the verification is done.
The verification text is hidden after 2s with a fadeout after 1s delay.
Fixes#36086
While sending push notifications for a user in
realm with `require_e2ee_push_notifications=true` and no
iOS device registered, it resulted in an error.
Also, while sending notif to revoke in realm with
`require_e2ee_push_notifications=true` and no android
device registered, it resulted in an error.
This commit fixes the bug by improving the checks to apply
the redact logic only if android/iOS device is registered
and it's not a remove event.
Co-authored-by: Tim Abbott <tabbott@zulip.com>
Signed-off-by: Prakhar Pratyush <prakhar@zulip.com>
Slugs in dm urls aren't really passed through url decoding and
shouldn't throw any error currently if hashReplacement aren't enforced.
But we still encode them in this commit to make this consistent.
The error message text had an unfortunate hover effect, resulting
from the error container element being inside the main widget element.
Move the error message element to sit outside the main element; this also
fixes overflow issues with the error element.
Fixes#17571.
This commit adds code to live update the group permissions panel
when user loses access to a stream by removing the stream and its
settings from the UI.
This commit extracts code to hide "Organization permissions",
"Channel permissions" and "User group permissions" headings
in group permissions panel if there are no settings under
these sections and show the empty panel text if group does
not have any assigned permissions.
This new function will help in avoiding duplicate code in next
commit which will add code to live update the permissions
panel when user loses access to a stream.
When resizing subheader heights to be equal on the left and
right sides, the subheader being resized was set to 1px taller
because height_of included borders in its calculation.
This commit fixes that such that subheaders on both sides are
of same height.
This commit restructures the HTML for stream and group
settings overlay such that we first write all the HTML
for left side and then right side.
This change is important so that focus behavior during
keyboard navigation is correct in narrow screens and
does not move to the elements which are hidden after
we fix it in #26941.
This changes the focus behavior on keyboard navigation
in wide screens where first all of the left panel will
be covered from top to bottom and then the right panel,
but it is fine.