From 31ab0e90f6dcfd51c2e6077554d6b52f22474803 Mon Sep 17 00:00:00 2001 From: vorotamoroz Date: Fri, 18 Feb 2022 20:10:43 +0900 Subject: [PATCH] Fixed: - Device and vault name is now not stored in the data.json. You can synchronize LiveSync's configuration! --- manifest.json | 2 +- package-lock.json | 4 ++-- package.json | 2 +- src/ObsidianLiveSyncSettingTab.ts | 4 ++-- src/PluginPane.svelte | 2 +- src/main.ts | 25 +++++++++++++++++++------ 6 files changed, 26 insertions(+), 13 deletions(-) diff --git a/manifest.json b/manifest.json index 6d36796..668c397 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-livesync", "name": "Self-hosted LiveSync", - "version": "0.7.0", + "version": "0.7.1", "minAppVersion": "0.9.12", "description": "Community implementation of self-hosted livesync. Reflect your vault changes to some other devices immediately. Please make sure to disable other synchronize solutions to avoid content corruption or duplication.", "author": "vorotamoroz", diff --git a/package-lock.json b/package-lock.json index 295b1e2..aaac5c5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "obsidian-livesync", - "version": "0.7.0", + "version": "0.7.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "obsidian-livesync", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "dependencies": { "diff-match-patch": "^1.0.5", diff --git a/package.json b/package.json index f1bb567..90cc7cc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "obsidian-livesync", - "version": "0.7.0", + "version": "0.7.1", "description": "Reflect your vault changes to some other devices immediately. Please make sure to disable other synchronize solutions to avoid content corruption or duplication.", "main": "main.js", "type": "module", diff --git a/src/ObsidianLiveSyncSettingTab.ts b/src/ObsidianLiveSyncSettingTab.ts index b97df9d..f4dd4e8 100644 --- a/src/ObsidianLiveSyncSettingTab.ts +++ b/src/ObsidianLiveSyncSettingTab.ts @@ -875,9 +875,9 @@ export class ObsidianLiveSyncSettingTab extends PluginSettingTab { .setDesc("") .addText((text) => { text.setPlaceholder("desktop-main") - .setValue(this.plugin.settings.deviceAndVaultName) + .setValue(this.plugin.deviceAndVaultName) .onChange(async (value) => { - this.plugin.settings.deviceAndVaultName = value; + this.plugin.deviceAndVaultName = value; await this.plugin.saveSettings(); }); // text.inputEl.setAttribute("type", "password"); diff --git a/src/PluginPane.svelte b/src/PluginPane.svelte index a6f4a19..9350b7f 100644 --- a/src/PluginPane.svelte +++ b/src/PluginPane.svelte @@ -56,7 +56,7 @@ $: { deviceAndPlugins = {}; for (const p of plugins) { - if (p.deviceVaultName == plugin.settings.deviceAndVaultName && !showOwnPlugins) { + if (p.deviceVaultName == plugin.deviceAndVaultName && !showOwnPlugins) { continue; } if (!(p.deviceVaultName in deviceAndPlugins)) { diff --git a/src/main.ts b/src/main.ts index 0baa9c6..b4e4dc0 100644 --- a/src/main.ts +++ b/src/main.ts @@ -63,6 +63,7 @@ export default class ObsidianLiveSyncPlugin extends Plugin { statusBar: HTMLElement; statusBar2: HTMLElement; suspended: boolean; + deviceAndVaultName: string; setInterval(handler: () => any, timeout?: number): number { const timer = window.setInterval(handler, timeout); @@ -320,6 +321,15 @@ export default class ObsidianLiveSyncPlugin extends Plugin { this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData()); this.settings.workingEncrypt = this.settings.encrypt; this.settings.workingPassphrase = this.settings.passphrase; + const lsname = "obsidian-live-sync-vaultanddevicename-" + this.app.vault.getName(); + if (this.settings.deviceAndVaultName != "") { + if (!localStorage.getItem(lsname)) { + this.deviceAndVaultName = this.settings.deviceAndVaultName; + localStorage.setItem(lsname, this.deviceAndVaultName); + this.settings.deviceAndVaultName = ""; + } + } + this.deviceAndVaultName = localStorage.getItem(lsname) || ""; } triggerRealizeSettingSyncMode() { @@ -327,6 +337,9 @@ export default class ObsidianLiveSyncPlugin extends Plugin { } async saveSettings() { + const lsname = "obsidian-live-sync-vaultanddevicename-" + this.app.vault.getName(); + + localStorage.setItem(lsname, this.deviceAndVaultName || ""); await this.saveData(this.settings); this.localDatabase.settings = this.settings; this.triggerRealizeSettingSyncMode(); @@ -1428,7 +1441,7 @@ export default class ObsidianLiveSyncPlugin extends Plugin { } plugins[v.deviceVaultName].push(v); allPlugins[v._id] = v; - if (v.deviceVaultName == this.settings.deviceAndVaultName) { + if (v.deviceVaultName == this.deviceAndVaultName) { thisDevicePlugins[v.manifest.id] = v; } } @@ -1443,15 +1456,15 @@ export default class ObsidianLiveSyncPlugin extends Plugin { Logger("You have to encrypt the database to use plugin setting sync.", LOG_LEVEL.NOTICE); return; } - if (!this.settings.deviceAndVaultName) { + if (!this.deviceAndVaultName) { Logger("You have to set your device and vault name.", LOG_LEVEL.NOTICE); return; } Logger("Sweeping plugins", logLevel); const db = this.localDatabase.localDatabase; const oldDocs = await db.allDocs({ - startkey: `ps:${this.settings.deviceAndVaultName}-`, - endkey: `ps:${this.settings.deviceAndVaultName}.`, + startkey: `ps:${this.deviceAndVaultName}-`, + endkey: `ps:${this.deviceAndVaultName}.`, include_docs: true, }); Logger("OLD DOCS.", LOG_LEVEL.VERBOSE); @@ -1476,9 +1489,9 @@ export default class ObsidianLiveSyncPlugin extends Plugin { mtime = (await adapter.stat(path + "/data.json")).mtime; } const p: PluginDataEntry = { - _id: `ps:${this.settings.deviceAndVaultName}-${m.id}`, + _id: `ps:${this.deviceAndVaultName}-${m.id}`, dataJson: pluginData["data.json"], - deviceVaultName: this.settings.deviceAndVaultName, + deviceVaultName: this.deviceAndVaultName, mainJs: pluginData["main.js"], styleCss: pluginData["styles.css"], manifest: m,