Commit Graph

1356 Commits

Author SHA1 Message Date
Lalit Kumar Singh a0cb034731 ts: Migrate `spectators.js` to typescript. 2023-08-15 09:58:17 -07:00
Lalit Kumar Singh cd16176c10 ts: Migrate `browser_history.js` module to TypeScript. 2023-08-15 09:58:17 -07:00
Lalit Kumar Singh 9b01872e8c ts: Migrate `hash_util.js` module to TypeScript. 2023-08-15 09:58:17 -07:00
Lalit b2400d2688 stream_data: Refactor `create_sub_from_server_data` function.
We should just accept `subscribed` and `previously_subscribed` fields as
arguments to this function to avoid adding them on the `attrs` object
itself to simplify the type for `ApiGenericStreamSubscription`.
2023-08-14 16:10:16 -07:00
Lalit Singh 64f59d8daf stream_data: Consistent return values for is_* family of functions.
We should always return `boolean` type instead of `boolean | undefined`
type for functions `is_subscribed_by_name`, `is_subscribed`,
`is_web_public` to stay consistent with other similar functions which
have the type of `boolean` like `is_invite_only_by_stream_name` and
`is_web_public_by_stream_name`.
2023-08-14 16:10:16 -07:00
Lalit 69cdf6cf2f ts: Migrate `stream_data` to typescript. 2023-08-14 16:10:11 -07:00
Lalit Singh 5d109fc670 stream_data: Use `Map` instead of `FoldDict` for `BinaryDict` class.
After commit e52a3bc662, `BinaryDict`
class currently only deals with numeric stream ids so there is no
benefit to use case-insensitive `FoldDict` here anymore.
2023-08-14 16:08:25 -07:00
Lalit Singh dcbf62f492 babel: Include "transform-optional-chaining" in presets.
We need to include this "transform-optional-chaining" for babel presets
to prevent an error related to optional chaining syntax when we convert
this module to typescript. This error is a bug which is present in the
unmaintained `babel-plugin-rewire-ts` plugin.
2023-08-14 16:07:16 -07:00
Lalit 980c74e8da sub_store: Add seperate types for api stream objects.
I refined types for Subscription objects and Stream objects which were
already present `sub_store`. I took reference for the types from the
`zerver/lib/types.py` file.
2023-08-14 16:07:16 -07:00
Lalit c3292660d6 stream_data: Refactor `sub` objects when creating subs in stream data.
This commit refactors the `sub` object we were creating in
`create_sub_from_server_data` function, there were some fields which
didn't need to have a default set like `name`, `description` etc. so we
can remove those fields from here.

Also I set the color field in the object field itself to avoid making an
incomplete type object with not having `color` propertie initially.
2023-08-14 16:07:15 -07:00
Lalit 5dc599e07c stream_data: Make new object instead of modifying `sub`.
We should make a new object called `attrs` instead of adding new fields
directly to `sub` in `populate_subscriptions` method because these
additional properties which are being added does not staisfy the type
definition for the data we are getting from the server.

Because of this when we will type this function we will get type errors
saying that these additional field does not exist. So we should make a
seperate object with the correct types.
2023-08-14 16:07:15 -07:00
Junyao Chen 7140149373 ts: Migrate `bot_data.js` to TypeScript.
Add type annotations. Create custom types for Bot and Service.
Add zod data validation for incoming bot data from server.
Based on `zerver/openapi/zulip.yaml` description, `add` operation
(`op`) carries data that follows `Bot` structure. So taking
reference from `bot` structure, I create `ServerAddBotData` zod
schema and infer its type. Similarly, `update` operation carries
data that follows `BasicBot`, so I create `ServerUpdateBotData`.
Note that `Bot` inherits from `BasicBot`.

`zerver/openapi/zulip.yaml` describes that `services` in `BasicBot`
can be one of two objects, one with `{base_url, token, interface}`,
another with `{service_name, config_data}`. Therefore, I create
two corresponding schema and infer their types.

Fix two test cases `bot_data.test.js` and `settings_bots.test.js`
whose synthetic objects should have had followed the schema.
2023-08-14 16:06:15 -07:00
Junyao Chen 208438634c ts: Convert `signup.js` to TypeScript.
Added type annotations for function parameters and return values.
Added non-null assertions or type narrowing to some variables to
enforce type safety.
In `global.d.ts`, I added a namespace `JQueryValidation` which is
neccessary for type annotations inovolved in `jquery-validation`
plugin.
2023-08-14 16:00:20 -07:00
Junyao Chen 113a791532 signup: Use `querySelector` instead of accessing document property.
Previous line written in that way assumes `email_form` will appear
in the `document`. A modernly standard way is to use `querySelector`
selecting by id. Another advantage is easy for enforcing typecheck.

The commit related to this line of change is linked below:
9cb682cada
2023-08-14 16:00:20 -07:00
Junyao Chen c008ba1172 common: Fix parameter type of `autofocus` function.
Throughout the codebase there is currently one usage of `autofocus`
excepts in test files. The only one usage is in `signup.js` and was
supposed to pass a `JQuery` selector to `autofocus` rather than a
string. Passing a selector is more convenient in this case: The
selector accessed in `signup.js` is ready to `trigger` the `focus`
function, while getting a attirubte string from the selector and then
passing to `autofocus` and then accessing the selector by attribute
cost extra layers of work. Therefore writing this commit to simplify
the type for easy usage.

Fixes the test case(s) accordingly.
2023-08-14 16:00:20 -07:00
Zixuan James Li 5301060954 linkifiers: Support dragging and reordering linkifiers.
This also removes sorting on the pattern and the URL template, because
it does not make sense anymore as we make linkifiers draggable.

Fixes #23716
2023-08-14 15:21:48 -07:00
Zixuan James Li 31b7003d61 settings: Rename movable-profile-field-row.
So that we can reuse it for other movable rows in places like
.admin_linkifiers_table.
2023-08-14 15:21:48 -07:00
Zixuan James Li 112a6e445e linkifiers: Support multiple linkifiers in puppeteer tests.
Select the linkifier with `:nth-child` assuming the possibility of other
linkifiers in the realm. This prepares for a later change that requires
us to populate the test database with linkifiers.
2023-08-14 15:21:48 -07:00
David Rosa d205850d54 docs: Update .html links pointing to "Upgrade Zulip" or "Modify Zulip".
Follow-up to #24089.
2023-08-11 16:49:32 -07:00
evykassirer 4c2995c613 stream settings: Warn users before locking them out of a stream.
Organization owners can make streams private even if they're not
subscribed to them, but cannot access private streams they're not
subscribed to. This means they're able to lock themself out of streams.

This change warns users of this and give them a chance to subscribe.

Fixes #26437.
2023-08-11 16:46:41 -07:00
Satyam Bansal fe39f28497 drafts: Rename class name to provide more context. 2023-08-11 15:54:17 -07:00
Satyam Bansal ee0d45d13c drafts: Increase tippy delay for "Delete Drafts" icon.
Previously, the tippy delay was too short, resulting in
the tippy being flashed for an instant, which could lead
to confusion for the users.
2023-08-11 15:54:17 -07:00
Julia Bichler fed866449d drafts: Add functionality to bulk delete drafts.
Fixes #19360.

Co-authored-by: Satyam Bansal <sbansal1999@gmail.com>
2023-08-11 15:54:17 -07:00
Satyam Bansal e4048de0a9 app_components: Convert "overlay_message_controls" div to flexbox.
Previously, the icons were spaced by hardcoded values of margins
and would require changes everytime a new icon is added.
2023-08-11 15:54:17 -07:00
Satyam Bansal b4be3f6266 drafts: Remove unused CSS styles. 2023-08-11 15:54:17 -07:00
Satyam Bansal 0f0c52e096 drafts: Remove classes that had the same effect.
In commit 5edc8fc, abstract classes were added to the
drafts overlay, but the classes that were already there
were not removed. This resulted in the same styles being
applied twice.
2023-08-11 15:54:17 -07:00
Daniil Fadeev 28ba839857 condense: Focus on the message after condensing/expanding it. 2023-08-11 12:39:43 -07:00
Lauryn Menard 225be0bb97 dropdown-list-widget: Remove dropdown-list-body class and reference.
Removes the "dropdown-list-body" class and references as it is no
longer used in the new DropdownWidget. The previous uses of the
class were removed in commit 875d564f2d.
2023-08-11 12:26:47 -07:00
Karl Stolley da4e0c4073 compose: Allow URLs to be pasted onto selected text.
Fixes: #18692
2023-08-09 15:35:14 -07:00
Karl Stolley cd0fd49a83 copy_paste: Strip back tests to only test handler.
This gets us out of the brittle business of trying to mock a
complex event like "paste"--which mocking basically means we
are testing against the mock more than a real event.

The test name is also changed to clarify the handler being
tested.

See CZO discussion behind this change:
https://chat.zulip.org/#narrow/stream/43-automated-testing/topic/mocking.20browser.20events.3F/near/1615110
2023-08-09 15:35:14 -07:00
Karl Stolley 96654c49c7 print: Hide closing X on search bar. 2023-08-09 15:26:10 -07:00
Karl Stolley a73faf6579 tests: Disable flaky test_edit_bot_form test. 2023-08-09 15:25:48 -07:00
Hemant Umre 63173ce1bc stream_settings: Add 'Default stream' option in create stream UI.
In this commit, we introduce a new option in the stream creation
UI - a 'Default stream for new users' checkbox. By default, the
checkbox is set to 'off' and is only visible to admins. This
allow admins to easily designate a stream as the default stream
for new users during stream creation.

Fixes #24048.
2023-08-09 15:20:09 -07:00
Hemant Umre a81715786c stream_settings: Add 'Default stream' option in edit stream UI.
This commit adds a 'Default stream for new users' checkbox in
the stream editing UI to allow admins to easily add or remove
a stream as the default stream for new users. Previously, this
functionality required navigating to separate menu.

Fixes a part of #24048.
2023-08-09 14:38:52 -07:00
nimish d3c99682c3 message_feed: Fix collapsed messages for highlighted texts.
Fixes #26346.
2023-08-08 12:19:54 -07:00
Lalit 119f581470 ts: Migrate `pm_conversations` module to typescript. 2023-08-08 12:19:12 -07:00
evykassirer c3fe96af52 compose: Use stream id instead of stream name for composebox opts. 2023-08-07 17:08:59 -07:00
evykassirer 41b900c2c0 compose: Get stream name from id in create_message_object.
Since this is based off of the id now and doesn't try
to get a stream from a name (because stream is now
selected by a dropdown and not a free-form input field),
we can also remove the error handling for when the
stream name doesn't correspond to any streams.
2023-08-07 17:08:59 -07:00
evykassirer f190419bc9 composebox_typeahead: Get topics_seen_for stream id instead of name. 2023-08-07 17:08:59 -07:00
evykassirer 8cee3dfbf2 snapshot_message: Get stream id from name instead of name from id. 2023-08-07 17:08:59 -07:00
evykassirer d9edcba724 narrow_state: Rename stream() to stream_name() which is more accurate. 2023-08-07 17:08:59 -07:00
evykassirer ba9cfc2cd8 update_messages: Compare to compose stream by id instead of name. 2023-08-07 17:08:59 -07:00
evykassirer 4b23bc1915 narrow: Get stream name from id instead of id from name. 2023-08-07 17:08:59 -07:00
evykassirer ab630b166c compose state: Check if stream is selected with id instead of name. 2023-08-07 17:08:59 -07:00
evykassirer 368c613738 focused recipient: Remove unused stream attribute.
Now that stream_id is used instead of stream, we
can stop setting `focused_recipient.stream`.
2023-08-07 17:08:59 -07:00
evykassirer d7d7828a12 hashchange: Remove hiding of recent topics.
Recent Topics is hidden when we switch to a narrow view
or the All Messages view, so this call is not needed.
It will also become actively unhelpful when we build
a stream-specific recent topics page, because then it
will be possible to have a hash change that shouldn't
close the recent topics view.
2023-08-07 10:06:48 -07:00
evykassirer 40e40e09ba puppeteer: Use `stream_name` instead of `stream` for clarity. 2023-08-07 09:57:40 -07:00
Sahil Batra db3b9e4742 settings: Make custom profile fields table consistent with others.
We change the custom profile fields table to have same header as
of other table and as a result this also makes the page look
better if an organization has zero custom profile fields.
2023-08-06 18:13:33 -07:00
Sahil Batra 7bd7ccc439 bootstrap: Remove bootstrap CSS defined using "table" class.
We have already added the required bootstrap CSS defined using
"table" class in specific files and thus we can remove them
from bootstrap.css.
2023-08-06 18:13:33 -07:00
Sahil Batra 817e39650e css: Re-add bootstrap CSS defined using "table" class.
This commit re-adds bootstrap CSS rules defined using "table"
class to the specific CSS files where CSS for different tables
is present.

This is a prep commit for removing table related bootstrap CSS
from bootstrap.css.
2023-08-06 18:13:33 -07:00