mirror of
https://github.com/zadam/trilium.git
synced 2025-10-21 07:38:53 +02:00
refactor(client): use type safety for option names
This commit is contained in:
parent
23c2acaab7
commit
5a15024e59
@ -8,6 +8,7 @@ import FAttribute, { type FAttributeRow } from "../entities/fattribute.js";
|
||||
import FAttachment, { type FAttachmentRow } from "../entities/fattachment.js";
|
||||
import type { default as FNote, FNoteRow } from "../entities/fnote.js";
|
||||
import type { EntityChange } from "../server_types.js";
|
||||
import type { OptionNames } from "@triliumnext/commons";
|
||||
|
||||
async function processEntityChanges(entityChanges: EntityChange[]) {
|
||||
const loadResults = new LoadResults(entityChanges);
|
||||
@ -30,9 +31,8 @@ async function processEntityChanges(entityChanges: EntityChange[]) {
|
||||
continue; // only noise
|
||||
}
|
||||
|
||||
options.set(attributeEntity.name, attributeEntity.value);
|
||||
|
||||
loadResults.addOption(attributeEntity.name);
|
||||
options.set(attributeEntity.name as OptionNames, attributeEntity.value);
|
||||
loadResults.addOption(attributeEntity.name as OptionNames);
|
||||
} else if (ec.entityName === "attachments") {
|
||||
processAttachment(loadResults, ec);
|
||||
} else if (ec.entityName === "blobs") {
|
||||
|
@ -1,4 +1,4 @@
|
||||
import type { AttachmentRow, EtapiTokenRow } from "@triliumnext/commons";
|
||||
import type { AttachmentRow, EtapiTokenRow, OptionNames } from "@triliumnext/commons";
|
||||
import type { AttributeType } from "../entities/fattribute.js";
|
||||
import type { EntityChange } from "../server_types.js";
|
||||
|
||||
@ -67,7 +67,7 @@ export default class LoadResults {
|
||||
private revisionRows: RevisionRow[];
|
||||
private noteReorderings: string[];
|
||||
private contentNoteIdToComponentId: ContentNoteIdToComponentIdRow[];
|
||||
private optionNames: string[];
|
||||
private optionNames: OptionNames[];
|
||||
private attachmentRows: AttachmentRow[];
|
||||
public hasEtapiTokenChanges: boolean = false;
|
||||
|
||||
@ -180,11 +180,11 @@ export default class LoadResults {
|
||||
return this.contentNoteIdToComponentId.find((l) => l.noteId === noteId && l.componentId !== componentId);
|
||||
}
|
||||
|
||||
addOption(name: string) {
|
||||
addOption(name: OptionNames) {
|
||||
this.optionNames.push(name);
|
||||
}
|
||||
|
||||
isOptionReloaded(name: string) {
|
||||
isOptionReloaded(name: OptionNames) {
|
||||
return this.optionNames.includes(name);
|
||||
}
|
||||
|
||||
|
@ -20,7 +20,7 @@ class Options {
|
||||
this.arr = arr;
|
||||
}
|
||||
|
||||
get(key: string) {
|
||||
get(key: OptionNames) {
|
||||
return this.arr?.[key] as string;
|
||||
}
|
||||
|
||||
@ -40,7 +40,7 @@ class Options {
|
||||
}
|
||||
}
|
||||
|
||||
getInt(key: string) {
|
||||
getInt(key: OptionNames) {
|
||||
const value = this.arr?.[key];
|
||||
if (typeof value === "number") {
|
||||
return value;
|
||||
@ -52,7 +52,7 @@ class Options {
|
||||
return null;
|
||||
}
|
||||
|
||||
getFloat(key: string) {
|
||||
getFloat(key: OptionNames) {
|
||||
const value = this.arr?.[key];
|
||||
if (typeof value !== "string") {
|
||||
return null;
|
||||
@ -60,15 +60,15 @@ class Options {
|
||||
return parseFloat(value);
|
||||
}
|
||||
|
||||
is(key: string) {
|
||||
is(key: OptionNames) {
|
||||
return this.arr[key] === "true";
|
||||
}
|
||||
|
||||
set(key: string, value: OptionValue) {
|
||||
set(key: OptionNames, value: OptionValue) {
|
||||
this.arr[key] = value;
|
||||
}
|
||||
|
||||
async save(key: string, value: OptionValue) {
|
||||
async save(key: OptionNames, value: OptionValue) {
|
||||
this.set(key, value);
|
||||
|
||||
const payload: Record<string, OptionValue> = {};
|
||||
@ -85,7 +85,7 @@ class Options {
|
||||
await server.put<void>("options", newValues);
|
||||
}
|
||||
|
||||
async toggle(key: string) {
|
||||
async toggle(key: OptionNames) {
|
||||
await this.save(key, (!this.is(key)).toString());
|
||||
}
|
||||
}
|
||||
|
@ -100,6 +100,7 @@ export interface OptionDefinitions extends KeyboardShortcutsOptions<KeyboardActi
|
||||
codeNoteTheme: string;
|
||||
|
||||
initialized: boolean;
|
||||
databaseReadonly: boolean;
|
||||
isPasswordSet: boolean;
|
||||
overrideThemeFonts: boolean;
|
||||
spellCheckEnabled: boolean;
|
||||
@ -138,6 +139,7 @@ export interface OptionDefinitions extends KeyboardShortcutsOptions<KeyboardActi
|
||||
// AI/LLM integration options
|
||||
aiEnabled: boolean;
|
||||
aiProvider: string;
|
||||
aiProviderPrecedence: string; // TODO: Is this still supported?
|
||||
aiSystemPrompt: string;
|
||||
aiTemperature: string;
|
||||
openaiApiKey: string;
|
||||
|
Loading…
x
Reference in New Issue
Block a user