107 lines
2.5 KiB
TypeScript
107 lines
2.5 KiB
TypeScript
import {
|
|
App,
|
|
Editor,
|
|
MarkdownView,
|
|
Modal,
|
|
Notice,
|
|
Plugin,
|
|
PluginSettingTab,
|
|
Setting,
|
|
} from "obsidian";
|
|
|
|
import SyncPlugin from "src/plugin";
|
|
import { Database } from "src/database/database";
|
|
import { SyncServer } from "src/services/sync_service";
|
|
|
|
export class SyncSettingsTab extends PluginSettingTab {
|
|
constructor(
|
|
app: App,
|
|
plugin: SyncPlugin,
|
|
private database: Database,
|
|
private syncServer: SyncServer
|
|
) {
|
|
super(app, plugin);
|
|
}
|
|
|
|
display(): void {
|
|
const { containerEl } = this;
|
|
|
|
containerEl.empty();
|
|
|
|
new Setting(containerEl)
|
|
.setName("Remote URL")
|
|
.setDesc("Your server's URL")
|
|
.setTooltip(
|
|
"This is the URL of the server you want to sync with, todo, links to docs"
|
|
)
|
|
.addText((text) =>
|
|
text
|
|
.setPlaceholder("https://example.com:8080/obsidian")
|
|
.setValue(this.database.getSettings().remoteUri)
|
|
.onChange((value) =>
|
|
this.database.setSetting("remoteUri", value)
|
|
)
|
|
)
|
|
.addButton((button) =>
|
|
button.setButtonText("Test Connection").onClick(async () => {
|
|
try {
|
|
const result = await this.syncServer.ping();
|
|
if (result.isAuthenticated) {
|
|
new Notice(
|
|
`Successfully authenticated with the server (version: ${result.serverVersion})!`
|
|
);
|
|
} else {
|
|
new Notice(
|
|
`Successfully connected to server (version: ${result.serverVersion}) but failed to authenticate.`
|
|
);
|
|
}
|
|
} catch (e) {
|
|
new Notice("Failed to connect to server: " + e);
|
|
}
|
|
})
|
|
);
|
|
|
|
new Setting(containerEl)
|
|
.setName("Access token")
|
|
.setDesc(
|
|
"Set the access token for the server that you can get from the server"
|
|
)
|
|
.setTooltip("todo, links to dcocs")
|
|
.addTextArea((text) =>
|
|
text
|
|
.setPlaceholder("ey...")
|
|
.setValue(this.database.getSettings().token)
|
|
.onChange((value) =>
|
|
this.database.setSetting("token", value)
|
|
)
|
|
);
|
|
|
|
new Setting(containerEl)
|
|
.setName("Full scan interval (seconds)")
|
|
.setDesc(
|
|
"How often would you like to do a full scan of the local files"
|
|
)
|
|
.setTooltip("todo, links to docs")
|
|
.addToggle((toggle) =>
|
|
toggle
|
|
.setValue(this.database.getSettings().fullScanEnabled)
|
|
.onChange((value) =>
|
|
this.database.setSetting("fullScanEnabled", value)
|
|
)
|
|
)
|
|
.addSlider((text) =>
|
|
text
|
|
.setLimits(1, 3600, 1)
|
|
.setDynamicTooltip()
|
|
.setValue(
|
|
this.database.getSettings().fullScanIntervalInSeconds
|
|
)
|
|
.onChange((value) =>
|
|
this.database.setSetting(
|
|
"fullScanIntervalInSeconds",
|
|
value
|
|
)
|
|
)
|
|
);
|
|
}
|
|
}
|