mirror of
https://github.com/zadam/trilium.git
synced 2025-10-20 07:08:55 +02:00
chore(react/settings): clean up options widget
This commit is contained in:
parent
04973094f2
commit
3e17ff5e7b
@ -1,77 +0,0 @@
|
||||
import type { FilterOptionsByType, OptionMap, OptionNames } from "@triliumnext/commons";
|
||||
import type { EventData, EventListener } from "../../../components/app_context.js";
|
||||
import type FNote from "../../../entities/fnote.js";
|
||||
import { t } from "../../../services/i18n.js";
|
||||
import server from "../../../services/server.js";
|
||||
import toastService from "../../../services/toast.js";
|
||||
import NoteContextAwareWidget from "../../note_context_aware_widget.js";
|
||||
|
||||
export default class OptionsWidget extends NoteContextAwareWidget implements EventListener<"entitiesReloaded"> {
|
||||
constructor() {
|
||||
super();
|
||||
|
||||
this.contentSized();
|
||||
}
|
||||
|
||||
async updateOption<T extends OptionNames>(name: T, value: string | number | string[] | undefined) {
|
||||
const opts = { [name]: value };
|
||||
|
||||
await this.updateMultipleOptions(opts);
|
||||
}
|
||||
|
||||
async updateMultipleOptions(opts: Partial<OptionMap>) {
|
||||
await server.put("options", opts);
|
||||
|
||||
this.showUpdateNotification();
|
||||
}
|
||||
|
||||
showUpdateNotification() {
|
||||
toastService.showPersistent({
|
||||
id: "options-change-saved",
|
||||
title: t("options_widget.options_status"),
|
||||
message: t("options_widget.options_change_saved"),
|
||||
icon: "slider",
|
||||
closeAfter: 2000
|
||||
});
|
||||
}
|
||||
|
||||
async updateCheckboxOption<T extends FilterOptionsByType<boolean>>(name: T, $checkbox: JQuery<HTMLElement>) {
|
||||
const isChecked = $checkbox.prop("checked");
|
||||
|
||||
return await this.updateOption(name, isChecked ? "true" : "false");
|
||||
}
|
||||
|
||||
setCheckboxState($checkbox: JQuery<HTMLElement>, optionValue: string) {
|
||||
$checkbox.prop("checked", optionValue === "true");
|
||||
}
|
||||
|
||||
optionsLoaded(options: OptionMap) { }
|
||||
|
||||
async refresh() {
|
||||
this.toggleInt(this.isEnabled());
|
||||
try {
|
||||
await this.refreshWithNote(this.note);
|
||||
} catch (e) {
|
||||
// Ignore errors when user is refreshing or navigating away.
|
||||
if (e === "rejected by browser") {
|
||||
return;
|
||||
}
|
||||
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
async refreshWithNote(note: FNote | null | undefined) {
|
||||
const options = await server.get<OptionMap>("options");
|
||||
|
||||
if (options) {
|
||||
this.optionsLoaded(options);
|
||||
}
|
||||
}
|
||||
|
||||
async entitiesReloadedEvent({ loadResults }: EventData<"entitiesReloaded">) {
|
||||
if (loadResults.getOptionNames().length > 0) {
|
||||
this.refresh();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user