Fix syncing when network latency is present (#4)
* WIP * Add debug * Dedupe inserts * Add deterministic ordering * Fix whitespaces * Update insta * Add integration test script * Rename * Add test * Working for non-deletes * omg it mostly works for deletes * Isdeleted fix * remove created dates * update api * Take document id * No max attempt * works * Use string uuids * . * working!!!! (hopefully) * Improve bundling * Add module * lint * . * lint * Fix CI * use toolchain * clean up * Add useSlowFileEvents * Delete fuzz * Fix CI * use docker * fix script * clean up * Clean up * change node version * Build docker image on every commit * fix ci * 1 db per vault * Add scritps folder * Bump versions * Lint * . * Fix tests for real * Style * . * try * Consistent ordering * Fix tests * hmm * . * Clean up diff * Fixes * . * Fix version bump * . * . * .
This commit is contained in:
parent
bcf48c428d
commit
8b8f1d91d9
91 changed files with 2252 additions and 1586 deletions
|
|
@ -12,6 +12,7 @@ import { SyncService } from "./services/sync-service";
|
|||
import { Syncer } from "./sync-operations/syncer";
|
||||
import type { FileSystemOperations } from "./file-operations/filesystem-operations";
|
||||
import { FileOperations } from "./file-operations/file-operations";
|
||||
import { ConnectedState } from "./services/connected-state";
|
||||
|
||||
export class SyncClient {
|
||||
private remoteListenerIntervalId: NodeJS.Timeout | null = null;
|
||||
|
|
@ -42,7 +43,7 @@ export class SyncClient {
|
|||
}
|
||||
|
||||
public get documentCount(): number {
|
||||
return this._database.getDocuments().size;
|
||||
return this._database.length;
|
||||
}
|
||||
|
||||
public set fetchImplementation(fetch: typeof globalThis.fetch) {
|
||||
|
|
@ -90,7 +91,9 @@ export class SyncClient {
|
|||
}
|
||||
);
|
||||
|
||||
const syncService = new SyncService(settings, logger);
|
||||
const connectedState = new ConnectedState(settings, logger);
|
||||
|
||||
const syncService = new SyncService(connectedState, settings, logger);
|
||||
|
||||
const syncer = new Syncer(
|
||||
logger,
|
||||
|
|
@ -117,18 +120,13 @@ export class SyncClient {
|
|||
);
|
||||
|
||||
settings.addOnSettingsChangeHandlers((newSettings, oldSettings) => {
|
||||
client.registerRemoteEventListener(
|
||||
newSettings.fetchChangesUpdateIntervalMs
|
||||
);
|
||||
|
||||
if (!oldSettings.isSyncEnabled && newSettings.isSyncEnabled) {
|
||||
syncer
|
||||
.scheduleSyncForOfflineChanges()
|
||||
.catch((_error: unknown) => {
|
||||
logger.error(
|
||||
"Failed to schedule sync for offline changes"
|
||||
);
|
||||
});
|
||||
if (
|
||||
newSettings.fetchChangesUpdateIntervalMs !==
|
||||
oldSettings.fetchChangesUpdateIntervalMs
|
||||
) {
|
||||
client.registerRemoteEventListener(
|
||||
newSettings.fetchChangesUpdateIntervalMs
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
|
|
@ -148,7 +146,7 @@ export class SyncClient {
|
|||
this.stop();
|
||||
await this._syncer.reset();
|
||||
this._history.reset();
|
||||
await this._database.resetSyncState();
|
||||
this._database.resetSyncState();
|
||||
this.logger.reset();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue