mirror of
https://github.com/zulip/zulip.git
synced 2025-10-23 04:52:12 +00:00
settings: Move update_user_custom_profile_fields function.
This is a prep commit to avoid import cycles when we would use update_user_custom_profile_fields function in custom_profile_fields_ui.ts in next commit.
This commit is contained in:
@@ -6,10 +6,12 @@ import render_settings_custom_user_profile_field from "../templates/settings/cus
|
||||
|
||||
import {Typeahead} from "./bootstrap_typeahead.ts";
|
||||
import * as bootstrap_typeahead from "./bootstrap_typeahead.ts";
|
||||
import * as channel from "./channel.ts";
|
||||
import {$t} from "./i18n.ts";
|
||||
import * as people from "./people.ts";
|
||||
import * as pill_typeahead from "./pill_typeahead.ts";
|
||||
import * as settings_components from "./settings_components.ts";
|
||||
import * as settings_ui from "./settings_ui.ts";
|
||||
import {current_user, realm} from "./state_data.ts";
|
||||
import * as typeahead_helper from "./typeahead_helper.ts";
|
||||
import type {UserPillWidget} from "./user_pill.ts";
|
||||
@@ -77,6 +79,37 @@ export function append_custom_profile_fields(element_id: string, user_id: number
|
||||
}
|
||||
}
|
||||
|
||||
export type CustomProfileFieldData = {
|
||||
id: number;
|
||||
value?: number[] | string;
|
||||
};
|
||||
|
||||
function update_custom_profile_field(
|
||||
field: CustomProfileFieldData,
|
||||
method: channel.AjaxRequestHandler,
|
||||
): void {
|
||||
let data;
|
||||
if (method === channel.del) {
|
||||
data = JSON.stringify([field.id]);
|
||||
} else {
|
||||
data = JSON.stringify([field]);
|
||||
}
|
||||
|
||||
const $spinner_element = $(
|
||||
`.custom_user_field[data-field-id="${CSS.escape(field.id.toString())}"] .custom-field-status`,
|
||||
).expectOne();
|
||||
settings_ui.do_settings_change(method, "/json/users/me/profile_data", {data}, $spinner_element);
|
||||
}
|
||||
|
||||
export function update_user_custom_profile_fields(
|
||||
fields: CustomProfileFieldData[],
|
||||
method: channel.AjaxRequestHandler,
|
||||
): void {
|
||||
for (const field of fields) {
|
||||
update_custom_profile_field(field, method);
|
||||
}
|
||||
}
|
||||
|
||||
export type PillUpdateField = {
|
||||
type: number;
|
||||
field_data: string;
|
||||
|
@@ -13,7 +13,7 @@ import * as channel from "./channel.ts";
|
||||
import * as common from "./common.ts";
|
||||
import {csrf_token} from "./csrf.ts";
|
||||
import * as custom_profile_fields_ui from "./custom_profile_fields_ui.ts";
|
||||
import type {PillUpdateField} from "./custom_profile_fields_ui.ts";
|
||||
import type {CustomProfileFieldData, PillUpdateField} from "./custom_profile_fields_ui.ts";
|
||||
import * as dialog_widget from "./dialog_widget.ts";
|
||||
import {$t_html} from "./i18n.ts";
|
||||
import * as keydown_util from "./keydown_util.ts";
|
||||
@@ -202,43 +202,15 @@ function settings_change_error(message_html: string, xhr?: JQuery.jqXHR): void {
|
||||
dialog_widget.hide_dialog_spinner();
|
||||
}
|
||||
|
||||
function update_custom_profile_field(
|
||||
field: CustomProfileFieldData,
|
||||
method: channel.AjaxRequestHandler,
|
||||
): void {
|
||||
let data;
|
||||
if (method === channel.del) {
|
||||
data = JSON.stringify([field.id]);
|
||||
} else {
|
||||
data = JSON.stringify([field]);
|
||||
}
|
||||
|
||||
const $spinner_element = $(
|
||||
`.custom_user_field[data-field-id="${CSS.escape(field.id.toString())}"] .custom-field-status`,
|
||||
).expectOne();
|
||||
settings_ui.do_settings_change(method, "/json/users/me/profile_data", {data}, $spinner_element);
|
||||
}
|
||||
|
||||
type CustomProfileFieldData = {
|
||||
id: number;
|
||||
value?: number[] | string;
|
||||
};
|
||||
|
||||
function update_user_custom_profile_fields(
|
||||
fields: CustomProfileFieldData[],
|
||||
method: channel.AjaxRequestHandler,
|
||||
): void {
|
||||
for (const field of fields) {
|
||||
update_custom_profile_field(field, method);
|
||||
}
|
||||
}
|
||||
|
||||
function update_user_type_field(field: PillUpdateField, pills: UserPillWidget): void {
|
||||
const user_ids = user_pill.get_user_ids(pills);
|
||||
if (user_ids.length === 0) {
|
||||
update_user_custom_profile_fields([{id: field.id}], channel.del);
|
||||
custom_profile_fields_ui.update_user_custom_profile_fields([{id: field.id}], channel.del);
|
||||
} else {
|
||||
update_user_custom_profile_fields([{id: field.id, value: user_ids}], channel.patch);
|
||||
custom_profile_fields_ui.update_user_custom_profile_fields(
|
||||
[{id: field.id, value: user_ids}],
|
||||
channel.patch,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -745,7 +717,10 @@ export function set_up(): void {
|
||||
e.stopPropagation();
|
||||
const $field = $(this).closest(".custom_user_field").expectOne();
|
||||
const field_id = Number.parseInt($field.attr("data-field-id")!, 10);
|
||||
update_user_custom_profile_fields([{id: field_id}], channel.del);
|
||||
custom_profile_fields_ui.update_user_custom_profile_fields(
|
||||
[{id: field_id}],
|
||||
channel.del,
|
||||
);
|
||||
},
|
||||
);
|
||||
|
||||
@@ -759,10 +734,10 @@ export function set_up(): void {
|
||||
);
|
||||
if (value) {
|
||||
fields.push({id: field_id, value});
|
||||
update_user_custom_profile_fields(fields, channel.patch);
|
||||
custom_profile_fields_ui.update_user_custom_profile_fields(fields, channel.patch);
|
||||
} else {
|
||||
fields.push({id: field_id});
|
||||
update_user_custom_profile_fields(fields, channel.del);
|
||||
custom_profile_fields_ui.update_user_custom_profile_fields(fields, channel.del);
|
||||
}
|
||||
});
|
||||
|
||||
|
Reference in New Issue
Block a user