setup: Fix wildly unsafe cast in $.fn.expectOne.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
Anders Kaseorg 2023-09-08 13:13:54 -07:00 committed by Tim Abbott
parent affdffdda5
commit 55e4be0939
3 changed files with 4 additions and 4 deletions

View File

@ -72,7 +72,7 @@ function display_avatar_delete_started(): void {
export function build_user_avatar_widget(upload_function: UploadFunction): void {
const get_file_input = function (): JQuery<HTMLInputElement> {
return $("#user-avatar-upload-widget .image_file_input").expectOne();
return $<HTMLInputElement>("#user-avatar-upload-widget input.image_file_input").expectOne();
};
if (page_params.avatar_source === "G") {

2
web/src/global.d.ts vendored
View File

@ -23,7 +23,7 @@ declare namespace JQueryValidation {
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
interface JQuery {
expectOne<T extends HTMLElement>(): JQuery<T>;
expectOne(): this;
get_offset_to_window(): DOMRect;
tab(action?: string): this; // From web/third/bootstrap
modal(action?: string): this; // From web/third/bootstrap

View File

@ -26,10 +26,10 @@ $(() => {
return this[0].getBoundingClientRect();
};
$.fn.expectOne = function <T>() {
$.fn.expectOne = function () {
if (blueslip && this.length !== 1) {
blueslip.error("Expected one element in jQuery set", {length: this.length});
}
return this as JQuery<T>;
return this;
};
});