Stop exposing Syncer from SyncClient
This commit is contained in:
parent
93b43f57b7
commit
2722f7c7fc
11 changed files with 84 additions and 55 deletions
|
|
@ -1,19 +1,15 @@
|
|||
export {
|
||||
SyncHistory,
|
||||
SyncType,
|
||||
SyncSource,
|
||||
SyncStatus,
|
||||
type HistoryStats,
|
||||
type HistoryEntry
|
||||
} from "./tracing/sync-history";
|
||||
|
||||
export { Logger, LogLevel, LogLine } from "./tracing/logger";
|
||||
|
||||
export { SyncClient } from "./sync-client";
|
||||
export { Syncer } from "./sync-operations/syncer";
|
||||
export type { CheckConnectionResult } from "./services/sync-service";
|
||||
export { Settings, type SyncSettings } from "./persistence/settings";
|
||||
|
||||
export { type SyncSettings } from "./persistence/settings";
|
||||
export type { RelativePath } from "./persistence/database";
|
||||
export type { FileSystemOperations } from "./file-operations/filesystem-operations";
|
||||
export type { PersistenceProvider } from "./persistence/persistence";
|
||||
|
||||
export { SyncClient } from "./sync-client";
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ export class Settings {
|
|||
return this.settings;
|
||||
}
|
||||
|
||||
public addOnSettingsChangeHandlers(
|
||||
public addOnSettingsChangeListener(
|
||||
handler: (settings: SyncSettings, oldSettings: SyncSettings) => void
|
||||
): void {
|
||||
this.onSettingsChangeHandlers.push(handler);
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ export class ConnectionStatus {
|
|||
[this.until, this.resolveUntil, this.rejectUntil] =
|
||||
createPromise<symbol>();
|
||||
|
||||
settings.addOnSettingsChangeHandlers((newSettings, oldSettings) => {
|
||||
settings.addOnSettingsChangeListener((newSettings, oldSettings) => {
|
||||
if (oldSettings.isSyncEnabled != newSettings.isSyncEnabled) {
|
||||
this.canFetch = newSettings.isSyncEnabled;
|
||||
this.resolveUntil(ConnectionStatus.UNTIL_RESOLUTION);
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ export class SyncService {
|
|||
) {
|
||||
this.createClient(this.settings.getSettings().remoteUri);
|
||||
|
||||
settings.addOnSettingsChangeHandlers((newSettings, oldSettings) => {
|
||||
settings.addOnSettingsChangeListener((newSettings, oldSettings) => {
|
||||
if (newSettings.remoteUri === oldSettings.remoteUri) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import type { PersistenceProvider } from "./persistence/persistence";
|
|||
import type { HistoryEntry, HistoryStats } from "./tracing/sync-history";
|
||||
import { SyncHistory } from "./tracing/sync-history";
|
||||
import { Logger } from "./tracing/logger";
|
||||
import type { StoredDatabase } from "./persistence/database";
|
||||
import type { RelativePath, StoredDatabase } from "./persistence/database";
|
||||
import { Database } from "./persistence/database";
|
||||
import type { SyncSettings } from "./persistence/settings";
|
||||
import { Settings } from "./persistence/settings";
|
||||
|
|
@ -29,10 +29,6 @@ export class SyncClient {
|
|||
private readonly _connectionStatus: ConnectionStatus
|
||||
) {}
|
||||
|
||||
public get syncer(): Syncer {
|
||||
return this._syncer;
|
||||
}
|
||||
|
||||
public get logger(): Logger {
|
||||
return this._logger;
|
||||
}
|
||||
|
|
@ -58,7 +54,7 @@ export class SyncClient {
|
|||
nativeLineEndings?: string;
|
||||
}): Promise<SyncClient> {
|
||||
const logger = new Logger();
|
||||
logger.info("Starting SyncClient");
|
||||
logger.info("Initialising SyncClient");
|
||||
|
||||
const history = new SyncHistory(logger);
|
||||
|
||||
|
|
@ -112,25 +108,6 @@ export class SyncClient {
|
|||
connectionStatus
|
||||
);
|
||||
|
||||
settings.addOnSettingsChangeHandlers((newSettings, oldSettings) => {
|
||||
if (
|
||||
newSettings.fetchChangesUpdateIntervalMs !==
|
||||
oldSettings.fetchChangesUpdateIntervalMs
|
||||
) {
|
||||
client.setRemoteEventListener(
|
||||
newSettings.fetchChangesUpdateIntervalMs
|
||||
);
|
||||
}
|
||||
|
||||
if (
|
||||
newSettings.vaultName !== oldSettings.vaultName ||
|
||||
newSettings.token !== oldSettings.token ||
|
||||
newSettings.remoteUri !== oldSettings.remoteUri
|
||||
) {
|
||||
void client.reset();
|
||||
}
|
||||
});
|
||||
|
||||
logger.info("SyncClient initialised");
|
||||
|
||||
return client;
|
||||
|
|
@ -151,6 +128,27 @@ export class SyncClient {
|
|||
}
|
||||
|
||||
public async start(): Promise<void> {
|
||||
this._settings.addOnSettingsChangeListener(
|
||||
(newSettings, oldSettings) => {
|
||||
if (
|
||||
newSettings.fetchChangesUpdateIntervalMs !==
|
||||
oldSettings.fetchChangesUpdateIntervalMs
|
||||
) {
|
||||
this.setRemoteEventListener(
|
||||
newSettings.fetchChangesUpdateIntervalMs
|
||||
);
|
||||
}
|
||||
|
||||
if (
|
||||
newSettings.vaultName !== oldSettings.vaultName ||
|
||||
newSettings.token !== oldSettings.token ||
|
||||
newSettings.remoteUri !== oldSettings.remoteUri
|
||||
) {
|
||||
void this.reset();
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
await this._syncer.scheduleSyncForOfflineChanges();
|
||||
|
||||
this.setRemoteEventListener(
|
||||
|
|
@ -163,6 +161,12 @@ export class SyncClient {
|
|||
this.unsetRemoteEventListener();
|
||||
}
|
||||
|
||||
public async waitAndStop(): Promise<void> {
|
||||
await this._syncer.waitForSyncQueue();
|
||||
await this._syncer.applyRemoteChangesLocally();
|
||||
this.stop();
|
||||
}
|
||||
|
||||
/// Wait for the in-flight operations to finish, reset all tracking,
|
||||
/// and the local database but retain the settings.
|
||||
/// The SyncClient can be used again after calling this method.
|
||||
|
|
@ -187,10 +191,41 @@ export class SyncClient {
|
|||
await this._settings.setSetting(key, value);
|
||||
}
|
||||
|
||||
public addOnSettingsChangeHandlers(
|
||||
public addOnSettingsChangeListener(
|
||||
handler: (settings: SyncSettings, oldSettings: SyncSettings) => void
|
||||
): void {
|
||||
this._settings.addOnSettingsChangeHandlers(handler);
|
||||
this._settings.addOnSettingsChangeListener(handler);
|
||||
}
|
||||
|
||||
public addRemainingSyncOperationsListener(
|
||||
listener: (remainingOperations: number) => void
|
||||
): void {
|
||||
this._syncer.addRemainingOperationsListener(listener);
|
||||
}
|
||||
|
||||
public async syncLocallyCreatedFile(
|
||||
relativePath: RelativePath
|
||||
): Promise<void> {
|
||||
return this._syncer.syncLocallyCreatedFile(relativePath);
|
||||
}
|
||||
|
||||
public async syncLocallyDeletedFile(
|
||||
relativePath: RelativePath
|
||||
): Promise<void> {
|
||||
return this._syncer.syncLocallyDeletedFile(relativePath);
|
||||
}
|
||||
|
||||
public async syncLocallyUpdatedFile({
|
||||
oldPath,
|
||||
relativePath
|
||||
}: {
|
||||
oldPath?: RelativePath;
|
||||
relativePath: RelativePath;
|
||||
}): Promise<void> {
|
||||
return this._syncer.syncLocallyUpdatedFile({
|
||||
oldPath,
|
||||
relativePath
|
||||
});
|
||||
}
|
||||
|
||||
private setRemoteEventListener(intervalMs: number): void {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue