Skip to content

Commit 7e9e07b

Browse files
committed
add setting startupScriptsDirectory
1 parent ef12bb7 commit 7e9e07b

File tree

1 file changed

+42
-2
lines changed

1 file changed

+42
-2
lines changed

jsEngine/settings/Settings.ts

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
import type JsEnginePlugin from 'jsEngine/main';
22
import { StartupScriptsModal } from 'jsEngine/settings/StartupScriptModal';
33
import type { App } from 'obsidian';
4-
import { PluginSettingTab, Setting } from 'obsidian';
4+
import { normalizePath, PluginSettingTab, Setting } from 'obsidian';
55

66
export interface JsEnginePluginSettings {
7-
startupScripts?: string[];
7+
startupScriptsDirectory: string | undefined;
8+
startupScripts: string[];
89
}
910

1011
export const JS_ENGINE_DEFAULT_SETTINGS: JsEnginePluginSettings = {
12+
startupScriptsDirectory: undefined,
1113
startupScripts: [],
1214
};
1315

@@ -35,5 +37,43 @@ export class JsEnginePluginSettingTab extends PluginSettingTab {
3537
new StartupScriptsModal(this.plugin).open();
3638
});
3739
});
40+
41+
new Setting(containerEl)
42+
.setName('JS snippets (loaded on startup)')
43+
.setHeading()
44+
.addExtraButton(el => {
45+
el.setTooltip('Open snippets folder')
46+
.setIcon('folder-open')
47+
.onClick(async () => await this.openStartupScriptsDirectory());
48+
});
49+
50+
new Setting(containerEl)
51+
.setName('Custom JS Snippets Folder')
52+
.setDesc('The folder to search for JavaScript files to load')
53+
.addText(el => {
54+
el.setPlaceholder(this.getDefaultStartupScriptsDirectory())
55+
.setValue(settings.startupScriptsDirectory ?? '')
56+
.onChange(async (val: string) => {
57+
if (val) {
58+
settings.startupScriptsDirectory = normalizePath(val);
59+
} else {
60+
settings.startupScriptsDirectory = undefined;
61+
}
62+
await this.plugin.saveSettings();
63+
});
64+
});
65+
}
66+
67+
getDefaultStartupScriptsDirectory(): string {
68+
return normalizePath(''.concat(this.app.vault.configDir, '/scripts'));
69+
}
70+
71+
async openStartupScriptsDirectory(): Promise<void> {
72+
const vault = this.app.vault;
73+
const directory = this.plugin.settings.startupScriptsDirectory ?? this.getDefaultStartupScriptsDirectory();
74+
if ((await vault.adapter.exists(directory)) == false) {
75+
await vault.createFolder(directory);
76+
}
77+
this.app.openWithDefaultApp(directory);
3878
}
3979
}

0 commit comments

Comments
 (0)