From 258422cf3ce6493c3f548708cde9b212a43b3bff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20S=C3=B3jko?= Date: Mon, 4 Dec 2023 09:10:18 +0100 Subject: [PATCH] chore: rely on websockets for autosync if a websocket connection is open (#2672) --- ...ents-npm-2.122.0-e9214530a6-9dd2f02f1c.zip | Bin 108162 -> 0 bytes ...icates-npm-1.6.9-7b42d49f9d-3b931aaccd.zip | Bin 19060 -> 0 bytes ...urity-npm-1.12.0-b20ed17598-96d42255e7.zip | Bin 29780 -> 0 bytes .../src/Domain/Api/WebSocketsServiceEvent.ts | 1 + .../src/Domain/Api/WebsocketsService.ts | 7 +++ .../src/Domain/Sync/SyncServiceInterface.ts | 2 +- packages/snjs/lib/Application/Application.ts | 17 +------ .../Application/Dependencies/Dependencies.ts | 19 ++++---- .../Dependencies/DependencyEvents.ts | 1 + .../snjs/lib/Services/Sync/SyncService.ts | 44 +++++++++++++++++- packages/snjs/package.json | 2 +- yarn.lock | 31 +----------- 12 files changed, 66 insertions(+), 58 deletions(-) delete mode 100644 .yarn/cache/@standardnotes-domain-events-npm-2.122.0-e9214530a6-9dd2f02f1c.zip delete mode 100644 .yarn/cache/@standardnotes-predicates-npm-1.6.9-7b42d49f9d-3b931aaccd.zip delete mode 100644 .yarn/cache/@standardnotes-security-npm-1.12.0-b20ed17598-96d42255e7.zip diff --git a/.yarn/cache/@standardnotes-domain-events-npm-2.122.0-e9214530a6-9dd2f02f1c.zip b/.yarn/cache/@standardnotes-domain-events-npm-2.122.0-e9214530a6-9dd2f02f1c.zip deleted file mode 100644 index afb796a969ebb209b45b4ec52ed93c7cfb0c83d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108162 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 Us!?Mk#s~Og9t$I)_MnjH|7psP;Q#;t diff --git a/.yarn/cache/@standardnotes-predicates-npm-1.6.9-7b42d49f9d-3b931aaccd.zip b/.yarn/cache/@standardnotes-predicates-npm-1.6.9-7b42d49f9d-3b931aaccd.zip deleted file mode 100644 index 8da3424d57f8057b101db88dfe2c8c178bb15dd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19060 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 diff --git a/.yarn/cache/@standardnotes-security-npm-1.12.0-b20ed17598-96d42255e7.zip b/.yarn/cache/@standardnotes-security-npm-1.12.0-b20ed17598-96d42255e7.zip deleted file mode 100644 index 2c8912e3d204a9b11ea06867df5eb28cee538746..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29780 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 { isDatabaseLoaded(): boolean onNewDatabaseCreated(): Promise loadDatabasePayloads(): Promise - + beginAutoSyncTimer(): void resetSyncState(): void markAllItemsAsNeedingSyncAndPersist(): Promise downloadFirstSync(waitTimeOnFailureMs: number, otherSyncOptions?: Partial): Promise diff --git a/packages/snjs/lib/Application/Application.ts b/packages/snjs/lib/Application/Application.ts index c69d5343beb..019241bfac0 100644 --- a/packages/snjs/lib/Application/Application.ts +++ b/packages/snjs/lib/Application/Application.ts @@ -137,9 +137,6 @@ import { TYPES } from './Dependencies/Types' import { RegisterApplicationServicesEvents } from './Dependencies/DependencyEvents' import { Result } from '@standardnotes/domain-core' -/** How often to automatically sync, in milliseconds */ -const DEFAULT_AUTO_SYNC_INTERVAL = 30_000 - type LaunchCallback = { receiveChallenge: (challenge: Challenge) => void } @@ -165,7 +162,6 @@ export class SNApplication implements ApplicationInterface, AppGroupManagedAppli private serviceObservers: ObserverRemover[] = [] private managedSubscribers: ObserverRemover[] = [] - private autoSyncInterval!: ReturnType /** True if the result of deviceInterface.openDatabase yields a new database being created */ private createdNewDatabase = false @@ -463,7 +459,7 @@ export class SNApplication implements ApplicationInterface, AppGroupManagedAppli throw 'Application has been destroyed.' } await this.handleStage(ApplicationStage.LoadedDatabase_12) - this.beginAutoSyncTimer() + this.sync.beginAutoSyncTimer() await this.sync.sync({ mode: SyncMode.DownloadFirst, source: SyncSource.External, @@ -503,14 +499,6 @@ export class SNApplication implements ApplicationInterface, AppGroupManagedAppli } } - private beginAutoSyncTimer() { - this.autoSyncInterval = setInterval(() => { - const logger = this.dependencies.get(TYPES.Logger) - logger.info('Syncing from autosync') - void this.sync.sync({ sourceDescription: 'Auto Sync' }) - }, DEFAULT_AUTO_SYNC_INTERVAL) - } - private async handleStage(stage: ApplicationStage) { await this.events.publishSync( { @@ -743,9 +731,6 @@ export class SNApplication implements ApplicationInterface, AppGroupManagedAppli public deinit(mode: DeinitMode, source: DeinitSource): void { this.dealloced = true - clearInterval(this.autoSyncInterval) - ;(this.autoSyncInterval as unknown) = undefined - for (const uninstallObserver of this.serviceObservers) { uninstallObserver() } diff --git a/packages/snjs/lib/Application/Dependencies/Dependencies.ts b/packages/snjs/lib/Application/Dependencies/Dependencies.ts index 4a1536de2d3..a5e89f47292 100644 --- a/packages/snjs/lib/Application/Dependencies/Dependencies.ts +++ b/packages/snjs/lib/Application/Dependencies/Dependencies.ts @@ -1331,6 +1331,15 @@ export class Dependencies { ) }) + this.factory.set(TYPES.WebSocketsService, () => { + return new WebSocketsService( + this.get(TYPES.DiskStorageService), + this.options.webSocketUrl, + this.get(TYPES.WebSocketApiService), + this.get(TYPES.InternalEventBus), + ) + }) + this.factory.set(TYPES.SyncService, () => { return new SyncService( this.get(TYPES.ItemManager), @@ -1347,6 +1356,7 @@ export class Dependencies { sleepBetweenBatches: this.options.sleepBetweenBatches, }, this.get(TYPES.Logger), + this.get(TYPES.WebSocketsService), this.get(TYPES.InternalEventBus), ) }) @@ -1390,15 +1400,6 @@ export class Dependencies { ) }) - this.factory.set(TYPES.WebSocketsService, () => { - return new WebSocketsService( - this.get(TYPES.DiskStorageService), - this.options.webSocketUrl, - this.get(TYPES.WebSocketApiService), - this.get(TYPES.InternalEventBus), - ) - }) - this.factory.set(TYPES.WebSocketApiService, () => { return new WebSocketApiService(this.get(TYPES.WebSocketServer)) }) diff --git a/packages/snjs/lib/Application/Dependencies/DependencyEvents.ts b/packages/snjs/lib/Application/Dependencies/DependencyEvents.ts index 5a3896bc99e..49e3e3a07ea 100644 --- a/packages/snjs/lib/Application/Dependencies/DependencyEvents.ts +++ b/packages/snjs/lib/Application/Dependencies/DependencyEvents.ts @@ -40,6 +40,7 @@ export function RegisterApplicationServicesEvents(container: Dependencies, event events.addEventHandler(container.get(TYPES.SubscriptionManager), ApplicationEvent.UserRolesChanged) events.addEventHandler(container.get(TYPES.SubscriptionManager), SessionEvent.Restored) events.addEventHandler(container.get(TYPES.SyncService), IntegrityEvent.IntegrityCheckCompleted) + events.addEventHandler(container.get(TYPES.SyncService), WebSocketsServiceEvent.ItemsChangedOnServer) events.addEventHandler(container.get(TYPES.UserService), AccountEvent.SignedInOrRegistered) events.addEventHandler(container.get(TYPES.VaultInviteService), ApplicationEvent.Launched) events.addEventHandler(container.get(TYPES.VaultInviteService), SyncEvent.ReceivedSharedVaultInvites) diff --git a/packages/snjs/lib/Services/Sync/SyncService.ts b/packages/snjs/lib/Services/Sync/SyncService.ts index fe896389f27..b256d8a1f21 100644 --- a/packages/snjs/lib/Services/Sync/SyncService.ts +++ b/packages/snjs/lib/Services/Sync/SyncService.ts @@ -84,6 +84,8 @@ import { SyncEventReceivedAsymmetricMessagesData, SyncOpStatus, ApplicationSyncOptions, + WebSocketsServiceEvent, + WebSocketsService, } from '@standardnotes/services' import { OfflineSyncResponse } from './Offline/Response' import { @@ -98,6 +100,7 @@ import { ContentType } from '@standardnotes/domain-core' const DEFAULT_MAJOR_CHANGE_THRESHOLD = 15 const INVALID_SESSION_RESPONSE_STATUS = 401 +const DEFAULT_AUTO_SYNC_INTERVAL = 30_000 /** Content types appearing first are always mapped first */ const ContentTypeLocalLoadPriorty = [ @@ -149,6 +152,9 @@ export class SyncService public lastSyncInvokationPromise?: Promise public currentSyncRequestPromise?: Promise + private autoSyncInterval?: NodeJS.Timer + private wasNotifiedOfItemsChangeOnServer = false + constructor( private itemManager: ItemManager, private sessionManager: SessionManager, @@ -161,6 +167,7 @@ export class SyncService private identifier: string, private readonly options: ApplicationSyncOptions, private logger: LoggerInterface, + private sockets: WebSocketsService, protected override internalEventBus: InternalEventBusInterface, ) { super(internalEventBus) @@ -187,6 +194,10 @@ export class SyncService public override deinit(): void { this.dealloced = true + if (this.autoSyncInterval) { + clearInterval(this.autoSyncInterval) + } + ;(this.autoSyncInterval as unknown) = undefined ;(this.sessionManager as unknown) = undefined ;(this.itemManager as unknown) = undefined ;(this.encryptionService as unknown) = undefined @@ -349,6 +360,28 @@ export class SyncService this.opStatus.setDatabaseLoadStatus(0, 0, true) } + beginAutoSyncTimer(): void { + this.autoSyncInterval = setInterval(this.autoSync.bind(this), DEFAULT_AUTO_SYNC_INTERVAL) + } + + private autoSync(): void { + if (!this.sockets.isWebSocketConnectionOpen()) { + this.logger.debug('WebSocket connection is closed, doing autosync') + + void this.sync({ sourceDescription: 'Auto Sync' }) + + return + } + + if (this.wasNotifiedOfItemsChangeOnServer) { + this.logger.debug('Was notified of items changed on server, doing autosync') + + this.wasNotifiedOfItemsChangeOnServer = false + + void this.sync({ sourceDescription: 'WebSockets Event - Items Changed On Server' }) + } + } + private async processPayloadBatch( batch: FullyFormedPayloadInterface[], currentPosition?: number, @@ -1400,8 +1433,15 @@ export class SyncService } async handleEvent(event: InternalEventInterface): Promise { - if (event.type === IntegrityEvent.IntegrityCheckCompleted) { - await this.handleIntegrityCheckEventResponse(event.payload as IntegrityEventPayload) + switch (event.type) { + case IntegrityEvent.IntegrityCheckCompleted: + await this.handleIntegrityCheckEventResponse(event.payload as IntegrityEventPayload) + break + case WebSocketsServiceEvent.ItemsChangedOnServer: + this.wasNotifiedOfItemsChangeOnServer = true + break + default: + break } } diff --git a/packages/snjs/package.json b/packages/snjs/package.json index 9ac0bc3641c..b997dfe7c90 100644 --- a/packages/snjs/package.json +++ b/packages/snjs/package.json @@ -38,7 +38,7 @@ "@standardnotes/api": "workspace:*", "@standardnotes/common": "^1.50.0", "@standardnotes/domain-core": "^1.40.0", - "@standardnotes/domain-events": "^2.122.0", + "@standardnotes/domain-events": "^2.138.1", "@standardnotes/encryption": "workspace:*", "@standardnotes/features": "workspace:*", "@standardnotes/files": "workspace:*", diff --git a/yarn.lock b/yarn.lock index 7dd7a8b7120..03b7e592d1a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6610,7 +6610,7 @@ __metadata: languageName: node linkType: hard -"@standardnotes/domain-events@npm:2.138.1": +"@standardnotes/domain-events@npm:2.138.1, @standardnotes/domain-events@npm:^2.138.1": version: 2.138.1 resolution: "@standardnotes/domain-events@npm:2.138.1" dependencies: @@ -6620,16 +6620,6 @@ __metadata: languageName: node linkType: hard -"@standardnotes/domain-events@npm:^2.122.0": - version: 2.122.0 - resolution: "@standardnotes/domain-events@npm:2.122.0" - dependencies: - "@standardnotes/predicates": 1.6.9 - "@standardnotes/security": 1.12.0 - checksum: 9dd2f02f1c9c91b3380d0db88dba3e504aaa14b7e58dcb519611dd8b15edb27c111805eb0e34f1612751fb59428296a216e39b5711892f6c8f1fc1f057e61c50 - languageName: node - linkType: hard - "@standardnotes/dynamic-theme@npm:^1.2.8": version: 1.2.8 resolution: "@standardnotes/dynamic-theme@npm:1.2.8" @@ -6992,13 +6982,6 @@ __metadata: languageName: unknown linkType: soft -"@standardnotes/predicates@npm:1.6.9": - version: 1.6.9 - resolution: "@standardnotes/predicates@npm:1.6.9" - checksum: 3b931aaccd763c98d043487e90624507265a350d5656ef55a3355b69fbdae2f718ecd2bde1e402d8fc49355404f91220df99b0a80c081e8da0d515eea1def9e7 - languageName: node - linkType: hard - "@standardnotes/predicates@npm:1.8.1": version: 1.8.1 resolution: "@standardnotes/predicates@npm:1.8.1" @@ -7081,16 +7064,6 @@ __metadata: languageName: node linkType: hard -"@standardnotes/security@npm:1.12.0": - version: 1.12.0 - resolution: "@standardnotes/security@npm:1.12.0" - dependencies: - jsonwebtoken: ^9.0.0 - reflect-metadata: ^0.1.13 - checksum: 96d42255e79fc2cf4c52f3d370c04ae00296673993e1c0cea2356ca4a6c934d22d6100ba95f9ad602ffb72ee686367ef4a263dc6a6c51795d9b61dc835e635cd - languageName: node - linkType: hard - "@standardnotes/security@npm:1.17.2, @standardnotes/security@npm:^1.17.2": version: 1.17.2 resolution: "@standardnotes/security@npm:1.17.2" @@ -7239,7 +7212,7 @@ __metadata: "@standardnotes/api": "workspace:*" "@standardnotes/common": ^1.50.0 "@standardnotes/domain-core": ^1.40.0 - "@standardnotes/domain-events": ^2.122.0 + "@standardnotes/domain-events": ^2.138.1 "@standardnotes/encryption": "workspace:*" "@standardnotes/features": "workspace:*" "@standardnotes/files": "workspace:*"