feat(core): add resetSync button (#10404)

This commit is contained in:
EYHN
2025-02-24 10:22:34 +00:00
parent 59a791fe1f
commit 0e581c915c
6 changed files with 46 additions and 0 deletions
@@ -534,4 +534,8 @@ export class DocFrontend {
sub?.unsubscribe();
});
}
async resetSync() {
await this.sync.resetSync();
}
}
@@ -27,6 +27,7 @@ export interface DocSync {
readonly state$: Observable<DocSyncState>;
docState$(docId: string): Observable<DocSyncDocState>;
addPriority(id: string, priority: number): () => void;
resetSync(): Promise<void>;
}
export class DocSyncImpl implements DocSync {
@@ -127,4 +128,13 @@ export class DocSyncImpl implements DocSync {
const undo = this.peers.map(peer => peer.addPriority(id, priority));
return () => undo.forEach(fn => fn());
}
async resetSync() {
const running = this.abort !== null;
this.stop();
await this.sync.clearClocks();
if (running) {
this.start();
}
}
}
@@ -222,6 +222,10 @@ class WorkerDocSync implements DocSync {
subscription.unsubscribe();
};
}
resetSync(): Promise<void> {
return this.client.call('docSync.resetSync');
}
}
class WorkerBlobSync implements BlobSync {
@@ -231,6 +231,7 @@ class StoreConsumer {
const undo = this.docSync.addPriority(docId, priority);
return () => undo();
}),
'docSync.resetSync': () => this.docSync.resetSync(),
'blobSync.downloadBlob': key => this.blobSync.downloadBlob(key),
'blobSync.uploadBlob': blob => this.blobSync.uploadBlob(blob),
'blobSync.fullSync': () =>
@@ -81,6 +81,7 @@ interface GroupedWorkerOps {
state: [void, DocSyncState];
docState: [string, DocSyncDocState];
addPriority: [{ docId: string; priority: number }, boolean];
resetSync: [void, void];
};
blobSync: {