zulip/frontend_tests/node_tests
Greg Price dcb5bb7914 typing_status: Combine two parameters into one, with a maybe-type.
The main motivation for this change is to simplify this interface
and make it easier to reason about.

The case where it affects the behavior is when
is_valid_conversation() returns false, while current_recipient
and get_recipient() agree on some truthy value.

This means the message-content textarea is empty -- in fact the
user just cleared it, because we got here from an input event on
it -- but the compose box is still open to some PM thread that we
have a typing notification still outstanding for.

The old behavior is that in this situation we would ignore the
fact that the content was empty, and go ahead and prolong the
typing notification, by updating our timer and possibly sending a
"still typing" notice.

This contrasts with the behavior (both old and new) in the case
where the content is empty and we *don't* already have an
outstanding typing notification, or we have one to some other
thread.  In that case, we cancel any existing notification and
don't start a new one, exactly as if `stop` were called
(e.g. because the user closed the compose box.)

The new behavior is that we always treat clearing the input as
"stopped typing": not only in those cases where we already did,
but also in the case where we still have the same recipients.
(Which seems like probably the common case.)

That seems like the preferable behavior; indeed it's hard to see
the point of the "compose_empty" logic if restricted to the other
cases.  It also makes the interface simpler.

Those two properties don't seem like a coincidence, either: the
complicated interface made it difficult to unpack exactly what
logic we actually had, which made it easy for surprising wrinkles
to hang out indefinitely.
2019-10-24 14:56:56 -07:00
..
.eslintrc.json lint: Add JS indentation eslint rules for node_tests. 2018-05-06 19:35:18 -07:00
activity.js right sidebar: Ensure .user-with-count gets added to correct li element. 2019-07-16 11:33:02 -07:00
alert_words_ui.js cleanup: Delete trailing newlines. 2019-08-06 23:29:11 -07:00
alert_words.js node tests: Consolidate some set_global() calls. 2018-08-02 08:02:12 -04:00
billing_helpers.js billing: Add node tests for helpers.js. 2019-05-30 10:34:56 -07:00
billing.js billing: Add node test for billing.js. 2019-01-08 10:47:35 -08:00
bot_data.js bot_data: Rename delete to del. 2019-07-04 16:48:33 -07:00
buddy_data.js user status: Change Online now to Active now in full user profile. 2019-08-07 16:20:19 -07:00
buddy_list.js ui.get_scroll_element: Set up SimpleBar if it’s expected but missing. 2019-07-25 16:18:54 -07:00
channel.js node tests: Consolidate some set_global() calls. 2018-08-02 08:02:12 -04:00
color_data.js stream_color: Make stream color assignment more efficient. 2018-11-29 13:00:25 -08:00
colorspace.js cleanup: Delete trailing newlines. 2019-08-06 23:29:11 -07:00
common.js static/js/common: Add Ctrl key mapping to Cmd for MacOS. 2019-07-08 20:07:49 -07:00
components.js components: Add disable_tab attribute. 2019-05-13 17:27:32 -07:00
compose_actions.js compose_box: Prepopulate stream if possible. 2019-07-31 10:20:24 -07:00
compose_fade.js subject -> topic: Rename compose fields. 2018-12-09 21:28:45 -08:00
compose_pm_pill.js compose pill: Add has_unconverted_data() helper. 2018-10-12 11:20:30 -07:00
compose_ui.js compose: Update placeholder text depending on the narrow. 2019-07-29 15:51:50 -07:00
compose.js zjsunit: Add make_handlebars abstraction. 2019-07-12 21:11:14 -07:00
composebox_typeahead.js Revert "compose: Fix cursor placement timing bug when selecting a typeahead." 2019-07-29 18:05:46 -07:00
copy_and_paste.js webpack: Elide node_modules when importing JS modules. 2019-06-26 16:49:32 -07:00
dict.js Add run_test helper for individual tests. 2018-05-15 08:24:44 -07:00
dispatch.js data export: Fix success banner not clearing. 2019-08-28 15:23:39 -07:00
drafts.js zjsunit: Add make_handlebars abstraction. 2019-07-12 21:11:14 -07:00
echo.js echo: Update topic_links when we get messages back from server. (#12832) 2019-07-20 14:38:52 -07:00
emoji_picker.js emoji: Move emoji_collection from emoji picker to emoji.js. 2018-07-23 12:35:08 -07:00
emoji.js emoji: Change fallback emojiset for text emojiset. 2018-09-21 18:34:12 -07:00
fetch_status.js message_fetch: Deduplicate logic for finish_newer_batch. 2018-12-13 08:43:56 -08:00
filter.js search: Advertise the ability to search shared history. 2019-10-09 15:12:52 -07:00
general.js search: Don't mark messages as read in search narrow. 2019-07-17 17:58:20 -07:00
hash_util.js frontend: Use topic on message. 2019-01-07 19:20:56 -08:00
hashchange.js hashchange: Use hashchange event listener. 2019-07-09 11:31:35 -07:00
hotkey.js static/js/common: Use platform navigator to detect MacOS. 2019-06-24 14:04:42 -07:00
i18n.js templates: Replace templates.render with require calls. 2019-07-12 21:11:14 -07:00
input_pill.js templates: Replace templates.render with require calls. 2019-07-12 21:11:14 -07:00
keydown_util.js keydown_util: Ignore alt-arrow and similar things. 2018-12-04 12:24:39 -08:00
lightbox.js lightbox: Set URL in payload instead of computing from video IDs. 2019-05-29 23:01:54 -07:00
list_cursor.js node tests: Bring list_cursor to 100% coverage. 2018-08-24 10:00:04 -07:00
list_render.js refactor: Group header and body under table for .progressive-table-wrapper. 2019-08-22 13:13:24 -07:00
markdown.js markdown: Render ordered lists using <ol> markup. 2019-09-08 16:42:20 -07:00
message_edit.js webpack: Elide node_modules when importing JS modules. 2019-06-26 16:49:32 -07:00
message_events.js frontend: Use topic on message. 2019-01-07 19:20:56 -08:00
message_fetch.js message_fetch: Use user IDs for supported operators. 2019-07-13 11:35:37 -07:00
message_flags.js search: Don't mark messages as read in search narrow. 2019-07-17 17:58:20 -07:00
message_list_data.js search: Don't mark messages as read in search narrow. 2019-07-17 17:58:20 -07:00
message_list_view.js webpack: Elide node_modules when importing JS modules. 2019-06-26 16:49:32 -07:00
message_list.js message_list: Replace buggy rerender_the_whole_thing. 2019-09-18 11:43:21 -07:00
message_store.js tests/message_store: Assert both flag modifying code paths are consistent. 2019-10-21 22:25:25 -07:00
muting.js page load: Fix two bugs related to muting/unreads. 2018-12-15 13:44:30 -08:00
narrow_activate.js message_list.js: Add setter for narrowed. 2019-07-08 21:22:54 -07:00
narrow_local.js frontend: Use topic on message. 2019-01-07 19:20:56 -08:00
narrow_state.js filter: Eliminate a few "subject" references. 2018-12-29 11:38:39 -08:00
narrow_unread.js unread: Don't count wildcard mentions in muted streams/topics. 2019-10-21 22:23:29 -07:00
narrow.js narrows: Show invalid banner for invalid narrows. 2019-06-24 13:14:10 -07:00
notifications.js notifications: Disable default permission pop up. 2019-06-12 16:12:13 -07:00
password.js settings_account: Use webpack asynchronous require to load zxcvbn. 2019-07-02 16:50:03 -07:00
people_errors.js minor: Change error to warning for missing user ids. 2018-10-29 12:57:15 -07:00
people.js message_fetch: Use user IDs for supported operators. 2019-07-13 11:35:37 -07:00
pm_conversations.js cleanup: Delete trailing newlines. 2019-08-06 23:29:11 -07:00
pm_list.js left sidebar: Fix bot availability status in "private messages". 2019-09-18 17:40:25 -07:00
popovers.js settings_org: Enhance show_emails for admins only case too. 2019-08-02 15:20:55 -07:00
presence.js cleanup: Delete trailing newlines. 2019-08-06 23:29:11 -07:00
reactions.js message_view: Add js tooltip hovers for emoji reactions. 2019-07-19 12:45:44 -07:00
recent_senders.js frontend: Use topic on message. 2019-01-07 19:20:56 -08:00
rtl.js rtl.js: Fix support for supplementary planes of unicode characters (>= U+10000). 2018-08-14 11:39:29 -07:00
schema.js lint: Fix comma spacing in node tests. 2018-12-07 13:14:28 -08:00
scroll_util.js cleanup: Delete trailing newlines. 2019-08-06 23:29:11 -07:00
search_legacy.js Simplify narrow/search interactions. 2018-10-24 16:54:35 -07:00
search_pill.js zjsunit: Add make_handlebars abstraction. 2019-07-12 21:11:14 -07:00
search_suggestion_legacy.js search: Add streams:public to search entire history of public streams. 2019-08-22 13:40:49 -07:00
search_suggestion.js search: Add streams:public to search entire history of public streams. 2019-08-22 13:40:49 -07:00
search.js Revert "search: Open typeahead on empty string only if lookup triggered by Tab." 2018-12-04 13:58:00 -08:00
server_events.js pointer.js: Add setter for server_furthest_read. 2019-07-08 21:22:54 -07:00
settings_bots.js zjsunit: Add make_handlebars abstraction. 2019-07-12 21:11:14 -07:00
settings_muting.js muting: Use stream_id in muting.get_muted_topics(). 2018-12-14 16:05:37 -08:00
settings_org.js data export: Add UI to trigger data export. 2019-08-12 18:21:38 -07:00
settings_profile_fields.js cleanup: Delete trailing newlines. 2019-08-06 23:29:11 -07:00
settings_user_groups.js zjsunit: Add stub_templates abstraction. 2019-07-12 21:11:14 -07:00
stream_data.js static/js/stream_data: Extract function receives_notifications. 2019-06-24 14:46:45 -07:00
stream_events.js cleanup: Delete trailing newlines. 2019-08-06 23:29:11 -07:00
stream_list.js ui.get_scroll_element: Set up SimpleBar if it’s expected but missing. 2019-07-25 16:18:54 -07:00
stream_search.js left sidebar: Fix closing stream search. 2019-02-25 09:47:44 -08:00
stream_sort.js eslint: Enable no-extra-parens rule. 2018-06-11 07:51:24 -04:00
submessage.js submessages: Add update_message() function. 2018-05-30 14:47:36 -07:00
subs.js zjsunit: Add stub_templates abstraction. 2019-07-12 21:11:14 -07:00
support.js support: Refactor realm details into a seperate template. 2019-10-21 16:52:46 -07:00
templates.js stream settings: Replace email address hint popup with link to docs. 2019-09-05 11:48:32 -07:00
timerender.js user status: Changes to Last active field of Full User Profile. 2019-08-07 16:20:19 -07:00
top_left_corner.js top left: Simplify markup for main links. 2019-01-30 13:53:20 -08:00
topic_data.js frontend: Use topic on message. 2019-01-07 19:20:56 -08:00
topic_generator.js static/js/stream_data: Rename in_home_view functions. 2019-05-30 21:39:06 -07:00
topic_list.js zjsunit: Add stub_templates abstraction. 2019-07-12 21:11:14 -07:00
transmit.js frontend: Use topic on message. 2019-01-07 19:20:56 -08:00
typeahead_helper.js typeahead: Prioritize language names subset of another for sorting. 2019-09-26 13:00:21 -07:00
typing_data.js cleanup: Delete trailing newlines. 2019-08-06 23:29:11 -07:00
typing_status.js typing_status: Combine two parameters into one, with a maybe-type. 2019-10-24 14:56:56 -07:00
ui_init.js unread: Enable the load_server_counts setting for everyone. 2019-07-18 13:34:55 -07:00
ui.js hotkey: Update test for hotkey deprecation. 2018-09-21 10:59:55 -07:00
unread.js unread: Don't count wildcard mentions in muted streams/topics. 2019-10-21 22:23:29 -07:00
upgrade.js billing: Seperate out tests for invoice and autopay form fields. 2019-05-30 10:34:56 -07:00
upload.js uploads: Remove unusable UI elements if file uploading is disabled. 2019-05-08 17:10:07 -07:00
user_events.js node: Add test for updating bot_owner_id and enable user_events test suite. 2019-05-30 15:43:18 -07:00
user_groups.js typescript: Migrate dict.js to typescript. 2019-03-21 10:48:44 -07:00
user_pill.js pills: Enable user avatar images for user pills. 2018-07-10 15:07:56 +05:30
user_status.js user status: Add ability to edit status text. 2019-01-29 10:27:49 -08:00
util.js message_edit_history: Add UI for seeing topic edits. 2019-03-25 15:10:47 -07:00
voting_widget.js zjsunit: Add stub_templates abstraction. 2019-07-12 21:11:14 -07:00
widgetize.js poll-widget: Refactor comment to option. 2019-01-29 09:34:14 -08:00
zblueslip.js blueslip: Replace jQuery wrappers with error event listener. 2019-07-09 11:38:20 -07:00
zjquery.js zjquery: Add length attribute to wrapped elements. 2019-05-29 23:01:54 -07:00