diff --git a/.eslintrc.json b/.eslintrc.json index 03a09183f3..1a032b4f22 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -171,7 +171,6 @@ "lightbox": false, "list_util": false, "ListWidget": false, - "loading": false, "localStorage": false, "local_message": false, "location": false, diff --git a/frontend_tests/node_tests/billing_helpers.js b/frontend_tests/node_tests/billing_helpers.js index f35a9aa8db..d7798d0d7a 100644 --- a/frontend_tests/node_tests/billing_helpers.js +++ b/frontend_tests/node_tests/billing_helpers.js @@ -5,6 +5,7 @@ const fs = require("fs"); const jQueryFactory = require("jquery"); const {JSDOM} = require("jsdom"); +const rewiremock = require("rewiremock/node"); const {set_global, zrequire} = require("../zjsunit/namespace"); const {run_test} = require("../zjsunit/test"); @@ -15,7 +16,8 @@ const dom = new JSDOM(template, {pretendToBeVisual: true}); const jquery = jQueryFactory(dom.window); const page_params = set_global("page_params", {}); -const loading = set_global("loading", {}); +const loading = {__esModule: true}; +rewiremock("../../static/js/loading").with(loading); const history = set_global("history", {}); set_global("document", { title: "Zulip", @@ -26,6 +28,8 @@ set_global("location", { hash: "#billing", }); +rewiremock.enable(); + const helpers = zrequire("helpers", "js/billing/helpers"); run_test("create_ajax_request", (override) => { @@ -286,3 +290,4 @@ run_test("set_tab", () => { assert.equal(state.show_tab_payment_method, 1); assert.equal(state.scrollTop, 2); }); +rewiremock.disable(); diff --git a/frontend_tests/node_tests/compose.js b/frontend_tests/node_tests/compose.js index 1fae9a0509..46e1234324 100644 --- a/frontend_tests/node_tests/compose.js +++ b/frontend_tests/node_tests/compose.js @@ -62,7 +62,8 @@ const transmit = set_global("transmit", {}); const channel = set_global("channel", {}); const stream_edit = set_global("stream_edit", {}); const markdown = set_global("markdown", {}); -const loading = set_global("loading", {}); +const loading = {__esModule: true}; +rewiremock("../../static/js/loading").with(loading); const page_params = set_global("page_params", {}); const resize = set_global("resize", {}); const subs = set_global("subs", {}); diff --git a/frontend_tests/node_tests/settings_org.js b/frontend_tests/node_tests/settings_org.js index e2066d93aa..fcb212dcf5 100644 --- a/frontend_tests/node_tests/settings_org.js +++ b/frontend_tests/node_tests/settings_org.js @@ -26,6 +26,7 @@ const _FormData = function () { }; const _loading = { + __esModule: true, make_indicator: noop, destroy_indicator: noop, }; @@ -73,7 +74,7 @@ const _ListWidget = { set_global("csrf_token", "token-stub"); set_global("FormData", _FormData); set_global("jQuery", _jQuery); -set_global("loading", _loading); +rewiremock("../../static/js/loading").with(_loading); set_global("realm_logo", _realm_logo); set_global("ui_report", _ui_report); set_global("ListWidget", _ListWidget); diff --git a/frontend_tests/node_tests/settings_profile_fields.js b/frontend_tests/node_tests/settings_profile_fields.js index 39443d4c5d..7ebd955c3a 100644 --- a/frontend_tests/node_tests/settings_profile_fields.js +++ b/frontend_tests/node_tests/settings_profile_fields.js @@ -10,7 +10,9 @@ const {run_test} = require("../zjsunit/test"); const $ = require("../zjsunit/zjquery"); const page_params = set_global("page_params", {}); -const loading = set_global("loading", {}); +const loading = {__esModule: true}; + +rewiremock("../../static/js/loading").with(loading); const SHORT_TEXT_ID = 1; const CHOICE_ID = 3; diff --git a/static/js/attachments_ui.js b/static/js/attachments_ui.js index 0ab1cdcb7d..3c81190e59 100644 --- a/static/js/attachments_ui.js +++ b/static/js/attachments_ui.js @@ -3,6 +3,8 @@ const render_settings_upload_space_stats = require("../templates/settings/upload_space_stats.hbs"); const render_uploaded_files_list = require("../templates/uploaded_files_list.hbs"); +const loading = require("./loading"); + let attachments; let upload_space_used; diff --git a/static/js/billing/helpers.js b/static/js/billing/helpers.js index 81372d6d44..6d3d596e09 100644 --- a/static/js/billing/helpers.js +++ b/static/js/billing/helpers.js @@ -1,5 +1,7 @@ "use strict"; +const loading = require("../loading"); + exports.create_ajax_request = function ( url, form_name, diff --git a/static/js/bundles/app.js b/static/js/bundles/app.js index 187e50439d..ad1b2f5da3 100644 --- a/static/js/bundles/app.js +++ b/static/js/bundles/app.js @@ -14,7 +14,6 @@ import "flatpickr/dist/plugins/confirmDate/confirmDate"; // Import app JS import "../i18n"; -import "../loading"; import "../vdom"; import "../keydown_util"; import "../rtl"; diff --git a/static/js/compose.js b/static/js/compose.js index 9b25b6be00..8cfd503f6b 100644 --- a/static/js/compose.js +++ b/static/js/compose.js @@ -11,6 +11,7 @@ const render_compose_private_stream_alert = require("../templates/compose_privat const common = require("./common"); const echo = require("./echo"); +const loading = require("./loading"); const peer_data = require("./peer_data"); const people = require("./people"); const rendered_markdown = require("./rendered_markdown"); diff --git a/static/js/global.d.ts b/static/js/global.d.ts index ff36dea3e0..c6849a0571 100644 --- a/static/js/global.d.ts +++ b/static/js/global.d.ts @@ -47,7 +47,6 @@ declare let keydown_util: any; declare let lightbox: any; declare let list_util: any; declare let list_widget: any; -declare let loading: any; declare let local_message: any; declare let markdown: any; declare let message_edit: any; diff --git a/static/js/loading.js b/static/js/loading.js index f35f081fa5..be25f36e63 100644 --- a/static/js/loading.js +++ b/static/js/loading.js @@ -1,8 +1,6 @@ -"use strict"; +import render_loader from "../templates/loader.hbs"; -const render_loader = require("../templates/loader.hbs"); - -exports.make_indicator = function (outer_container, opts) { +export function make_indicator(outer_container, opts) { opts = opts || {}; let container = outer_container; @@ -47,9 +45,9 @@ exports.make_indicator = function (outer_container, opts) { container.css({width: 38 + text_width, height: 0}); outer_container.data("destroying", false); -}; +} -exports.destroy_indicator = function (container) { +export function destroy_indicator(container) { if (container.data("destroying")) { return; } @@ -62,6 +60,4 @@ exports.destroy_indicator = function (container) { container.removeData("spinner_obj"); container.empty(); container.css({width: 0, height: 0}); -}; - -window.loading = exports; +} diff --git a/static/js/message_edit.js b/static/js/message_edit.js index 9d578101d8..5009b465e6 100644 --- a/static/js/message_edit.js +++ b/static/js/message_edit.js @@ -6,6 +6,7 @@ const render_message_edit_form = require("../templates/message_edit_form.hbs"); const render_topic_edit_form = require("../templates/topic_edit_form.hbs"); const echo = require("./echo"); +const loading = require("./loading"); const currently_editing_messages = new Map(); let currently_deleting_messages = []; diff --git a/static/js/message_scroll.js b/static/js/message_scroll.js index b9f29479db..10250b9783 100644 --- a/static/js/message_scroll.js +++ b/static/js/message_scroll.js @@ -2,6 +2,8 @@ const _ = require("lodash"); +const loading = require("./loading"); + let actively_scrolling = false; // Tracks whether the next scroll that will complete is initiated by diff --git a/static/js/message_util.js b/static/js/message_util.js index b563df06d8..b51ea391f8 100644 --- a/static/js/message_util.js +++ b/static/js/message_util.js @@ -1,5 +1,7 @@ "use strict"; +const loading = require("./loading"); + exports.do_unread_count_updates = function do_unread_count_updates(messages) { unread.process_loaded_messages(messages); unread_ui.update_unread_counts(); diff --git a/static/js/settings_bots.js b/static/js/settings_bots.js index 4cf031be6e..ed61bb8b00 100644 --- a/static/js/settings_bots.js +++ b/static/js/settings_bots.js @@ -7,6 +7,7 @@ const render_edit_bot = require("../templates/edit_bot.hbs"); const render_settings_edit_embedded_bot_service = require("../templates/settings/edit_embedded_bot_service.hbs"); const render_settings_edit_outgoing_webhook_service = require("../templates/settings/edit_outgoing_webhook_service.hbs"); +const loading = require("./loading"); const people = require("./people"); exports.hide_errors = function () { diff --git a/static/js/settings_display.js b/static/js/settings_display.js index d6843e9cfc..78b4c83594 100644 --- a/static/js/settings_display.js +++ b/static/js/settings_display.js @@ -1,6 +1,7 @@ "use strict"; const emojisets = require("./emojisets"); +const loading = require("./loading"); const settings_config = require("./settings_config"); const settings_ui = require("./settings_ui"); diff --git a/static/js/settings_emoji.js b/static/js/settings_emoji.js index b8229a1192..0d4ca0584c 100644 --- a/static/js/settings_emoji.js +++ b/static/js/settings_emoji.js @@ -4,6 +4,7 @@ const emoji = require("../shared/js/emoji"); const render_admin_emoji_list = require("../templates/admin_emoji_list.hbs"); const render_settings_emoji_settings_tip = require("../templates/settings/emoji_settings_tip.hbs"); +const loading = require("./loading"); const people = require("./people"); const meta = { diff --git a/static/js/settings_exports.js b/static/js/settings_exports.js index cc1a14953c..dfa8d604a7 100644 --- a/static/js/settings_exports.js +++ b/static/js/settings_exports.js @@ -2,6 +2,7 @@ const render_admin_export_list = require("../templates/admin_export_list.hbs"); +const loading = require("./loading"); const people = require("./people"); const meta = { diff --git a/static/js/settings_invites.js b/static/js/settings_invites.js index 1feae4a67c..25a5b4c07e 100644 --- a/static/js/settings_invites.js +++ b/static/js/settings_invites.js @@ -3,6 +3,7 @@ const render_admin_invites_list = require("../templates/admin_invites_list.hbs"); const render_settings_revoke_invite_modal = require("../templates/settings/revoke_invite_modal.hbs"); +const loading = require("./loading"); const people = require("./people"); const settings_config = require("./settings_config"); const util = require("./util"); diff --git a/static/js/settings_linkifiers.js b/static/js/settings_linkifiers.js index 589838b6ff..d35e5caeb1 100644 --- a/static/js/settings_linkifiers.js +++ b/static/js/settings_linkifiers.js @@ -2,6 +2,8 @@ const render_admin_filter_list = require("../templates/admin_filter_list.hbs"); +const loading = require("./loading"); + const meta = { loaded: false, }; diff --git a/static/js/settings_org.js b/static/js/settings_org.js index 0555d1c114..a1d0f5061d 100644 --- a/static/js/settings_org.js +++ b/static/js/settings_org.js @@ -4,6 +4,7 @@ const pygments_data = require("../generated/pygments_data.json"); const render_settings_admin_auth_methods_list = require("../templates/settings/admin_auth_methods_list.hbs"); const render_settings_admin_realm_domains_list = require("../templates/settings/admin_realm_domains_list.hbs"); +const loading = require("./loading"); const settings_config = require("./settings_config"); const settings_ui = require("./settings_ui"); diff --git a/static/js/settings_profile_fields.js b/static/js/settings_profile_fields.js index 3d60b94e94..36d77647c2 100644 --- a/static/js/settings_profile_fields.js +++ b/static/js/settings_profile_fields.js @@ -5,6 +5,7 @@ const {default: Sortable} = require("sortablejs"); const render_admin_profile_field_list = require("../templates/admin_profile_field_list.hbs"); const render_settings_profile_field_choice = require("../templates/settings/profile_field_choice.hbs"); +const loading = require("./loading"); const settings_ui = require("./settings_ui"); const meta = { diff --git a/static/js/settings_streams.js b/static/js/settings_streams.js index c8aa72b091..6e16c1a34a 100644 --- a/static/js/settings_streams.js +++ b/static/js/settings_streams.js @@ -2,6 +2,8 @@ const render_admin_default_streams_list = require("../templates/admin_default_streams_list.hbs"); +const loading = require("./loading"); + const meta = { loaded: false, }; diff --git a/static/js/settings_ui.js b/static/js/settings_ui.js index 2a57a238f8..9dbd893e4d 100644 --- a/static/js/settings_ui.js +++ b/static/js/settings_ui.js @@ -1,3 +1,5 @@ +import * as loading from "./loading"; + export function display_checkmark($elem) { const check_mark = document.createElement("img"); check_mark.src = "/static/images/checkbox-green.svg"; diff --git a/static/js/settings_users.js b/static/js/settings_users.js index 3ac0132bbc..f70e0093e7 100644 --- a/static/js/settings_users.js +++ b/static/js/settings_users.js @@ -4,6 +4,7 @@ const render_admin_bot_form = require("../templates/admin_bot_form.hbs"); const render_admin_human_form = require("../templates/admin_human_form.hbs"); const render_admin_user_list = require("../templates/admin_user_list.hbs"); +const loading = require("./loading"); const people = require("./people"); const settings_config = require("./settings_config"); const settings_data = require("./settings_data"); diff --git a/static/js/setup.js b/static/js/setup.js index da877ee423..0119c0021b 100644 --- a/static/js/setup.js +++ b/static/js/setup.js @@ -1,3 +1,4 @@ +import * as loading from "./loading"; import * as util from "./util"; // Miscellaneous early setup. diff --git a/static/js/stream_create.js b/static/js/stream_create.js index d6212d3123..e2456cb400 100644 --- a/static/js/stream_create.js +++ b/static/js/stream_create.js @@ -2,6 +2,7 @@ import render_announce_stream_docs from "../templates/announce_stream_docs.hbs"; import render_new_stream_users from "../templates/new_stream_users.hbs"; import render_subscription_invites_warning_modal from "../templates/subscription_invites_warning_modal.hbs"; +import * as loading from "./loading"; import * as peer_data from "./peer_data"; import * as people from "./people"; diff --git a/static/js/subs.js b/static/js/subs.js index 3f4190ba9e..3bfb05da6d 100644 --- a/static/js/subs.js +++ b/static/js/subs.js @@ -8,6 +8,7 @@ const render_subscription_table_body = require("../templates/subscription_table_ const render_subscriptions = require("../templates/subscriptions.hbs"); const components = require("./components"); +const loading = require("./loading"); const people = require("./people"); const search_util = require("./search_util"); const stream_create = require("./stream_create");