Commit Graph

50365 Commits

Author SHA1 Message Date
Lalit 1cb4886a23 stream_muting: Fix message reselect bug.
Extended else if statement responsible for reselecting messages
to include check `!recent_topic_util.is_visible()`.

Before without this check, this code was consuming 1 unread
message on muting/unmuting a stream even when we were in
"Recent Conversations" view.
2023-02-26 16:19:28 -08:00
Anders Kaseorg 3a9fb767ea ts: Convert bundles to TypeScript.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-02-25 15:40:31 -08:00
Anders Kaseorg 96fadb3d66 ts: Convert trivial portico modules to TypeScript.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-02-25 15:40:31 -08:00
sbansal1999 2fa61bcec3 ts: Convert analytics/support.js to TypeScript. 2023-02-25 11:35:01 -08:00
sbansal1999 87d6180763 ts: Convert analytics/activity.js to TypeScript. 2023-02-25 11:34:56 -08:00
Anders Kaseorg a2ea5e8598 test-js-with-node: Fix source maps for coverage.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-02-24 13:54:29 -08:00
Lauryn Menard 42775219b3 private-messages: Update frontend strings to use "direct message" or "DM".
Updates frontend user-facing strings with "private message" or "PM" to
use "direct message" or "DM" respectively instead.

Note that this updates translated strings as well as a few that
are not translated like search suggestions.

Updates `tools/lib/capitalization.py` for some specific strings
that are impacted by these changes, and removes "PM" and "PMs"
from checked strings.
2023-02-24 11:47:26 -08:00
Lauryn Menard 017b05fd84 outgoing-webhook: Update Slack outgoing webhook error for private messages.
Updates the error message for the outgoing Slack webhook to use
"direct message" instead of "private message".
2023-02-24 11:47:26 -08:00
Lauryn Menard e39c689f36 email-notifications: Update email subjects with "PM" to "DM".
Updates email notification subjects with "PM" to use "DM" instead.

Also, updates `tools/lib/capitalization.py` to include both "DM"
and "DMs".
2023-02-24 11:47:26 -08:00
Lauryn Menard 182e6c0730 push-notifications: Update strings for private messages.
Updates strings with "private message" in push notifications to
use "direct message" instead.
2023-02-24 11:47:26 -08:00
Lauryn Menard a0fd7b2afc private-messages: Update translated backend strings use "direct message".
Updates user-facing translated strings containing "private message" on
the backend to use "direct message" instead.
2023-02-24 11:47:26 -08:00
David Rosa d098e8275d help: Document stream notifications mobile feature.
- Documents how to set default notifications for all streams and
  single streams from within the mobile app.
2023-02-24 11:35:20 -08:00
Anders Kaseorg a58b87893e eslint: Prohibit import cycles in TypeScript.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-02-24 11:33:36 -08:00
Alya Abbott e65f48b619 help: Document modifying email visibility on sign-up. 2023-02-24 09:30:32 -08:00
Alex Vandiver 8ede54fb1b docs: Add a link to installer flag docs from backup instructions.
The documentation for restoring backups referenced that it needed to
be to the same version of PostgreSQL, but did not explain how to do
that.

Link to the relevant section of the installer documentation, and name
the flag explicitly.

Fixes: #23691
2023-02-24 12:25:48 -05:00
Sahil Batra 1ac6a9ac06 register: Allow user to change email_address_visibility during signup.
We now allow user to change email_address_visibility during user
signup and it overrides the realm-level default and also overrides
the setting if user import settings from existing account.
We do not show UI to set email_address_visibility during realm
creation.

Fixes #24310.
2023-02-24 09:23:34 -08:00
Sahil Batra 36584a3571 registration: Add code to set email_address_visibility during signup.
This commit adds backend code to set email_address_visibility when
registering a new user. The realm-level default and the value of
source profile gets overridden by the value user selected during
signup.
2023-02-24 09:23:34 -08:00
Sahil Batra 0620d2ac1b settings: Add "modal_select" to select element for custom user field.
Same template fike is used to show user custom profile fields in
both profile page in settings and in manage user modal. For select
elements in modals, the CSS is handled using modal_select class.
This commit adds modal_select class to the select element used for
custom user field, which already has settings_select class, so that
the CSS are also applied to the select element in manage user modal.
2023-02-24 09:13:09 -08:00
Sahil Batra a862e686db modal: Do not use flex for all modal titles.
The "display: flex" property was added to ".modal__title"
element in 9e4aa19ac in #24194 to fix overlay of long
name in user profile modal (#23781).

Due to this change, the space between words in heading of
"Archive stream" modal is being removed.

This commit fixes it by adding "display: flex" only to the
title of user profile modal and not all the modals. The
heading in "Archive stream" modal is not perfect but there
is ongoing work to fix it and till then this commit changes
it to be the same as it was before adding flex property.

There is no major change in other modals, except that the
space between heading and help-link widget has increased
which was anyways the case before adding the flex property
and that can be modified later if we want to.
2023-02-24 09:13:09 -08:00
Anders Kaseorg 0ef8e88b17 webpack: Move webpack configuration to web.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-02-24 06:35:58 -08:00
Anders Kaseorg 23fd4f95f4 web/tests: Don’t rely on current directory.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-02-24 06:35:58 -08:00
Palash Baderia d8adc6de1c personal_settings: Add deactivate organization button for organization.
Added a 'Deactivate Organization' button inside the
'Personal Settings > Account & Privacy'. This button only appears
when the organization owner is the only user present. To verify this,
I used the 'get_active_human_count' function from the 'people.js'.

To remove duplication, a function has been created inside settings_org
file to handle the click event for the two buttons present inside
personal_settings and organization_settings that perform the same
action of deactivating organization. The click handler is defined in
the click_handlers.js file, which calls the dialog for deactivating
the organization. Previously, the error used to appear at the top of
the organization_settings, but now it appears inside the dialog box
itself.

To remove the duplication of two buttons having the same IDs,changed
the Id `deactivate_realm_button` to a className.

Fixes: #24105
2023-02-23 18:17:28 -08:00
Aman Agrawal c9f4e474a7 integrations: Increase font size of trademark disclaimer.
This is to address Google complaining that the font size is too
small to read on the integration pages.
2023-02-23 17:50:09 -08:00
N-Shar-ma 599a32bee9 hotkey: Add `z` shortcut to zoom to message `near` view.
A new hotkey, lowercase `z` (for `zoom`) has been implemented to allow
the user to go to the near view of the selected message with 1 keypress.
Documentation has been added for this both in the help center, and the
in-app `Keyboard shortcuts` menu.

The effect is identical to clicking on a message's timestamp, which
links to that message's near view.

Fixes: #24227.
2023-02-23 17:47:45 -08:00
Anders Kaseorg 377b8b22c0 puppeteer_tests: Move to web/e2e-tests.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-02-23 16:04:17 -08:00
Anders Kaseorg cea1119423 node_tests: Move to web/tests.
This lets us simplify the long-ish ‘../../static/js’ paths, and will
remove the need for the ‘zrequire’ wrapper.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-02-23 16:04:17 -08:00
Anders Kaseorg c1675913a2 web: Move web app to ‘web’ directory.
Ever since we started bundling the app with webpack, there’s been less
and less overlap between our ‘static’ directory (files belonging to
the frontend app) and Django’s interpretation of the ‘static’
directory (files served directly to the web).

Split the app out to its own ‘web’ directory outside of ‘static’, and
remove all the custom collectstatic --ignore rules.  This makes it
much clearer what’s actually being served to the web, and what’s being
bundled by webpack.  It also shrinks the release tarball by 3%.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-02-23 16:04:17 -08:00
Hemant Umre be0098146c
settings: Sort Uploaded files with newest on top.
When a user opens the [Setting > Uploaded files] initially in the
'Data Uploaded' column, files are sorted from oldest to newest.
Instead, sorting this panel from newest to oldest. Because it's
more likely that the user is interested in their recently uploaded
files, e.g. if they uploaded something by accident.

Fixes #23737.
2023-02-23 15:56:50 -08:00
David Rosa ff865368c5 help: Add "Do not mark messages as read" section.
- Adds a section to describe why someone would want to set the
setting to never mark messages as read on mobile.
2023-02-23 15:45:52 -08:00
Sahil Batra 8316bad108 user_profile: Show icons for external account fields in full modal.
Previously, we showed the icons for "Twitter" and "Github" type
external account custom profile fields in the user-info popover.
This commit changes the code to show the icons in full profile
modal as well.
2023-02-23 15:45:26 -08:00
David Rosa 901ae068f5 help: Update formatting of mobile icon references.
- Updates icon references to follow current help center documentation
  patterns: **icon_name** (icon_image).
2023-02-23 15:04:38 -08:00
David Rosa 295b49e487 help: Document how to change the language of the mobile app. 2023-02-23 15:04:38 -08:00
Aman Agrawal 8946e9eaa5 css: Change look of date and time in message list.
Fixes #21752.
2023-02-23 14:38:33 -08:00
Aman Agrawal 659ad1544b message_edit_history: Center align date. 2023-02-23 14:30:20 -08:00
Joseph Hughes 90ace319d5 message_feed_ui: Right align date separators.
Align the date separators in the message feed with the timestamps so
that all date information is easier to read top-down.
2023-02-23 14:30:20 -08:00
Joseph Hughes d9874b1e2d message_feed_ui: Increase contrast on msg divider elements.
Increase contrast on date dividers, msg times and sub/unsub msg.
Some text in the message feed UI has been percieved as too dimmed.
This commit aims to increase the contrast on some elements to
counter this. Remove border-top from date-divider so that the line
is of 1px.
2023-02-23 14:30:20 -08:00
Joseph Hughes b746823e2e message_feed_ui: Remove group date dividers.
This commit removes the group date dividers from the message feed UI,
leaving only the dividers between individual messages. These are
considered unecessary as the recipient bar displays the date.

The change concerns message_list_view.js along with the templates
message_group.hbs and recipient_row.hbs.

Fixes #22966.
2023-02-23 14:30:20 -08:00
Joseph Hughes 8cf2a1df6b message_feed_ui: Remove previous date from date separators.
This commit updates the date row between messages and message
groups, removing the date of the previous message along with
the down arrow for the next message.

The goal of this commit is to declutter the message feed UI
as part of the redesign.

The change concerns the render functions in
timerender.js along with the files that reference these.

Fixes: #22967.
2023-02-23 14:30:20 -08:00
Aman Agrawal 343536d4bc css: Remove blue color, underline and transition effect from msg time.
This looks most likely a regression. Added `.messagebox-content`
to move priority of color set by us on `.messsage_time` above others.
2023-02-23 14:30:20 -08:00
Aman Agrawal 5a3d3f5303 css: Use variables for colors used to display message time.
This makes color changes easy to review and maintain in the
codebase.

This is also an attempt towards removing dark_theme.css
as we will only need to override color variables for these
elements in `body.dark-theme` in zulip.css without need of
overriding colors for any specific elements.
2023-02-23 14:30:19 -08:00
Alex Vandiver 97a5690f55 timestamp: Switch to a slightly faster datetime_to_timestamp.
This is quite a bit faster:
```
%timeit calendar.timegm(now.timetuple())
    2.91 µs ± 361 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)

%timeit int(now.timestamp())
    539 ns ± 27 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)
```

This is particularly important for the presence endpoint, which is a
tight loop of serializing datetimes.
2023-02-23 12:15:13 -08:00
David Rosa 95867e6f3e help: Document dark-theme mobile feature.
- Documents "Night mode" option.
- Adds Related articles section.
2023-02-23 11:48:59 -08:00
Alya Abbott faa69940d7 help: Add section on privacy settings to /help/review-your-settings.
Also move "Review your settings" page to the "Account basics" section
in the left sidebar.
2023-02-23 11:48:32 -08:00
Alex Vandiver aa032bf62c queue: Only set QOS on a newly-opened channel, once.
As written, the QOS parameters are (re)set every time ensure_queue is
called, which is every time a message is enqueued. This is wasteful --
particularly QOS parameters only apply for consumers, and setting them
takes a RTT to the server.

Switch to only setting the QOS once, when a connection
is (re)established.  In profiling, this reduces the time to call
`queue_json_publish("noop", {})` from 878µs to 150µs.
2023-02-23 11:47:43 -08:00
Anders Kaseorg d145644f85 ruff: Fix PLE0101 Explicit return in `__init__`.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-02-23 11:47:08 -08:00
Alex Vandiver f78c2eab2c message_send: Use stream object for name in "no subscribers" message.
In the case where a stream existed but had no subscribers, the error
message used to send to the owner always used `stream_name`, which
may have been None.

Switch to using `stream.name` rather than `stream_name` for this case.
2023-02-23 11:02:55 -08:00
Alex Vandiver 6427d85cf6 tornado: Replace dataclasses.asdict() call, as it is slow.
This code is called in the hot path when Tornado is processing events.
As such, making this code performant is important.  Profiling shows
that a significant portion of the time is spent calling asdict() to
serialize the UserMessageNotificationsData dataclass.  In this case
`asdict` does several steps which we do not need, such as attempting
to recurse into its fields, and deepcopy'ing the values of the fields.

In our use case, these add a notable amount of overhead:
```py3
from zerver.tornado.event_queue import UserMessageNotificationsData
from dataclasses import asdict
from timeit import timeit
o = UserMessageNotificationsData(1, False, False, False, False, False, False, False, False, False, False, False)
%timeit asdict(o)
%timeit {**vars(o)}
```

Replace the `asdict` call with a direct access of the fields.  We
perform a shallow copy because we do need to modify the resulting
fields.
2023-02-23 11:01:38 -08:00
Anders Kaseorg ed069ebe0e docs: Remove spaces before commas.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-02-22 17:17:25 -08:00
evykassirer 541d3ffa06 compose: Replace empty message banner with red outline for compose box.
Previously, we showed an empty message banner if the user tried
to send an empty message. We only showed it for users with
"ctrl+enter to send" because we thought it might be easy for a
user to press just enter accidentally.

However, this missed the case where the user clicks on the Enter
button. We want to show the user something in this case to tell
them that they're missing message content.

To avoid more complicated logic, this PR removes the banner
completely and changes the compose box border to red if the
user tries to send an empty message (for all cases).

The red line goes away as soon as the composebox has non-whitespace
characters.
2023-02-22 17:15:18 -08:00
Tim Abbott 631ca13428 Revert "typeahead: Fix bug where typeahead showed momentarily on shift + tab."
This reverts commit 9def249af1.

This broke the '>' typeahead.
2023-02-22 17:07:06 -08:00