Skip to content

Commit d20fb65

Browse files
committed
simplify settings
1 parent 09da0f4 commit d20fb65

1 file changed

Lines changed: 38 additions & 48 deletions

File tree

src/settings/SettingsTab.ts

Lines changed: 38 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { App, PluginSettingTab, Setting } from "obsidian";
1+
import { App, PluginSettingTab, Setting, TFolder } from "obsidian";
22
import NapkinNotesPlugin from "../../main";
33

44
export class NapkinNotesSettingTab extends PluginSettingTab {
@@ -15,67 +15,57 @@ export class NapkinNotesSettingTab extends PluginSettingTab {
1515

1616
containerEl.createEl("h2", { text: "Napkin Notes Settings" });
1717

18-
// Upload folder setting
18+
// Upload folder setting with auto-suggest for valid folder paths
1919
new Setting(containerEl)
2020
.setName("Upload folder")
2121
.setDesc(
22-
"Folder for physical note images. Leave empty to use the vault's default attachment folder."
22+
"Folder for image attachments. Leave empty to use the vault's default attachment folder (recommended)."
2323
)
24-
.addText((text) =>
24+
.addText((text) => {
25+
const folders = this.app.vault
26+
.getAllLoadedFiles()
27+
.filter((file) => file instanceof TFolder)
28+
.map((folder) => folder.path);
29+
2530
text
2631
.setPlaceholder("folder/path")
27-
.setValue(this.plugin.settings.uploadFolder)
32+
.setValue(this.plugin.settings.uploadFolder || "")
2833
.onChange(async (value) => {
29-
this.plugin.settings.uploadFolder = value;
34+
this.plugin.settings.uploadFolder = value.trim();
3035
await this.plugin.saveSettings();
31-
})
32-
);
36+
});
3337

34-
// Server port range
35-
new Setting(containerEl)
36-
.setName("Server port range")
37-
.setDesc("Port range for the QR upload server (e.g., 8080-8090)")
38-
.addText((text) =>
39-
text
40-
.setPlaceholder("8080-8090")
41-
.setValue(
42-
`${this.plugin.settings.serverPortRange[0]}-${this.plugin.settings.serverPortRange[1]}`
43-
)
44-
.onChange(async (value) => {
45-
const parts = value.split("-");
46-
if (parts.length === 2) {
47-
const start = parseInt(parts[0].trim());
48-
const end = parseInt(parts[1].trim());
49-
if (!isNaN(start) && !isNaN(end) && start < end) {
50-
this.plugin.settings.serverPortRange = [start, end];
51-
await this.plugin.saveSettings();
52-
}
53-
}
54-
})
55-
);
38+
text.inputEl.addEventListener("input", (e) => {
39+
const inputValue = (e.target as HTMLInputElement).value;
40+
const suggestions = folders.filter((folder) =>
41+
folder.toLowerCase().includes(inputValue.toLowerCase())
42+
);
5643

57-
// Enable carousel in reading view
58-
new Setting(containerEl)
59-
.setName("Enable carousel in reading view")
60-
.setDesc(
61-
"Display physical notes as an interactive carousel instead of static images in reading view"
62-
)
63-
.addToggle((toggle) =>
64-
toggle
65-
.setValue(this.plugin.settings.enableCarousel)
66-
.onChange(async (value) => {
67-
this.plugin.settings.enableCarousel = value;
68-
await this.plugin.saveSettings();
69-
// Trigger re-render of reading views
70-
this.app.workspace.trigger("css-change");
71-
})
72-
);
44+
// Clear existing datalist
45+
let dataList = text.inputEl.nextElementSibling;
46+
if (dataList && dataList.tagName === "DATALIST") {
47+
dataList.remove();
48+
}
49+
50+
// Create new datalist
51+
dataList = document.createElement("datalist");
52+
dataList.id = "folder-suggestions";
53+
suggestions.forEach((folder) => {
54+
const option = document.createElement("option");
55+
option.value = folder;
56+
dataList.appendChild(option);
57+
});
58+
59+
text.inputEl.setAttribute("list", "folder-suggestions");
60+
text.inputEl.parentElement?.appendChild(dataList);
61+
});
62+
});
7363

7464
// Napkin Mode background
7565
new Setting(containerEl)
76-
.setName("Enable Napkin Mode")
66+
.setName("Napkin Mode")
7767
.setDesc(
78-
"When enabled, the carousel background uses a napkin paper texture based on your theme (light/dark)."
68+
"When enabled, the viewer has a paper napkin texture based on your theme (light/dark). Must re-open note to see change"
7969
)
8070
.addToggle((toggle) =>
8171
toggle

0 commit comments

Comments
 (0)