diff --git a/common/spaces/sync.ts b/common/spaces/sync.ts index 5426c3e..923bb98 100644 --- a/common/spaces/sync.ts +++ b/common/spaces/sync.ts @@ -93,10 +93,11 @@ export class SpaceSync { logger: Logger, ) => Promise, ): Promise { + console.log("Syncing", name, primaryHash, secondaryHash); let operations = 0; if ( - primaryHash && !secondaryHash && + primaryHash !== undefined && secondaryHash === undefined && !this.snapshot.has(name) ) { // New file, created on primary, copy from primary to secondary @@ -117,7 +118,7 @@ export class SpaceSync { ]); operations++; } else if ( - secondaryHash && !primaryHash && + secondaryHash !== undefined && primaryHash === undefined && !this.snapshot.has(name) ) { // New file, created on secondary, copy from secondary to primary @@ -138,8 +139,8 @@ export class SpaceSync { ]); operations++; } else if ( - primaryHash && this.snapshot.has(name) && - !secondaryHash + primaryHash !== undefined && this.snapshot.has(name) && + secondaryHash === undefined ) { // File deleted on B this.logger.log( @@ -151,8 +152,8 @@ export class SpaceSync { this.snapshot.delete(name); operations++; } else if ( - secondaryHash && this.snapshot.has(name) && - !primaryHash + secondaryHash !== undefined && this.snapshot.has(name) && + primaryHash === undefined ) { // File deleted on A this.logger.log( @@ -164,8 +165,8 @@ export class SpaceSync { this.snapshot.delete(name); operations++; } else if ( - this.snapshot.has(name) && !primaryHash && - !secondaryHash + this.snapshot.has(name) && primaryHash === undefined && + secondaryHash === undefined ) { // File deleted on both sides, :shrug: this.logger.log( @@ -176,7 +177,7 @@ export class SpaceSync { this.snapshot.delete(name); operations++; } else if ( - primaryHash && secondaryHash && + primaryHash !== undefined && secondaryHash !== undefined && this.snapshot.get(name) && primaryHash !== this.snapshot.get(name)![0] && secondaryHash === this.snapshot.get(name)![1] @@ -199,7 +200,7 @@ export class SpaceSync { ]); operations++; } else if ( - primaryHash && secondaryHash && + primaryHash !== undefined && secondaryHash !== undefined && this.snapshot.get(name) && secondaryHash !== this.snapshot.get(name)![1] && primaryHash === this.snapshot.get(name)![0] @@ -218,7 +219,7 @@ export class SpaceSync { operations++; } else if ( ( // File changed on both ends, but we don't have any info in the snapshot (resync scenario?): have to run through conflict handling - primaryHash && secondaryHash && + primaryHash !== undefined && secondaryHash !== undefined && !this.snapshot.has(name) ) || ( // File changed on both ends, CONFLICT! diff --git a/common/syscalls/sync.ts b/common/syscalls/sync.ts index bcd7c91..0536aee 100644 --- a/common/syscalls/sync.ts +++ b/common/syscalls/sync.ts @@ -59,9 +59,7 @@ export function syncSyscalls( const localHash = (await localSpace.getFileMeta(name)).lastModified; let remoteHash: number | undefined = undefined; try { - remoteHash = - (await race([remoteSpace.getFileMeta(name), timeout(1000)])) - .lastModified; + remoteHash = (await remoteSpace.getFileMeta(name)).lastModified; } catch (e: any) { if (e.message.includes("File not found")) { // File doesn't exist remotely, that's ok @@ -95,12 +93,9 @@ export function syncSyscalls( endpoint.user, endpoint.password, ); - // Let's just fetch metadata for the SETTINGS.md file (which should always exist) + // Let's just fetch the file list and see if it works try { - await race([ - syncSpace.getFileMeta("SETTINGS.md"), - timeout(2000), - ]); + await syncSpace.fetchFileList(); } catch (e: any) { console.error("Sync check failure", e.message); throw e; diff --git a/plugs/sync/sync.ts b/plugs/sync/sync.ts index f9d9229..d336093 100644 --- a/plugs/sync/sync.ts +++ b/plugs/sync/sync.ts @@ -1,11 +1,5 @@ import { store } from "$sb/plugos-syscall/mod.ts"; -import { - editor, - index, - space, - sync, - system, -} from "$sb/silverbullet-syscall/mod.ts"; +import { editor, space, sync, system } from "$sb/silverbullet-syscall/mod.ts"; import type { SyncEndpoint } from "$sb/silverbullet-syscall/sync.ts"; export async function configureCommand() { @@ -136,12 +130,6 @@ export async function performSync() { return; } - try { - await sync.check(config); - } catch (e: any) { - console.error("Sync check failed", e.message); - return; - } // Check if sync not already in progress const ongoingSync: number | undefined = await store.get("sync.startTime"); if (ongoingSync) {