Commit Graph

428 Commits

Author SHA1 Message Date
Alex Vandiver 7152278463 blueslip: Remove unused blueslip.timings store.
This was a write-only store which was never accessed.
2023-04-13 14:59:58 -07:00
Alex Vandiver 6882ec8087 blueslip: Remove unused preview_node.
It is unused, and an XSS waiting to happen if misused.
2023-04-13 14:59:58 -07:00
Joelute a96cfb58bd timerender: Remove "Active just now" user status.
Currently, we only show the "Active just now" status once a user has gone
offline within the last 2 minutes. This ends up never showing up the
threshhold which the client marks an user as user is longer than 3 minutes.
Thus deemingthe user status as useless. After a discussion on CZO, it was
decided that we should remove this status altogether as the phrasing doesn't
make sense as well.
2023-04-13 14:59:08 -07:00
Joseph Ho 1e98a659c1 timerender: Revert extra changes to time in recent conversations.
In #25012, which was intended to only modify the buddy list, we
accidentally changed the rendering of times for several other code
paths, including recent conversations, that were using the
last_status_from_time function, whose name really suggested it only
was used for the buddy list.

Extract a new function with a better name for the more common relative
time use case.
2023-04-13 14:59:08 -07:00
evykassirer b07bc23e07 upload: Separate uploads into one upload bar per file.
Fixes #24287.
2023-04-12 15:42:07 -07:00
evykassirer 4e7f9100fc upload: Rename hide_upload_status to hide_upload_banner.
This will be clearer naming for when there are multiple banners,
but is likely a more intuitive name even for the current state
of the code.
2023-04-12 15:42:07 -07:00
Joelute be38730d05 time_picker: Set minutes to zero in global time picker.
Usually when a user uses the time picker, they're most likely going to
set the time to the hour rather than the current minute. These changes
will set the minutes to zero whenever we are opening the global time
picker.

Fixes: #23874.
2023-04-12 15:39:49 -07:00
Lauryn Menard 8552ff677d search: Improve suggestions for `is:resolved` and `group-pm-with`.
Improves suggestions to not include `is:resolved` for searches
that have already specified a narrow with direct messages, since
there are no topics for direct messages. And improves suggestions
for searches that already have `is:resolved` to not include options
that narrow to direct messages.

Improves suggestions to not include `group-pm-with` for searches
that have already specified a narrow for stream messages. And
improves suggestions for searches that already have `group-pm-with`
to not include options that narrow to stream messages.
2023-04-12 11:32:52 -07:00
Lauryn Menard b9023db04e node-tests: Remove mock of `topic_list` in `topic_list_data.test`.
With commit f0d1332ba2, we no longer need to mock `topic_list.js`
in the `topic_list_data` node test. Instead, we can pass a string
directly to that function. The default is an empty string unless
there is a search input. Also, updates the default of the zoom to
be false instead of undefined in the tests.
2023-04-12 11:30:56 -07:00
N-Shar-ma 4e2931cefd compose: Disable "Message X" button for DMs when DMs are not allowed.
When in a private narrow, the "Message X" button is disabled if direct
messages are not allowed in the organisation and the current recipient
is not a bot.

Note that when the recipient is a user group with 1, more or all bots,
the button is disabled then too as such PMs are not allowed. Only when
the recipient is a single bot, then it's not disabled, as DMs with one
bot are allowed even in organisations where DMs are disabled.
2023-04-11 11:35:37 -07:00
Sahil Batra 440f9e397a message_edit: Apply topic edit restrictions to "(no topic)" messages.
Previously, editing topic of "(no topic)" messages was allowed
irrespective of time limit or the "edit_topic_policy" setting.
Since we are working in the direction of having "no topic" messages
feel reasonable, this commit changes the code to not consider them
as a special case and topic editing restrictions apply to them as
well now like all other messages.

We still highlight the topic edit icon in recipient bar without
hovering for "no topic" messages, but it is only shown when user
has permission to edit topics.
2023-04-11 11:07:23 -07:00
Hardik Dharmani aab252f657 user_topics: Update user_topics.js to include all visibility policies.
Updated user_topics.js to include all visibility policies
rather than just mute/inherit visibility policies.

Replaced muted_topics Map with `all_user_topics` Map which has
structure: {stream_id:{topic_name:{date_updated,visibility_policy}}}.

Removed add_muted_topic, remove_muted_topic functions which were
adding/removing topics in muted_topics Map. Added new function
update_user_topics which take parameter stream_id, topic,
visibility_policy, and date_updated(optional) which adds a topic
to all_user_topics with date_updated and visibility_policy,
if visibility_policy is not equal to inherit.
else, removes topic from all_user_topics.

Added get_topic_visibility_policy which returns visibility_policy
if stream_id is not undefined else return false.

Added 2 helper functions is_topic_muted and is_topic_unmuted which
uses get_topic_visibility_policy and return true if topic is
muted and unmuted respectively else return false.

Replaced switch case statement which was using add_muted_topic
and remove_muted_topic functions in set_user_topic with new function
update_user_topics.

Fixes #24244
2023-04-11 09:51:01 -07:00
Hardik Dharmani 46cabdd59e user_topics: Use new API endpoint to update topics_visibility_policy.
Removed functions mute_topic and unmute_topic in muted_topics_ui.js
which were using old API endpoints to mute/unmute topics.

In user_topics.js added new function set_user_topic_visibility_policy
which uses new API endpoint `/user_topics` to update the topic's
visibility_policy to visibility_policy passed to
set_user_topic_visibility_policy function as a parameter.

In functions toggle_topic_mute and mute_or_unmute_topic, replaced
the calls of mute_topic and unmute_topic with the new
user_topics.set_user_topic_visibility_policy function.

Added "web/src/user_topics.js" in EXEMPT_FILES in test-js-with-node
as adding function `set_user_topic_visibility_policy` resulted in
user_topics.js losing 100% test coverage.

Fixes #24244
2023-04-11 09:51:01 -07:00
Hardik Dharmani 83fae2f710 user_topics: Rename global map visibility_policy to all_visibility_policies.
Fixes #24244
2023-04-11 09:51:01 -07:00
Sahil Batra e010cb3d5a settings_config: Add "Nobody" group option to system_user_groups_list.
This commit adds "Nobody" group option to system_user_groups_list in
settings_config.js. We do not allow can_remove_subscribers_group to
be set to "Nobody" group currently, but it is nice to add support
for this here since it will be used in more settings in future.
2023-04-11 09:02:09 -07:00
Sahil Batra 9278a219ea user_groups: Refactor get_realm_user_groups_for_dropdown_list_widget.
This commit refactors get_realm_user_groups_for_dropdown_list_widget
function to use "group_permission_settings" module instead of
passing variables like "allow_internet_group", etc. individually
for each settings.

We lose some test coverage due to this commit, but that would be
fixed when we add some more group-based settings and allow groups
other than system groups in the group based settings.
2023-04-11 09:02:09 -07:00
Aman Agrawal 8c744752ed stream_privacy: Use new lock and hashtag icons.
This commit doesn't modify the lock and hashtag icon in settings.
2023-04-10 23:41:30 -07:00
Aman Agrawal 7e473003a6 recipient_row: Use a dimmed stream color for background.
Following important changes are being made here:
* color_class lib is removed since it not used anywhere now.
* We don't need the `dark_background` class since the background
  color is already adjusted based on color scheme. So, all
  instances of it being used is removed.
2023-04-10 23:41:30 -07:00
AcKindle3 02364dd69f web: Use `uri` instead of `url`.
Following the issue #23380 and PR #25038, this commit changes all
occurences of `uri` into `url` in all comments, local variables,
handlebars templates (.hbs) function names and their callers in
all `.js` and `.ts` files.
2023-04-10 10:26:48 -07:00
sbansal1999 ea2de5b0a4 js: Break cyclic dependency between topic_list and topic_list_data.
This commit breaks the cyclic dependency between "topic_list.js"
and "topic_list_data.js".

It achieves this by passing "search_term" generated by the
"get_topic_search_term" function to "topic_list_data.js" directly
through the function call from "topic_list.js".
2023-04-10 08:55:06 -07:00
Lauryn Menard 95d48bc2ad topic-list-data: Increase max topics shown in left sidebar.
Incresase the max number of stream topics shown when not zoomed
into the stream for more topics in the left sidebar to be a max
of 8 unread conversations and 12 when there are unreads.
2023-04-07 15:10:24 -07:00
Ujjawal Modi 915084fe82
timerender: Reword user activity info from "Last active:" to "Active".
Fixes #22758.
2023-04-07 09:24:15 -07:00
Lauryn Menard b821c90f44 narrow-filter: Update `Filter.describe_is_operator` for "resolved".
Updates `Filter.describe_is_operator` to use switch/case instead
of if/else and adds case for "is:resolved" narrow so that it is
not shown as invalid when used with other search narrow filters.
2023-04-07 09:18:52 -07:00
Lauryn Menard 982a37aece tests-narrow: Remove unneeded helper function in `narrow.test.js`.
In commit aa002f5c6d, a handlebars template was created for empty
narrow feed messages, which removed a number of div element ids,
and updated `narrow_banner.show_empty_narrow_message` to first
empty the main empty narrow div of any previous message content.

Removes the helper function for hiding the empty narrow messages
as `narrow_banner.show_empty_narrow_message` should empty the
empty message div of any text before rendering the updated empty
narrow for the new empty narrow banner text.

Also, cleans up a missed instance of 'uri' from commit b22578f
in the same test.
2023-04-07 09:18:16 -07:00
brijsiyag 95f2ead33d streams: Add an explanatory notice when left panel is empty.
This commit adds a message and link to view or create streams on
empty streams panel. It conditionally renders the message when
there is no stream to show and also when any stream
event (delete,create,subscribe) occurs.

Co-authored-by: Tim Abbott <tabbott@zulip.com>

Fixes #21870.
2023-04-06 19:33:13 -07:00
palashb01 af3e62b2ae popovers: Refactor topic_menu visible check and hide logic.
This commit refactors the topic_menu visible check and hide logic,
since we have already migrated the popover from stream_popover.js.
This last bit of code related to topic_menu is also migrated to
popover_menus.js, and the code is refactored to use the new logic,
which is more common for the popover_menus.js system.

To hide the popover, one possible solution could be to use the
hideAll method from TippyJS. However, this could lead to
unintentional behavior for all the popovers. To prevent this, the
hide method is used for the topic_menu only.
2023-04-05 16:47:39 -07:00
Anders Kaseorg b533cd979e templates: Enable Handlebars strict mode.
https://handlebarsjs.com/api-reference/compilation.html

Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-04-05 15:23:54 -07:00
Lalit bbf2f5f91f ts: Convert `emoji.js` to TypeScript.
Converted `emoji.js` to TypeScript by adding relevant type definitions,
also modified `target` option in our tsconfig to 'ESNext' so that types
for object methods like `hasOwn` which is being used in `emoji.js` are
included.
2023-04-05 10:29:01 -07:00
Lalit 6f46c4830f emoji: Refactor `get_emoji_details_by_name` function.
This is a prep commit for typescript migration of `emoji.js`. This
commit refactors the code for generating emoji rendering details such
that we avoid writing an ugly code which will involve writing an
incomplete type object when we migrate to TypeScript.
2023-04-05 10:29:01 -07:00
Lauryn Menard 344d26d936 pm-list-data: Clean up node test for `pm_list_data.js`.
Cleans up node test to use helper functions when setting a filter
and narrow state for private messages and when checking the return
value for `pm_list_data.get_list_info`.

Also, reduces the number of users in the test by creating more
group direct message conversations.
2023-03-31 14:22:30 -07:00
evykassirer 4cfafa382a compose: Rename recipient selector classes to be more descriptive. 2023-03-31 13:45:24 -07:00
evykassirer 83b484db32 compose validate: Rename overflow verifier.
This makes it clearer what the return value means.
2023-03-31 13:40:41 -07:00
Tim Abbott 872a336598 insert_new_message: Rewrite using all_rendered_message_lists.
This replaces one of the our larger remaining blocks of code with
explicit logic for message_lists.home with logic that should correct
if we support maintaining a different set of rendered message lists.

This should have identical behavior to the previous implementation
given that all_rendered_message_lists is either just
message_lists.home or that plus the current narrowed message list;
can_apply_locally() is always true for the home message list, and the
list === message_lists.current check is equivalent to the more complex
narrow_state.active() check.
2023-03-31 10:41:06 -07:00
Daniil Fadeev a0c98bc70a popovers: Refactor message_actions popover keyboard handling. 2023-03-28 14:51:56 -07:00
Daniil Fadeev 1337c0fec1 popovers: Migrate "all messages" popover to Tippy. 2023-03-28 14:51:56 -07:00
Daniil Fadeev 22561e2f3b popovers: Refactor keyboard handling for starred messages popover. 2023-03-28 14:51:56 -07:00
Daniil Fadeev 1f24addb88 popovers: Add shared keyboard handling for popovers.
This new system lets us handle detection and keyboard navigation in
popovers with just a a few lines of simple code for each individual
popover.
2023-03-28 14:51:56 -07:00
Ujjawal Modi f404dbddb2 recent_conversations: Exclude muted user PMs from recent conversations.
Earlier muted private conversations were shown in recent
conversations. This commit excludes them from recent conversations.

Fixes #24299.
2023-03-28 14:40:50 -07:00
Ujjawal Modi bfc5092082 recent_conversations: Change name of muted user in group PMs huddle.
Earlier in recent conversations panel full name
was displayed in group PMs huddle even if the user
was muted.
This commit change the display name of such users to
`Muted Users`.
2023-03-28 14:40:50 -07:00
Anders Kaseorg eb572e525a stream_color: Fix duplicate ids for colored privacy icons.
This also fixes the color on these icons in the stream-specific rows
of the notification settings table.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-03-27 22:24:45 -07:00
N-Shar-ma 25d2e1caed compose: Have at least 2 new lines before and after a quoted message.
Uptil now, 1 new line was added before and 1 after a quoted message. Now
for more breathing room around a quoted message, new lines are inserted
to space it from any content before and after by at least 2 new lines.

Fixes: #23608.
2023-03-27 15:31:45 -07:00
Mateusz Mandera 684430faa2 billing: Add sponsorship request form to the billing page.
Previously this was only available on the upgrade page - meaning an
organization that already bought a plan wouldn't be able to request a
sponsorship to get a discount or such, even if qualified.
2023-03-27 10:15:21 -07:00
Mateusz Mandera ca0869eb01 support: Fix scrubbing realms if string_id is a number.
This bug made it impossible to scrub realms where the string_id was a
number, e.g. 123.zulipchat.com because
confirmed_string_id === actual_string_id comparison failed due to one
being a string and the other a number.

Per http://api.jquery.com/data/#data-html5:
Every attempt is made to convert the attribute's string value to a
JavaScript value (this includes booleans, numbers, objects, arrays, and
null).
To retrieve a data-* attribute value as an unconverted string, use the
attr() method.
2023-03-27 10:07:41 -07:00
Sahil Batra 6582374178 server_events_dispatch: Fix live-update of email_address_visibility. 2023-03-27 09:02:00 -07:00
Alex Vandiver ab7ff6b582 web: Save a 301 redirect from /billing to /billing/. 2023-03-24 14:51:01 -07:00
Anders Kaseorg 39b48e85a4 recent_topics_row: Remove unused dataset attributes from template.
Commit 084cbd4ff7 (#15064) removed the
.data() calls that inspected these.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-03-23 13:34:59 -07:00
Anders Kaseorg 508b9f7bd0 reactions: Pass missing vote_text to Handlebars template.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-03-23 13:26:37 -07:00
Daniil Fadeev b65b94894f stream_popover: Migrate Bootstrap to Tippy in starred messages' popover. 2023-03-23 11:59:46 -07:00
Anders Kaseorg a1f530fcc0 tests: Pass missing data to Handlebars templates.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-03-22 17:10:28 -07:00
palashb01 ac45a3f20d narrow_banner: Add a period at the end of the default banner.
This commit adds a period ('.') at the end of the default banner
in the narrow empty search for multiple filters. This is required
to maintain consistency among all banners, as for most banners, we
use punctuation at the end of the banner to create complete and
meaningful sentences.
2023-03-21 11:23:43 -07:00
palashb01 ce11657204 narrow_banner: Display title only for empty search with multiple filters.
This commit improves the display of the narrow banner when there are
multiple filters used in a narrow search and no results are found.
The banner will now only display the title 'No search results'
The node tests have been updated to reflect this change.
2023-03-21 11:23:43 -07:00
Anders Kaseorg 61f91f8503 tests: Mock autosize.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-03-20 15:48:29 -07:00
Anders Kaseorg 96e657a954 install-node: Upgrade Node.js from 18.14.1 to 18.15.0.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-03-16 12:32:28 -07:00
Zixuan James Li cd97c497bc people: Do not return undefined for is_cross_realm_email.
It would be semantically more straightfoward to return false when the
check does not succeed.

Signed-off-by: Zixuan James Li <p359101898@gmail.com>
2023-03-16 10:47:12 -07:00
Abhijeet Prasad Bodas 4d5e12961a user_topics.js: Rename `visibility_policy_inherit` -> `inherit`.
This makes our frontend code less verbose, and makes this name
consistent with the names of other visibility policies (which
do not have the `VISIBILITY_POLICY` prefix).
2023-03-14 17:50:45 -07:00
SameepAher 079eb6a4da keyboard_ui: Add a new keyboard shortcut '='.
Added new keyboard shortcut '=' to toggle the first emoji on the
selected message if it exists, else do nothing.

Fixes: #24256.
2023-03-14 14:17:54 -07:00
Daniil Fadeev a80f96dde6 reactions: Prevent multiple simultaneous requests for reaction update.
Prevents multiple simultaneous requests to the API when adding or
removing reactions. This commit blocks emoji state changes until
the request is executed.

Fixes part of #21213
2023-03-14 13:53:42 -07:00
sbansal1999 9e4529c48b docs: Change extensions from .js to .ts for some filenames.
Since we are migrating from JavaScript to TypeScript
some files in the documentation are still with their
old extension. This commit changes those file extensions.
2023-03-12 15:17:53 -07:00
Aman Agrawal b0a468907b people: Add function get participants from user_ids_string.
This implements the TODO in recent_senders.
2023-03-07 15:43:03 -08:00
Aman Agrawal e6f3ffb946 recent_senders: Fix twice sent user ids in PM to self case.
This caused double user avatar to appear in recent conversations
for when showing user PM to self.
2023-03-07 15:43:03 -08:00
evykassirer 1df3b4f86f search: Rename .search_button to more correct .search_close_button. 2023-03-07 15:38:11 -08:00
Joelute b2b86b5e6f message_feed: Hide compose banner when unsubbing from stream.
Currently, when a user marks messages as unread in a stream/topic
and unsubscribes from the stream, both subscribe button and compose
banner will remain visible. This change will hide the compose banner
when the user unsubscribes from the stream and hopes to create a
better flow and reduce confusion.
2023-03-06 18:08:41 -08:00
Lalit 88c23933bb util: Change parameter type of `sorted_ids` to `number[]`.
This function was mistyped; it was used in practice both accepting
string[] and number[], with the implementation taking advantage of the
fact that number.parseInt(<int>, 10) = <int>.

The only string[] callers were some overly defensive typing_data tests
that don't match the actual typing_data interface, so we remove the
string[] support and adjust the function's type, as well as those
tests.
2023-03-03 12:04:42 -08:00
Sahil Batra 734d1848c0 server_events_dispatch: Update bots list only if needed.
After b21f533af, we now update the organization bots
list on receiving realm_user events since non-admins
can also see bots not owned by them in the list.

But the functions to update bot list should be called
only for bot users and not for others, otherwise it
results in an error.

This can be reproduced by first opening the organization
bots list and then just updating the name of the user.
Calling `redraw_bots_list` on receiving "realm_user/add"
event for non bot users will not raise any error but
still we avoid redrawing the whole list when not required.

This commit fixes the code to call functions to update
bot list only when the event is received for a bot.
2023-03-02 13:26:20 -08:00
Anders Kaseorg 2a70c11c5f eslint: Fix unicorn/prefer-spread.
This was initially disabled for IE/Babel-related reasons that no
longer apply.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-03-02 12:16:56 -08:00
Anders Kaseorg 941a9bab38 message_flags.test: Call send_read with an array.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-03-02 12:16:56 -08:00
Anders Kaseorg 9d514a29d1 zjquery: Make FakeElement iterable.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-03-02 12:16:56 -08:00
Trident Pancake 2c042ad100 typeahead: Suggest existing custom language in Code Playground settings.
The Code Playground feature can have multiple entries per language. So
the autocomplete for settings should return existing custom languages
too.
2023-03-01 17:02:44 -08:00
Trident Pancake 51bd3c8c8b typeahead: Show Code Playground entries in composebox typeahead.
This addresses #23935.
2023-03-01 17:02:44 -08:00
Trident Pancake f96daca32c typeahead: Handle non-pygments data in compare_language_by_popularity.
This added functionality will be used to compare pygment_language from
Code Playgrounds.

There is a choice of how to sort languages with popularity versus
without popularity. I chose to sort the Code Playground custom language
after other pygment languages based on the reasoning in the comments.
2023-03-01 17:02:44 -08:00
Trident Pancake bab2eda283 typeahead: Add unit test for typeahead_helper.compare_language().
Bringing it under test before expanding its functionality and doing
refactoring.
2023-03-01 17:02:44 -08:00
Ilikepizza2 caab470656 left sidebar: Scroll to current PM conversation on narrow.
Zulip has long had the behavior that opening a stream or topic via
narrowing automatically scrolled the left sidebar to the conversation,
so that you can see it and adjacent ones readily.

When we moved private messages into the left sidebar, we didn't
implement this similar behavior; this resulted in users having to
manually scroll the sidebar in order to browser private message
conversations.

Fix this by using the standard scroll_util helpers, with some extra
care to expand the heading when going to "all private messages".

Fixes #23609.

Co-authored-by: Tim Abbott <tabbott@zulip.com>
2023-02-27 11:58:53 -08:00
Daniil Fadeev a0d15f3029 i18n: Localize date and time displays across the app.
Implemented date localization using native Intl object.
Created special function get_localized_date_or_time_for_format
Made necessary string formatting changes in 'timerender.ts'.
Fixed tests and added some localization tests too.

Tested on my local development server, with some random languages.

Fixes #23987.
2023-02-26 17:43:47 -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
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
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