mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2026-02-22 20:18:48 +00:00
Improved - New Translation: `es` (Spanish) by @zeedif (Thank you so much)! - Now all of messages can be selectable and copyable, also on the iPhone, iPad, and Android devices. Now we can copy or share the messages easily. New Feature - Peer-to-Peer Synchronisation has been implemented! Fixed - No longer memory or resource leaks when the plug-in is disabled. - Now deleted chunks are correctly detected on conflict resolution, and we are guided to resurrect them. - Hanging issue during the initial synchronisation has been fixed. - Some unnecessary logs have been removed. - Now all modal dialogues are correctly closed when the plug-in is disabled. Refactor - Several interfaces have been moved to the separated library. - Translations have been moved to each language file, and during the build, they are merged into one file. - Non-mobile friendly code has been removed and replaced with the safer code. - Started writing Platform impedance-matching-layer. - Svelte has been updated to v5. - Some function have got more robust type definitions. - Terser optimisation has slightly improved. - During the build, analysis meta-file of the bundled codes will be generated.
33 lines
1.7 KiB
TypeScript
33 lines
1.7 KiB
TypeScript
import { fireAndForget } from "octagonal-wheels/promises";
|
|
import { REMOTE_MINIO, REMOTE_P2P, type RemoteDBSettings } from "../../lib/src/common/types";
|
|
import { LiveSyncCouchDBReplicator } from "../../lib/src/replication/couchdb/LiveSyncReplicator";
|
|
import type { LiveSyncAbstractReplicator } from "../../lib/src/replication/LiveSyncAbstractReplicator";
|
|
import { AbstractModule } from "../AbstractModule";
|
|
import type { ICoreModule } from "../ModuleTypes";
|
|
|
|
export class ModuleReplicatorCouchDB extends AbstractModule implements ICoreModule {
|
|
$anyNewReplicator(settingOverride: Partial<RemoteDBSettings> = {}): Promise<LiveSyncAbstractReplicator> {
|
|
const settings = { ...this.settings, ...settingOverride };
|
|
// If new remote types were added, add them here. Do not use `REMOTE_COUCHDB` directly for the safety valve.
|
|
if (settings.remoteType == REMOTE_MINIO || settings.remoteType == REMOTE_P2P) {
|
|
return undefined!;
|
|
}
|
|
return Promise.resolve(new LiveSyncCouchDBReplicator(this.core));
|
|
}
|
|
$everyAfterResumeProcess(): Promise<boolean> {
|
|
if (this.settings.remoteType != REMOTE_MINIO && this.settings.remoteType != REMOTE_P2P) {
|
|
// If LiveSync enabled, open replication
|
|
if (this.settings.liveSync) {
|
|
fireAndForget(() => this.core.replicator.openReplication(this.settings, true, false, false));
|
|
}
|
|
// If sync on start enabled, open replication
|
|
if (!this.settings.liveSync && this.settings.syncOnStart) {
|
|
// Possibly ok as if only share the result
|
|
fireAndForget(() => this.core.replicator.openReplication(this.settings, false, false, false));
|
|
}
|
|
}
|
|
|
|
return Promise.resolve(true);
|
|
}
|
|
}
|