settings_ui: Add checkbox for toggling field.

Added a checkbox to toggle the option to automatically offer
to update the time zone with the browser time zone,
which is handled by the user profile field
"web_suggest_update_timezone".

A tooltip is also attached explaining the feature.

Fixes part of #16957
This commit is contained in:
Kislay Verma
2024-12-12 13:20:18 +00:00
committed by Tim Abbott
parent 00df8a593d
commit a817671809
6 changed files with 45 additions and 0 deletions

View File

@@ -793,6 +793,7 @@ export function dispatch_normal_event(event) {
"starred_message_counts", "starred_message_counts",
"web_navigate_to_sent_message", "web_navigate_to_sent_message",
"enter_sends", "enter_sends",
"web_suggest_update_timezone",
]; ];
const original_home_view = user_settings.web_home_view; const original_home_view = user_settings.web_home_view;
@@ -911,6 +912,9 @@ export function dispatch_normal_event(event) {
if (event.property === "web_escape_navigates_to_home_view") { if (event.property === "web_escape_navigates_to_home_view") {
$("#go-to-home-view-hotkey-help").toggleClass("notdisplayed", !event.value); $("#go-to-home-view-hotkey-help").toggleClass("notdisplayed", !event.value);
} }
if (event.property === "web_suggest_update_timezone") {
$("#automatically_offer_update_time_zone").prop("checked", event.value);
}
settings_preferences.update_page(event.property); settings_preferences.update_page(event.property);
break; break;
} }

View File

@@ -843,6 +843,19 @@ export function set_up(): void {
); );
}); });
$<HTMLInputElement>("#automatically_offer_update_time_zone").on("change", function (e) {
e.preventDefault();
e.stopPropagation();
const data = {web_suggest_update_timezone: this.checked};
settings_ui.do_settings_change(
channel.patch,
"/json/settings",
data,
$(".timezone-setting-status").expectOne(),
);
});
$("#privacy_settings_box").on("change", "input", function (this: HTMLInputElement, e) { $("#privacy_settings_box").on("change", "input", function (this: HTMLInputElement, e) {
e.preventDefault(); e.preventDefault();
e.stopPropagation(); e.stopPropagation();

View File

@@ -537,6 +537,9 @@ export const preferences_settings_labels = {
defaultMessage: "Convert emoticons before sending (<code>:)</code> becomes 😃)", defaultMessage: "Convert emoticons before sending (<code>:)</code> becomes 😃)",
}), }),
), ),
web_suggest_update_timezone: $t({
defaultMessage: "Offer to update to my computer's time zone",
}),
web_escape_navigates_to_home_view: $t({defaultMessage: "Escape key navigates to home view"}), web_escape_navigates_to_home_view: $t({defaultMessage: "Escape key navigates to home view"}),
web_font_size_px: $t({defaultMessage: "Message-area font size (px)"}), web_font_size_px: $t({defaultMessage: "Message-area font size (px)"}),
web_line_height_percent: $t({defaultMessage: "Message-area line height (%)"}), web_line_height_percent: $t({defaultMessage: "Message-area line height (%)"}),

View File

@@ -32,6 +32,13 @@
</select> </select>
</div> </div>
</div> </div>
<div id="automatically_offer_update_time_zone_container">
{{> settings_checkbox
setting_name="automatically_offer_update_time_zone"
is_checked=settings_object.web_suggest_update_timezone
label=settings_label.web_suggest_update_timezone
}}
</div>
</form> </form>
<form class="custom-profile-fields-form grid"></form> <form class="custom-profile-fields-form grid"></form>

View File

@@ -1198,6 +1198,16 @@ run_test("user_settings", ({override}) => {
override(user_settings, "web_navigate_to_sent_message", true); override(user_settings, "web_navigate_to_sent_message", true);
dispatch(event); dispatch(event);
assert_same(user_settings.web_navigate_to_sent_message, false); assert_same(user_settings.web_navigate_to_sent_message, false);
{
const event = event_fixtures.user_settings_web_suggest_update_timezone;
dispatch(event);
assert.equal($("#automatically_offer_update_time_zone").prop("checked"), true);
event.value = false;
dispatch(event);
assert.equal($("#automatically_offer_update_time_zone").prop("checked"), false);
}
}); });
run_test("update_message (read)", ({override}) => { run_test("update_message (read)", ({override}) => {

View File

@@ -1129,6 +1129,14 @@ exports.fixtures = {
value: 2, value: 2,
}, },
user_settings_web_suggest_update_timezone: {
type: "user_settings",
op: "update",
property: "web_suggest_update_timezone",
value: true,
id: 1,
},
user_status__set_status_emoji: { user_status__set_status_emoji: {
id: 1, id: 1,
type: "user_status", type: "user_status",