diff options
author | Mark Powers <mark@marks.kitchen> | 2025-07-04 12:03:11 -0500 |
---|---|---|
committer | Mark Powers <mark@marks.kitchen> | 2025-07-04 12:03:11 -0500 |
commit | 13feb30f3ff9b913670a5fe7c8a9c1907d2c1740 (patch) | |
tree | ab6c820b4904ee7b05cb284af87ea2afc680d628 /api/JoplinSettings.d.ts |
Initial commitmain
Diffstat (limited to 'api/JoplinSettings.d.ts')
-rw-r--r-- | api/JoplinSettings.d.ts | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/api/JoplinSettings.d.ts b/api/JoplinSettings.d.ts new file mode 100644 index 0000000..ab9663d --- /dev/null +++ b/api/JoplinSettings.d.ts @@ -0,0 +1,72 @@ +import Plugin from '../Plugin'; +import { SettingItem, SettingSection } from './types'; +export interface ChangeEvent { + /** + * Setting keys that have been changed + */ + keys: string[]; +} +export type ChangeHandler = (event: ChangeEvent) => void; +/** + * This API allows registering new settings and setting sections, as well as getting and setting settings. Once a setting has been registered it will appear in the config screen and be editable by the user. + * + * Settings are essentially key/value pairs. + * + * Note: Currently this API does **not** provide access to Joplin's built-in settings. This is by design as plugins that modify user settings could give unexpected results + * + * [View the demo plugin](https://github.com/laurent22/joplin/tree/dev/packages/app-cli/tests/support/plugins/settings) + */ +export default class JoplinSettings { + private plugin_; + constructor(plugin: Plugin); + /** + * Registers new settings. + * Note that registering a setting item is dynamic and will be gone next time Joplin starts. + * What it means is that you need to register the setting every time the plugin starts (for example in the onStart event). + * The setting value however will be preserved from one launch to the next so there is no risk that it will be lost even if for some + * reason the plugin fails to start at some point. + */ + registerSettings(settings: Record<string, SettingItem>): Promise<void>; + /** + * @deprecated Use joplin.settings.registerSettings() + * + * Registers a new setting. + */ + registerSetting(key: string, settingItem: SettingItem): Promise<void>; + /** + * Registers a new setting section. Like for registerSetting, it is dynamic and needs to be done every time the plugin starts. + */ + registerSection(name: string, section: SettingSection): Promise<void>; + /** + * Gets setting values (only applies to setting you registered from your plugin) + */ + values(keys: string[] | string): Promise<Record<string, unknown>>; + /** + * @deprecated Use joplin.settings.values() + * + * Gets a setting value (only applies to setting you registered from your plugin) + */ + value(key: string): Promise<any>; + /** + * Sets a setting value (only applies to setting you registered from your plugin) + */ + setValue(key: string, value: any): Promise<void>; + /** + * Gets global setting values, including app-specific settings and those set by other plugins. + * + * The list of available settings is not documented yet, but can be found by looking at the source code: + * + * https://github.com/laurent22/joplin/blob/dev/packages/lib/models/settings/builtInMetadata.ts + */ + globalValues(keys: string[]): Promise<any[]>; + /** + * @deprecated Use joplin.settings.globalValues() + */ + globalValue(key: string): Promise<any>; + /** + * Called when one or multiple settings of your plugin have been changed. + * - For performance reasons, this event is triggered with a delay. + * - You will only get events for your own plugin settings. + */ + onChange(handler: ChangeHandler): Promise<void>; +} |