diff --git a/web/src/compose_setup.js b/web/src/compose_setup.js
index af738b4bd1..894f5ece64 100644
--- a/web/src/compose_setup.js
+++ b/web/src/compose_setup.js
@@ -103,8 +103,6 @@ export function initialize() {
const update_compose_max_height = new ResizeObserver(resize.reset_compose_message_max_height);
update_compose_max_height.observe(document.querySelector("#compose"));
- upload.feature_check($("#compose .compose_upload_file"));
-
function get_input_info(event) {
const $edit_banners_container = $(event.target).closest(".edit_form_banners");
const is_edit_input = Boolean($edit_banners_container.length);
diff --git a/web/src/message_edit.js b/web/src/message_edit.js
index 07590da196..f1ba1f3392 100644
--- a/web/src/message_edit.js
+++ b/web/src/message_edit.js
@@ -453,7 +453,7 @@ function edit_message($row, raw_content) {
const max_file_upload_size = realm.max_file_upload_size_mib;
let file_upload_enabled = false;
- if (max_file_upload_size > 0) {
+ if (max_file_upload_size > 0 && upload.feature_check()) {
file_upload_enabled = true;
}
@@ -483,7 +483,6 @@ function edit_message($row, raw_content) {
$form
.find(".message-edit-feature-group .audio_link")
.toggle(compose_call.compute_show_audio_chat_button());
- upload.feature_check($(`#edit_form_${CSS.escape(rows.id($row))} .compose_upload_file`));
const $message_edit_content = $row.find("textarea.message_edit_content");
const $message_edit_countdown_timer = $row.find(".message_edit_countdown_timer");
diff --git a/web/src/ui_init.js b/web/src/ui_init.js
index f334ee0c14..95712b2393 100644
--- a/web/src/ui_init.js
+++ b/web/src/ui_init.js
@@ -176,7 +176,7 @@ function initialize_compose_box() {
$(
render_compose({
embedded: $("#compose").attr("data-embedded") === "",
- file_upload_enabled: realm.max_file_upload_size_mib > 0,
+ file_upload_enabled: realm.max_file_upload_size_mib > 0 && upload.feature_check(),
giphy_enabled: giphy.is_giphy_enabled(),
max_stream_name_length: realm.max_stream_name_length,
max_topic_length: realm.max_topic_length,
diff --git a/web/src/upload.js b/web/src/upload.js
index d34b819c86..33bdb79163 100644
--- a/web/src/upload.js
+++ b/web/src/upload.js
@@ -26,11 +26,9 @@ export function compose_upload_cancel() {
compose_upload_object.cancelAll();
}
-// Show the upload button only if the browser supports it.
-export function feature_check($upload_button) {
- if (window.XMLHttpRequest && new window.XMLHttpRequest().upload) {
- $upload_button.removeClass("notdisplayed");
- }
+export function feature_check() {
+ // Show the upload button only if the browser supports it.
+ return window.XMLHttpRequest && new window.XMLHttpRequest().upload;
}
export function get_translated_status(file) {
diff --git a/web/templates/compose_control_buttons.hbs b/web/templates/compose_control_buttons.hbs
index a67fafcb8b..5001d35705 100644
--- a/web/templates/compose_control_buttons.hbs
+++ b/web/templates/compose_control_buttons.hbs
@@ -8,7 +8,7 @@
{{#if file_upload_enabled }}
{{/if}}
diff --git a/web/tests/compose.test.js b/web/tests/compose.test.js
index e624bebb60..ea1a7a3a60 100644
--- a/web/tests/compose.test.js
+++ b/web/tests/compose.test.js
@@ -123,7 +123,6 @@ function test_ui(label, f) {
function initialize_handlers({override}) {
override(realm, "realm_available_video_chat_providers", {disabled: {id: 0}});
override(realm, "realm_video_chat_provider", 0);
- override(upload, "feature_check", noop);
override(resize, "watch_manual_resize", noop);
compose_setup.initialize();
}
@@ -510,7 +509,6 @@ test_ui("initialize", ({override}) => {
override(upload, "compose_upload_cancel", () => {
uppy_cancel_all_called = true;
});
- override(upload, "feature_check", noop);
compose_setup.initialize();
diff --git a/web/tests/compose_video.test.js b/web/tests/compose_video.test.js
index cec004a581..b7efcdab42 100644
--- a/web/tests/compose_video.test.js
+++ b/web/tests/compose_video.test.js
@@ -4,14 +4,13 @@ const {strict: assert} = require("assert");
const events = require("./lib/events");
const {mock_esm, set_global, with_overrides, zrequire} = require("./lib/namespace");
-const {run_test, noop} = require("./lib/test");
+const {run_test} = require("./lib/test");
const $ = require("./lib/zjquery");
const {current_user, page_params, realm} = require("./lib/zpage_params");
const channel = mock_esm("../src/channel");
const compose_closed_ui = mock_esm("../src/compose_closed_ui");
const compose_ui = mock_esm("../src/compose_ui");
-const upload = mock_esm("../src/upload");
mock_esm("../src/resize", {
watch_manual_resize() {},
});
@@ -70,8 +69,6 @@ function test(label, f) {
test("videos", ({override}) => {
realm.realm_video_chat_provider = realm_available_video_chat_providers.disabled.id;
- override(upload, "feature_check", noop);
-
stub_out_video_calls();
compose_setup.initialize();
@@ -245,26 +242,20 @@ test("videos", ({override}) => {
})();
});
-test("test_video_chat_button_toggle disabled", ({override}) => {
- override(upload, "feature_check", noop);
-
+test("test_video_chat_button_toggle disabled", () => {
realm.realm_video_chat_provider = realm_available_video_chat_providers.disabled.id;
compose_setup.initialize();
assert.equal($(".compose-control-buttons-container .video_link").visible(), false);
});
-test("test_video_chat_button_toggle no url", ({override}) => {
- override(upload, "feature_check", noop);
-
+test("test_video_chat_button_toggle no url", () => {
realm.realm_video_chat_provider = realm_available_video_chat_providers.jitsi_meet.id;
page_params.jitsi_server_url = null;
compose_setup.initialize();
assert.equal($(".compose-control-buttons-container .video_link").visible(), false);
});
-test("test_video_chat_button_toggle enabled", ({override}) => {
- override(upload, "feature_check", noop);
-
+test("test_video_chat_button_toggle enabled", () => {
realm.realm_video_chat_provider = realm_available_video_chat_providers.jitsi_meet.id;
realm.realm_jitsi_server_url = "https://meet.jit.si";
compose_setup.initialize();
diff --git a/web/tests/upload.test.js b/web/tests/upload.test.js
index 1361b11a3d..ba6a646600 100644
--- a/web/tests/upload.test.js
+++ b/web/tests/upload.test.js
@@ -40,14 +40,10 @@ function test(label, f) {
}
test("feature_check", ({override}) => {
- const $upload_button = $.create("upload-button-stub");
- $upload_button.addClass("notdisplayed");
- upload.feature_check($upload_button);
- assert.ok($upload_button.hasClass("notdisplayed"));
+ assert.ok(!upload.feature_check());
override(window, "XMLHttpRequest", () => ({upload: true}));
- upload.feature_check($upload_button);
- assert.ok(!$upload_button.hasClass("notdisplayed"));
+ assert.ok(upload.feature_check());
});
test("get_item", () => {