diff --git a/src/settings/applyTagsWhileInserting.ts b/src/settings/applyTagsWhileInserting.ts new file mode 100644 index 0000000..90ec00c --- /dev/null +++ b/src/settings/applyTagsWhileInserting.ts @@ -0,0 +1,11 @@ +import { SettingItemType } from "api/types"; +import { createSimpleSetting } from "./base"; + +export const ApplyTagsWhileInsertingSetting = createSimpleSetting("applyTagsWhileInserting", { + public: true, + type: SettingItemType.Bool, + value: true, + label: "Apply tags while inserting template", + description: "Apply tags using 'template_tags' variable while inserting template to notes/to-dos.", + section: "templatesPlugin" +}); diff --git a/src/settings/base.ts b/src/settings/base.ts new file mode 100644 index 0000000..9a81c0b --- /dev/null +++ b/src/settings/base.ts @@ -0,0 +1,25 @@ +import joplin from "api"; +import { SettingItem } from "api/types"; + +export interface PluginSetting { + id: string; + manifest: SettingItem; + + get(): Promise; + set(newValue: T): Promise; +} + +export const createSimpleSetting = (id: string, manifest: SettingItem): PluginSetting => { + return class { + static id = id; + static manifest = manifest; + + static async get(): Promise { + return await joplin.settings.value(id); + } + + static async set(newValue: T): Promise { + await joplin.settings.setValue(id, newValue); + } + } +} diff --git a/src/settings/defaultNoteTemplateId.ts b/src/settings/defaultNoteTemplateId.ts new file mode 100644 index 0000000..0409465 --- /dev/null +++ b/src/settings/defaultNoteTemplateId.ts @@ -0,0 +1,9 @@ +import { SettingItemType } from "api/types"; +import { createSimpleSetting } from "./base"; + +export const DefaultNoteTemplateIdSetting = createSimpleSetting("defaultNoteTemplateId", { + public: false, + type: SettingItemType.String, + value: null, + label: "Default note template ID" +}); diff --git a/src/settings/defaultTemplatesConfig.ts b/src/settings/defaultTemplatesConfig.ts new file mode 100644 index 0000000..654cc2b --- /dev/null +++ b/src/settings/defaultTemplatesConfig.ts @@ -0,0 +1,30 @@ +import joplin from "api"; +import { SettingItemType } from "api/types"; +import { PluginSetting } from "./base"; + +export interface DefaultTemplatesConfig { + [notebookId: string]: { + defaultNoteTemplateId: string | null; + defaultTodoTemplateId: string | null; + } +} + +export const DefaultTemplatesConfigSetting: PluginSetting = class { + static id = "defaultTemplatesConfig"; + + static manifest = { + public: false, + type: SettingItemType.Object, + value: null, + label: "Default templates config" + }; + + static async get(): Promise { + const defaultTemplatesConfig: DefaultTemplatesConfig | null = await joplin.settings.value(DefaultTemplatesConfigSetting.id); + return defaultTemplatesConfig ? defaultTemplatesConfig : {}; + } + + static async set(newValue: DefaultTemplatesConfig): Promise { + await joplin.settings.setValue(DefaultTemplatesConfigSetting.id, newValue); + } +} diff --git a/src/settings/defaultTodoTemplateId.ts b/src/settings/defaultTodoTemplateId.ts new file mode 100644 index 0000000..3c6bfcc --- /dev/null +++ b/src/settings/defaultTodoTemplateId.ts @@ -0,0 +1,9 @@ +import { SettingItemType } from "api/types"; +import { createSimpleSetting } from "./base"; + +export const DefaultTodoTemplateIdSetting = createSimpleSetting("defaultTodoTemplateId", { + public: false, + type: SettingItemType.String, + value: null, + label: "Default to-do template ID" +}); diff --git a/src/settings/templatesSource.ts b/src/settings/templatesSource.ts new file mode 100644 index 0000000..1bfdbeb --- /dev/null +++ b/src/settings/templatesSource.ts @@ -0,0 +1,16 @@ +import { SettingItemType } from "api/types"; +import { createSimpleSetting } from "./base"; + +export const TemplatesSourceSetting = createSimpleSetting("templatesSource", { + public: true, + type: SettingItemType.String, + isEnum: true, + value: "tag", + options: { + "tag": "Tag", + "notebook": "Notebook" + }, + label: "Are templates set with tags or stored in a notebook?", + description: "If set to 'Tag', any note/to-do with a 'template' tag is considered a template. If set to 'Notebook', any note/todo stored in a notebook titled 'Templates' is considered a template.", + section: "templatesPlugin" +});