mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2025-12-20 13:11:29 +00:00
### Fixed
- Fixed a bug that caused wrong event bindings and flag inversion (#727) - This caused following issues: - In some cases, settings changes were not applied or saved correctly. - Automatic synchronisation did not begin correctly. ### Improved - Too large diffs are not shown in the file comparison view, due to performance reasons.
This commit is contained in:
@@ -51,7 +51,7 @@ export class ModuleRebuilder extends AbstractModule implements Rebuilder {
|
|||||||
await this.services.setting.suspendExtraSync();
|
await this.services.setting.suspendExtraSync();
|
||||||
this.core.settings.isConfigured = true;
|
this.core.settings.isConfigured = true;
|
||||||
|
|
||||||
await this.services.setting.onRealiseSetting();
|
await this.services.setting.realiseSetting();
|
||||||
await this.services.remote.markLocked();
|
await this.services.remote.markLocked();
|
||||||
await this.services.remote.tryResetDatabase();
|
await this.services.remote.tryResetDatabase();
|
||||||
await this.services.remote.markLocked();
|
await this.services.remote.markLocked();
|
||||||
@@ -70,7 +70,7 @@ export class ModuleRebuilder extends AbstractModule implements Rebuilder {
|
|||||||
await this.services.setting.suspendExtraSync();
|
await this.services.setting.suspendExtraSync();
|
||||||
await this.askUseNewAdapter();
|
await this.askUseNewAdapter();
|
||||||
this.core.settings.isConfigured = true;
|
this.core.settings.isConfigured = true;
|
||||||
await this.services.setting.onRealiseSetting();
|
await this.services.setting.realiseSetting();
|
||||||
await this.resetLocalDatabase();
|
await this.resetLocalDatabase();
|
||||||
await delay(1000);
|
await delay(1000);
|
||||||
await this.services.databaseEvents.initialiseDatabase(true, true, true);
|
await this.services.databaseEvents.initialiseDatabase(true, true, true);
|
||||||
@@ -181,7 +181,7 @@ export class ModuleRebuilder extends AbstractModule implements Rebuilder {
|
|||||||
await this.askUseNewAdapter();
|
await this.askUseNewAdapter();
|
||||||
this.core.settings.isConfigured = true;
|
this.core.settings.isConfigured = true;
|
||||||
await this.suspendReflectingDatabase();
|
await this.suspendReflectingDatabase();
|
||||||
await this.services.setting.onRealiseSetting();
|
await this.services.setting.realiseSetting();
|
||||||
await this.resetLocalDatabase();
|
await this.resetLocalDatabase();
|
||||||
await delay(1000);
|
await delay(1000);
|
||||||
await this.services.database.openDatabase();
|
await this.services.database.openDatabase();
|
||||||
|
|||||||
@@ -15,13 +15,12 @@ export class ModuleReplicatorCouchDB extends AbstractModule {
|
|||||||
return Promise.resolve(new LiveSyncCouchDBReplicator(this.core));
|
return Promise.resolve(new LiveSyncCouchDBReplicator(this.core));
|
||||||
}
|
}
|
||||||
_everyAfterResumeProcess(): Promise<boolean> {
|
_everyAfterResumeProcess(): Promise<boolean> {
|
||||||
if (!this.services.appLifecycle.isSuspended()) return Promise.resolve(true);
|
if (this.services.appLifecycle.isSuspended()) return Promise.resolve(true);
|
||||||
if (!this.services.appLifecycle.isReady()) return Promise.resolve(true);
|
if (!this.services.appLifecycle.isReady()) return Promise.resolve(true);
|
||||||
if (this.settings.remoteType != REMOTE_MINIO && this.settings.remoteType != REMOTE_P2P) {
|
if (this.settings.remoteType != REMOTE_MINIO && this.settings.remoteType != REMOTE_P2P) {
|
||||||
const LiveSyncEnabled = this.settings.liveSync;
|
const LiveSyncEnabled = this.settings.liveSync;
|
||||||
const continuous = LiveSyncEnabled;
|
const continuous = LiveSyncEnabled;
|
||||||
const eventualOnStart = !LiveSyncEnabled && this.settings.syncOnStart;
|
const eventualOnStart = !LiveSyncEnabled && this.settings.syncOnStart;
|
||||||
|
|
||||||
// If enabled LiveSync or on start, open replication
|
// If enabled LiveSync or on start, open replication
|
||||||
if (LiveSyncEnabled || eventualOnStart) {
|
if (LiveSyncEnabled || eventualOnStart) {
|
||||||
// And note that we do not open the conflict detection dialogue directly during this process.
|
// And note that we do not open the conflict detection dialogue directly during this process.
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ export class ModuleObsidianMenu extends AbstractObsidianModule {
|
|||||||
this.settings.liveSync = true;
|
this.settings.liveSync = true;
|
||||||
this._log("LiveSync Enabled.", LOG_LEVEL_NOTICE);
|
this._log("LiveSync Enabled.", LOG_LEVEL_NOTICE);
|
||||||
}
|
}
|
||||||
await this.services.setting.onRealiseSetting();
|
await this.services.setting.realiseSetting();
|
||||||
await this.services.setting.saveSettingData();
|
await this.services.setting.saveSettingData();
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -74,7 +74,7 @@ export class ModuleObsidianMenu extends AbstractObsidianModule {
|
|||||||
this.services.appLifecycle.setSuspended(true);
|
this.services.appLifecycle.setSuspended(true);
|
||||||
this._log("Self-hosted LiveSync suspended", LOG_LEVEL_NOTICE);
|
this._log("Self-hosted LiveSync suspended", LOG_LEVEL_NOTICE);
|
||||||
}
|
}
|
||||||
await this.services.setting.onRealiseSetting();
|
await this.services.setting.realiseSetting();
|
||||||
await this.services.setting.saveSettingData();
|
await this.services.setting.saveSettingData();
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -85,17 +85,15 @@ export class ConflictResolveModal extends Modal {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
diff = diff.replace(/\n/g, "<br>");
|
|
||||||
div.innerHTML = diff;
|
|
||||||
const div2 = contentEl.createDiv("");
|
const div2 = contentEl.createDiv("");
|
||||||
const date1 =
|
const date1 =
|
||||||
new Date(this.result.left.mtime).toLocaleString() + (this.result.left.deleted ? " (Deleted)" : "");
|
new Date(this.result.left.mtime).toLocaleString() + (this.result.left.deleted ? " (Deleted)" : "");
|
||||||
const date2 =
|
const date2 =
|
||||||
new Date(this.result.right.mtime).toLocaleString() + (this.result.right.deleted ? " (Deleted)" : "");
|
new Date(this.result.right.mtime).toLocaleString() + (this.result.right.deleted ? " (Deleted)" : "");
|
||||||
div2.innerHTML = `
|
div2.setHTMLUnsafe(`
|
||||||
<span class='deleted'><span class='conflict-dev-name'>${this.localName}</span>: ${date1}</span><br>
|
<span class='deleted'><span class='conflict-dev-name'>${this.localName}</span>: ${date1}</span><br>
|
||||||
<span class='added'><span class='conflict-dev-name'>${this.remoteName}</span>: ${date2}</span><br>
|
<span class='added'><span class='conflict-dev-name'>${this.remoteName}</span>: ${date2}</span><br>
|
||||||
`;
|
`);
|
||||||
contentEl.createEl("button", { text: `Use ${this.localName}` }, (e) =>
|
contentEl.createEl("button", { text: `Use ${this.localName}` }, (e) =>
|
||||||
e.addEventListener("click", () => this.sendResponse(this.result.right.rev))
|
e.addEventListener("click", () => this.sendResponse(this.result.right.rev))
|
||||||
).style.marginRight = "4px";
|
).style.marginRight = "4px";
|
||||||
@@ -110,6 +108,13 @@ export class ConflictResolveModal extends Modal {
|
|||||||
contentEl.createEl("button", { text: !this.pluginPickMode ? "Not now" : "Cancel" }, (e) =>
|
contentEl.createEl("button", { text: !this.pluginPickMode ? "Not now" : "Cancel" }, (e) =>
|
||||||
e.addEventListener("click", () => this.sendResponse(CANCELLED))
|
e.addEventListener("click", () => this.sendResponse(CANCELLED))
|
||||||
).style.marginRight = "4px";
|
).style.marginRight = "4px";
|
||||||
|
diff = diff.replace(/\n/g, "<br>");
|
||||||
|
// div.innerHTML = diff;
|
||||||
|
if (diff.length > 100 * 1024) {
|
||||||
|
div.setText("(Too large diff to display)");
|
||||||
|
} else {
|
||||||
|
div.setHTMLUnsafe(diff);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sendResponse(result: MergeDialogResult) {
|
sendResponse(result: MergeDialogResult) {
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ export function paneSyncSettings(
|
|||||||
if (!this.editingSettings.isConfigured) {
|
if (!this.editingSettings.isConfigured) {
|
||||||
this.editingSettings.isConfigured = true;
|
this.editingSettings.isConfigured = true;
|
||||||
await this.saveAllDirtySettings();
|
await this.saveAllDirtySettings();
|
||||||
await this.services.setting.onRealiseSetting();
|
await this.services.setting.realiseSetting();
|
||||||
await this.rebuildDB("localOnly");
|
await this.rebuildDB("localOnly");
|
||||||
// this.resetEditingSettings();
|
// this.resetEditingSettings();
|
||||||
if (
|
if (
|
||||||
@@ -124,13 +124,13 @@ export function paneSyncSettings(
|
|||||||
await this.confirmRebuild();
|
await this.confirmRebuild();
|
||||||
} else {
|
} else {
|
||||||
await this.saveAllDirtySettings();
|
await this.saveAllDirtySettings();
|
||||||
await this.services.setting.onRealiseSetting();
|
await this.services.setting.realiseSetting();
|
||||||
this.services.appLifecycle.askRestart();
|
this.services.appLifecycle.askRestart();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
await this.saveAllDirtySettings();
|
await this.saveAllDirtySettings();
|
||||||
await this.services.setting.onRealiseSetting();
|
await this.services.setting.realiseSetting();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -169,7 +169,7 @@ export function paneSyncSettings(
|
|||||||
}
|
}
|
||||||
await this.saveSettings(["liveSync", "periodicReplication"]);
|
await this.saveSettings(["liveSync", "periodicReplication"]);
|
||||||
|
|
||||||
await this.services.setting.onRealiseSetting();
|
await this.services.setting.realiseSetting();
|
||||||
});
|
});
|
||||||
|
|
||||||
new Setting(paneEl)
|
new Setting(paneEl)
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ export class ModuleLiveSyncMain extends AbstractModule {
|
|||||||
}
|
}
|
||||||
if (!(await this.core.services.appLifecycle.onFirstInitialise())) return false;
|
if (!(await this.core.services.appLifecycle.onFirstInitialise())) return false;
|
||||||
// await this.core.$$realizeSettingSyncMode();
|
// await this.core.$$realizeSettingSyncMode();
|
||||||
await this.services.setting.onRealiseSetting();
|
await this.services.setting.realiseSetting();
|
||||||
fireAndForget(async () => {
|
fireAndForget(async () => {
|
||||||
this._log($msg("moduleLiveSyncMain.logAdditionalSafetyScan"), LOG_LEVEL_VERBOSE);
|
this._log($msg("moduleLiveSyncMain.logAdditionalSafetyScan"), LOG_LEVEL_VERBOSE);
|
||||||
if (!(await this.services.appLifecycle.onScanningStartupIssues())) {
|
if (!(await this.services.appLifecycle.onScanningStartupIssues())) {
|
||||||
@@ -67,7 +67,7 @@ export class ModuleLiveSyncMain extends AbstractModule {
|
|||||||
eventHub.emitEvent(EVENT_REQUEST_RELOAD_SETTING_TAB);
|
eventHub.emitEvent(EVENT_REQUEST_RELOAD_SETTING_TAB);
|
||||||
});
|
});
|
||||||
eventHub.onEvent(EVENT_SETTING_SAVED, (settings: ObsidianLiveSyncSettings) => {
|
eventHub.onEvent(EVENT_SETTING_SAVED, (settings: ObsidianLiveSyncSettings) => {
|
||||||
fireAndForget(() => this.core.services.setting.onRealiseSetting());
|
fireAndForget(() => this.core.services.setting.realiseSetting());
|
||||||
});
|
});
|
||||||
return Promise.resolve(true);
|
return Promise.resolve(true);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user