diff --git a/main.ts b/main.ts index d81159c..69e87ae 100644 --- a/main.ts +++ b/main.ts @@ -53,6 +53,7 @@ interface ObsidianLiveSyncSettings { batchSave: boolean; deviceAndVaultName: string; usePluginSettings: boolean; + showOwnPlugins: boolean; } const DEFAULT_SETTINGS: ObsidianLiveSyncSettings = { @@ -84,6 +85,7 @@ const DEFAULT_SETTINGS: ObsidianLiveSyncSettings = { batchSave: false, deviceAndVaultName: "", usePluginSettings: false, + showOwnPlugins: false, }; interface Entry { @@ -351,7 +353,7 @@ const bumpRemoteVersion = async (db: PouchDB.Database, barrier: number = VER): P }; function isValidPath(filename: string): boolean { - let regex = /[\u0000-\u001f]|[\\"':?<>|*$]/g; + let regex = /[\u0000-\u001f]|[\\"':?<>|*]/g; let x = filename.replace(regex, "_"); let win = /(\\|\/)(COM\d|LPT\d|CON|PRN|AUX|NUL|CLOCK$)($|\.)/gi; let sx = (x = x.replace(win, "/_")); @@ -2265,7 +2267,8 @@ export default class ObsidianLiveSyncPlugin extends Plugin { this.statusBar.title = this.localDatabase.syncStatus; let waiting = ""; if (this.settings.batchSave) { - waiting = " " + this.batchFileChange.map((e) => "🚀").join(""); + waiting = " " + this.batchFileChange.map((e) => "🛫").join(""); + waiting = waiting.replace(/🛫{10}/g,"🚀"); } this.statusBar.setText(`Sync:${w} ↑${sent} ↓${arrived}${waiting}`); } @@ -3012,6 +3015,7 @@ class ObsidianLiveSyncSettingTab extends PluginSettingTab { .setButtonText("Apply and send") .setWarning() .setDisabled(false) + .setClass("sls-btn-left") .onClick(async () => { await applyEncryption(true); }) @@ -3021,6 +3025,7 @@ class ObsidianLiveSyncSettingTab extends PluginSettingTab { .setButtonText("Apply and receive") .setWarning() .setDisabled(false) + .setClass("sls-btn-right") .onClick(async () => { await applyEncryption(false); }) @@ -3052,6 +3057,7 @@ class ObsidianLiveSyncSettingTab extends PluginSettingTab { if (this.plugin.settings.versionUpFlash != "") { let c = containerEl.createEl("div", { text: this.plugin.settings.versionUpFlash }); c.createEl("button", { text: "I got it and updated." }, (e) => { + e.addClass("mod-cta"); e.addEventListener("click", async () => { this.plugin.settings.versionUpFlash = ""; await this.plugin.saveSettings(); @@ -3216,6 +3222,7 @@ class ObsidianLiveSyncSettingTab extends PluginSettingTab { text: "To prevent unwanted vault corruption, the remote database has been locked for synchronization, and this device was not marked as 'resolved'. it caused by some operations like this. re-initialized. Local database initialization should be required. please back your vault up, reset local database, and press 'Mark this device as resolved'. ", }); c.createEl("button", { text: "I'm ready, mark this device 'resolved'" }, (e) => { + e.addClass("mod-warning"); e.addEventListener("click", async () => { await this.plugin.markRemoteResolved(); c.remove(); @@ -3228,6 +3235,7 @@ class ObsidianLiveSyncSettingTab extends PluginSettingTab { text: "To prevent unwanted vault corruption, the remote database has been locked for synchronization. (This device is marked 'resolved') When all your devices are marked 'resolved', unlock the database.", }); c.createEl("button", { text: "I'm ready, unlock the database" }, (e) => { + e.addClass("mod-warning"); e.addEventListener("click", async () => { await this.plugin.markRemoteUnlocked(); c.remove(); @@ -3265,6 +3273,7 @@ class ObsidianLiveSyncSettingTab extends PluginSettingTab { .setButtonText("Drop and send") .setWarning() .setDisabled(false) + .setClass("sls-btn-left") .onClick(async () => { await dropHistory(true); }) @@ -3274,6 +3283,7 @@ class ObsidianLiveSyncSettingTab extends PluginSettingTab { .setButtonText("Drop and receive") .setWarning() .setDisabled(false) + .setClass("sls-btn-right") .onClick(async () => { await dropHistory(false); }) @@ -3286,6 +3296,7 @@ class ObsidianLiveSyncSettingTab extends PluginSettingTab { button .setButtonText("Lock") .setDisabled(false) + .setWarning() .onClick(async () => { await this.plugin.markRemoteLocked(); }) @@ -3308,6 +3319,7 @@ class ObsidianLiveSyncSettingTab extends PluginSettingTab { button .setButtonText("Reset") .setDisabled(false) + .setWarning() .onClick(async () => { await this.plugin.tryResetRemoteDatabase(); }) @@ -3319,6 +3331,7 @@ class ObsidianLiveSyncSettingTab extends PluginSettingTab { button .setButtonText("Reset") .setDisabled(false) + .setWarning() .onClick(async () => { await this.plugin.resetLocalDatabase(); }) @@ -3351,6 +3364,17 @@ class ObsidianLiveSyncSettingTab extends PluginSettingTab { // }) // ); + new Setting(containerEl) + .setName("Show own plugins and settings") + .setDesc("Show ") + .addToggle((toggle) => + toggle.setValue(this.plugin.settings.showOwnPlugins).onChange(async (value) => { + this.plugin.settings.showOwnPlugins = value; + await this.plugin.saveSettings(); + updatePluginPane(); + }) + ); + new Setting(containerEl) .setName("Device and Vault name") .setDesc("") @@ -3439,25 +3463,28 @@ class ObsidianLiveSyncSettingTab extends PluginSettingTab { let html = `
| vault | -plugin | -version | -modified | -plugin | -setting | -
|---|---|---|---|---|---|
| ${escapeStringToHTML(vaults)} | +|||||
| ${escapeStringToHTML(v.deviceVaultName)} | -${escapeStringToHTML(v.manifest.name)} | -${escapeStringToHTML(v.manifest.version)} | -${escapeStringToHTML(mtime)} | -${isSameVersion ? "even" : ""} | -${settingApplyable === true ? "" : settingApplyable} | -
| + | |||||
| ${escapeStringToHTML(v.manifest.name)} | +${isSameContents?"even":``} | +||||
| ${escapeStringToHTML(mtime)} | +${settingApplyable === true ? "" : settingApplyable} | +||||
| + | |||||