This commit adds code to not show typing notifications for inaccessible
users as the user would not have any information even if we show them
as the name shown would be "Unknown user".
We do not allow users to send messages to inaccessible users.
We already do not show them in DM recipient typeahead and this
commit makes sure that an appropriate error is shown if user
somehow creates the pill for inaccessible user by typing the
email.
Inaccessible user names are shown as "Unknown user" in the
reacted users list and tooltip.
This commit removes the call to `is_known_user_id` since we
may have reactions data from inaccessible users. And it is
fine to remove the `is_known_user_id` call anyways, because
it was added to ignore showing reactions from deactivated
users when the client did not have data about them, but now
the client has data about deactivated users.
So we anyways do not expect unknown user IDs in cases
other than inaccessible users for which we have to show
the reactions by showing their name as "Unknown user".
This commit also updates the comment for "is_known_user_id"
function accordingly.
We do not update the name for mention pills of inaccessible users
and keep it same as it was in the message content, and we show
the "Unknown user" popover on clicking the pill.
This commit sets the client capability value to not pass
unknown users data in the webapp and also does some changes
to avoid errors while loading the web-app home page.
This commit only does some basic webapp changes to not show
inaccessible users in sidebar and we would need need more
changes to make the web-app work as expected which will be
done in further commits.
The "User groups" panel is now removed from settings overlay
and we instead use new "#groups" UI.
This commit also makes some changes to tests to ensure coverage
for pill_typeahead.js which was previously done by
settings_user_group_legacy.test.js. We have still not got
complete coverage on user_pill.ts as we have removed
settings_user_group_legacy.test.js, but we just add the file
to EXEMPT_FILS list for now and will handle it in future.
Fixes#28012.
There was a bug when a user tries to join user group if the
there was not a corresponding group row in left panel.
This happend when a user tried to open group settings page
from group popover.
This commit fixes the bug by adding code to check whether the
group row is present before calling the functions to show or
hide the loading spinners.
This commit updates the user group popovers to change the icon
and text of ".manage-group" option to match what we have in
gear menu and also change the heading and ".manage-group"
option to be left-aligned.
We already had the code to override the margin but it was not
being applied due to CSS specificity. This commit fixes it.
Due to this change, there was too much space on the left of
member names, so this commit also decreases the left padding.
We now add a "Group settings" option in the gear menu to open
the new "#groups" UI and the "Manage group" option in user
group popover also opens the new UI.
Earlier, the event sent when an onboarding step (hotspot till now)
is marked as read generated an event with type='hotspots' and
'hotspots' named array in it.
This commit renames the type to 'onboarding_steps' and the array
to 'onboarding_steps' to reflect the fact that it'll also contain
data for elements other than hotspots.
This commit adds a new endpoint 'users/me/onboarding_steps'
deprecating the older 'users/me/hotspots' to mark hotspot as read.
We also renamed the view `mark_hotspot_as_read` to
`mark_onboarding_step_as_read`.
Reason: Our plan is to make this endpoint flexible to support
other types of UI elements not just restricted to hotspots.
This is a follow up commit to 2f1ea2fe4e,
for dark mode. The previously mentioned commit fixed the issue of help
link widget turning to blue instead of inheriting the color in light
mode only.
Moves the section in support views for any current plan details
to a new template: `templates/analytics/current_plan_details.html`.
Also, updates the PlanData dataclass to have a boolean that checks
if the current plan tier is the self-hosted legacy plan.
This commit adds code to not allow Zulip Cloud organizations that are not
on the Plus plan to change the "can_access_all_users_group" setting.
Fixes#27877.
We rename "intro_gear" to "intro_personal" because after the menu
was split into help menu, main menu and personal menu, the "Settings"
option now resides inside the personal menu.
Fixes#27878.
This adds the new tabs from /plans to:
* /for/business
* /self-hosting
And it isolates legacy styles to preserve the tabs on
/for/education
Fixes: #28013
In this commit, we add css to help link widgets so that they can inherit
the color property on hover,
Changing `.help_link_widget` selector to `a.help_link_widget` allows
us to increase the specificity of the selector, thus enabling us to
override the on hover property set by the bootstrap classes.
We have some delay for tooltips for all compose buttons, but we now show
tooltips instantly for buttons that are disabled on hover, to emphasize
that the button is disabled, and why.
On opening the compose box right after closing it with some text in it,
the poll button would wrongly be disabled.
This is now fixed by ensuring to reset the button state on opening the
compose box.
Previously, when the user modal is opened, and a stream is
selected from the streams tab, and then, when a new tab
is selected and you navigate back to this streams tab and
try to pick a new stream, it wouldn't allow you to do so.
This is because, preivously once a stream is picked,
and you go out of the tab and come back, then the
previous object of the subscribe widget was invalidated
and a new object was created. However, the options
still corresponded to the old object. Hence, the error.
This is fixed by checking out if a stream widget object
exists, before creating a new one. The object is cleared
out from the on_user_profile_hide method.
This error is not seen for other tabs even though they
reconstruct their entire tabs when re-visited
without saving previous state is that they don't make
modifications to the user profile from the modal itself.
They rather open some other modal to do it.
Hence, they don't need to store any state for their objects,
and hence no need to retain it.
their state.
Fixes#27422
Previously, the logic for clearing of user_streams_list_widget
was present in a separate method, calling which would clear
out the object. However, there is no guarantee that this
method would always be called, but it is essential for us to
clear out our object every time we close the modal.
Hence, we move this to a new on_user_profile_hide method,
which is provided as a call back to the modals.open hook
so that the object is cleaned out everytime we close the
modal.
So far, we were only considering elements at the the reference element's
bounding box top-left corner, to check if the reference element was
covered by other elements. This led to a bug where the popover wouldn't
show up even if a very small part of the reference element was covered.
Now we consider elements that are at both the top-left and bottom-right
of the reference element's bounding box, as those covering the reference
element.
Prior to merging, this commit and others in the PR should be adjusted
and squashed for a cleaner history.
Co-Authored-By: Vlad Korobov <terpimost@gmail.com>
It appears as though we're still setting a background color,
but that is only to push back against the background set by
Pygments.
However, code blocks in mention messages get the same color
background as ordinary messages, preserving contrast on syntax
highlighting.
This ensures that all colors (text, background, and border) are
explicitly declared for Markdown-rendered pre elements, even when
the colors replicate values already declared, e.g., with Pygments.
We exchange the positions of the preview and upload buttons to make the
preview button the first one, as the preview button is different from
the other buttons in that it does not manipulate the contents of the
ompose box.
The "send_invoice" and "charge_automatically" strings used by stripe
for the `collection_method` are referred to both as the "billing
method" and "billing modality" in the billing code.
Because we send this as data to stripe as either `collection_method`
or `billing_modality`, renames any references that are any form of
"billing method".
Hiding the spinner confusingly flashes the Save button before the
edit view closes. This just prevents that from happening, so that
the sign of success is the rendered, edited message.