diff --git a/.yarn/cache/@standardnotes-domain-events-npm-2.120.0-f3a9eaf351-bcd6caf10b.zip b/.yarn/cache/@standardnotes-domain-events-npm-2.121.0-77d4c0f05d-49d4a83421.zip similarity index 80% rename from .yarn/cache/@standardnotes-domain-events-npm-2.120.0-f3a9eaf351-bcd6caf10b.zip rename to .yarn/cache/@standardnotes-domain-events-npm-2.121.0-77d4c0f05d-49d4a83421.zip index 3c9d306f2..4be25714a 100644 Binary files a/.yarn/cache/@standardnotes-domain-events-npm-2.120.0-f3a9eaf351-bcd6caf10b.zip and b/.yarn/cache/@standardnotes-domain-events-npm-2.121.0-77d4c0f05d-49d4a83421.zip differ diff --git a/packages/responses/src/Domain/AsymmetricMessage/AsymmetricMessageServerHash.ts b/packages/responses/src/Domain/AsymmetricMessage/AsymmetricMessageServerHash.ts index a6bdafd69..80090253a 100644 --- a/packages/responses/src/Domain/AsymmetricMessage/AsymmetricMessageServerHash.ts +++ b/packages/responses/src/Domain/AsymmetricMessage/AsymmetricMessageServerHash.ts @@ -2,7 +2,7 @@ export interface AsymmetricMessageServerHash { uuid: string recipient_uuid: string sender_uuid: string - replaceabilityIdentifier?: string + replaceability_identifier: string | null encrypted_message: string created_at_timestamp: number updated_at_timestamp: number diff --git a/packages/services/src/Domain/Api/WebSocketsEventData.ts b/packages/services/src/Domain/Api/WebSocketsEventData.ts deleted file mode 100644 index 5f8d7cd1c..000000000 --- a/packages/services/src/Domain/Api/WebSocketsEventData.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Either } from '@standardnotes/common' -import { UserRolesChangedEventPayload, NotificationAddedForUserEventPayload } from '@standardnotes/domain-events' - -export interface WebSocketsEventData { - type: string - payload: Either -} diff --git a/packages/services/src/Domain/Api/WebSocketsServiceEvent.ts b/packages/services/src/Domain/Api/WebSocketsServiceEvent.ts index c0e27c147..dd1daec3a 100644 --- a/packages/services/src/Domain/Api/WebSocketsServiceEvent.ts +++ b/packages/services/src/Domain/Api/WebSocketsServiceEvent.ts @@ -1,4 +1,5 @@ export enum WebSocketsServiceEvent { UserRoleMessageReceived = 'WebSocketMessageReceived', NotificationAddedForUser = 'NotificationAddedForUser', + MessageSentToUser = 'MessageSentToUser', } diff --git a/packages/services/src/Domain/Api/WebsocketsService.ts b/packages/services/src/Domain/Api/WebsocketsService.ts index 32e764bc2..c34ae2ce9 100644 --- a/packages/services/src/Domain/Api/WebsocketsService.ts +++ b/packages/services/src/Domain/Api/WebsocketsService.ts @@ -1,18 +1,13 @@ import { isErrorResponse } from '@standardnotes/responses' -import { - DomainEventInterface, - UserRolesChangedEvent, - NotificationAddedForUserEvent, -} from '@standardnotes/domain-events' +import { DomainEventInterface } from '@standardnotes/domain-events' import { WebSocketApiServiceInterface } from '@standardnotes/api' import { WebSocketsServiceEvent } from './WebSocketsServiceEvent' import { StorageServiceInterface } from '../Storage/StorageServiceInterface' import { InternalEventBusInterface } from '../Internal/InternalEventBusInterface' import { AbstractService } from '../Service/AbstractService' import { StorageKey } from '../Storage/StorageKeys' -import { WebSocketsEventData } from './WebSocketsEventData' -export class WebSocketsService extends AbstractService { +export class WebSocketsService extends AbstractService { private webSocket?: WebSocket constructor( @@ -68,13 +63,13 @@ export class WebSocketsService extends AbstractService { encrypted_message: 'encrypted_message', created_at_timestamp: 2, updated_at_timestamp: 2, + replaceability_identifier: null, }, { uuid: 'misc-message', @@ -98,6 +99,7 @@ describe('AsymmetricMessageService', () => { encrypted_message: 'encrypted_message', created_at_timestamp: 1, updated_at_timestamp: 1, + replaceability_identifier: null, }, ] @@ -135,6 +137,7 @@ describe('AsymmetricMessageService', () => { encrypted_message: 'encrypted_message', created_at_timestamp: 2, updated_at_timestamp: 2, + replaceability_identifier: null, } const decryptedMessagePayload: AsymmetricMessageTrustedContactShare = { @@ -168,6 +171,7 @@ describe('AsymmetricMessageService', () => { encrypted_message: 'encrypted_message', created_at_timestamp: 2, updated_at_timestamp: 2, + replaceability_identifier: null, }, { uuid: 'older-message', @@ -176,6 +180,7 @@ describe('AsymmetricMessageService', () => { encrypted_message: 'encrypted_message', created_at_timestamp: 1, updated_at_timestamp: 1, + replaceability_identifier: null, }, ] @@ -202,6 +207,7 @@ describe('AsymmetricMessageService', () => { encrypted_message: 'encrypted_message', created_at_timestamp: 2, updated_at_timestamp: 2, + replaceability_identifier: null, } const decryptedMessagePayload: AsymmetricMessageTrustedContactShare = { @@ -230,6 +236,7 @@ describe('AsymmetricMessageService', () => { encrypted_message: 'encrypted_message', created_at_timestamp: 2, updated_at_timestamp: 2, + replaceability_identifier: null, } const decryptedMessagePayload: AsymmetricMessageSenderKeypairChanged = { @@ -259,6 +266,7 @@ describe('AsymmetricMessageService', () => { encrypted_message: 'encrypted_message', created_at_timestamp: 2, updated_at_timestamp: 2, + replaceability_identifier: null, } const decryptedMessagePayload: AsymmetricMessageSharedVaultRootKeyChanged = { @@ -287,6 +295,7 @@ describe('AsymmetricMessageService', () => { encrypted_message: 'encrypted_message', created_at_timestamp: 2, updated_at_timestamp: 2, + replaceability_identifier: null, } const decryptedMessagePayload: AsymmetricMessageSharedVaultMetadataChanged = { @@ -317,6 +326,7 @@ describe('AsymmetricMessageService', () => { encrypted_message: 'encrypted_message', created_at_timestamp: 2, updated_at_timestamp: 2, + replaceability_identifier: null, } const decryptedMessagePayload: AsymmetricMessageSharedVaultInvite = { @@ -343,6 +353,7 @@ describe('AsymmetricMessageService', () => { encrypted_message: 'encrypted_message', created_at_timestamp: 2, updated_at_timestamp: 2, + replaceability_identifier: null, } const decryptedMessagePayload: AsymmetricMessageTrustedContactShare = { diff --git a/packages/services/src/Domain/AsymmetricMessage/AsymmetricMessageService.ts b/packages/services/src/Domain/AsymmetricMessage/AsymmetricMessageService.ts index bb55da5af..7419bcc37 100644 --- a/packages/services/src/Domain/AsymmetricMessage/AsymmetricMessageService.ts +++ b/packages/services/src/Domain/AsymmetricMessage/AsymmetricMessageService.ts @@ -1,14 +1,6 @@ -import { GetKeyPairs } from './../Encryption/UseCase/GetKeyPairs' -import { SyncServiceInterface } from './../Sync/SyncServiceInterface' -import { SessionsClientInterface } from './../Session/SessionsClientInterface' -import { MutatorClientInterface } from './../Mutator/MutatorClientInterface' +import { MessageSentToUserEvent } from '@standardnotes/domain-events' import { AsymmetricMessageServerHash } from '@standardnotes/responses' -import { SyncEvent, SyncEventReceivedAsymmetricMessagesData } from '../Event/SyncEvent' -import { InternalEventBusInterface } from '../Internal/InternalEventBusInterface' -import { InternalEventHandlerInterface } from '../Internal/InternalEventHandlerInterface' -import { InternalEventInterface } from '../Internal/InternalEventInterface' -import { AbstractService } from '../Service/AbstractService' -import { GetTrustedPayload } from './UseCase/GetTrustedPayload' +import { AsymmetricMessageServer } from '@standardnotes/api' import { AsymmetricMessageSharedVaultRootKeyChanged, AsymmetricMessagePayloadType, @@ -21,8 +13,19 @@ import { PayloadEmitSource, VaultListingInterface, } from '@standardnotes/models' +import { Result } from '@standardnotes/domain-core' + +import { GetKeyPairs } from './../Encryption/UseCase/GetKeyPairs' +import { SyncServiceInterface } from './../Sync/SyncServiceInterface' +import { SessionsClientInterface } from './../Session/SessionsClientInterface' +import { MutatorClientInterface } from './../Mutator/MutatorClientInterface' +import { SyncEvent, SyncEventReceivedAsymmetricMessagesData } from '../Event/SyncEvent' +import { InternalEventBusInterface } from '../Internal/InternalEventBusInterface' +import { InternalEventHandlerInterface } from '../Internal/InternalEventHandlerInterface' +import { InternalEventInterface } from '../Internal/InternalEventInterface' +import { AbstractService } from '../Service/AbstractService' +import { GetTrustedPayload } from './UseCase/GetTrustedPayload' import { HandleRootKeyChangedMessage } from './UseCase/HandleRootKeyChangedMessage' -import { AsymmetricMessageServer } from '@standardnotes/api' import { GetOutboundMessages } from './UseCase/GetOutboundMessages' import { GetInboundMessages } from './UseCase/GetInboundMessages' import { GetVault } from '../Vault/UseCase/GetVault' @@ -32,7 +35,7 @@ import { FindContact } from '../Contacts/UseCase/FindContact' import { CreateOrEditContact } from '../Contacts/UseCase/CreateOrEditContact' import { ReplaceContactData } from '../Contacts/UseCase/ReplaceContactData' import { EncryptionProviderInterface } from '../Encryption/EncryptionProviderInterface' -import { Result } from '@standardnotes/domain-core' +import { WebSocketsServiceEvent } from '../Api/WebSocketsServiceEvent' export class AsymmetricMessageService extends AbstractService @@ -82,6 +85,9 @@ export class AsymmetricMessageService case SyncEvent.ReceivedAsymmetricMessages: void this.handleRemoteReceivedAsymmetricMessages(event.payload as SyncEventReceivedAsymmetricMessagesData) break + case WebSocketsServiceEvent.MessageSentToUser: + void this.handleRemoteReceivedAsymmetricMessages([(event as MessageSentToUserEvent).payload.message]) + break } } diff --git a/packages/services/src/Domain/AsymmetricMessage/UseCase/ResendMessage.ts b/packages/services/src/Domain/AsymmetricMessage/UseCase/ResendMessage.ts index 556322681..348352d5e 100644 --- a/packages/services/src/Domain/AsymmetricMessage/UseCase/ResendMessage.ts +++ b/packages/services/src/Domain/AsymmetricMessage/UseCase/ResendMessage.ts @@ -37,7 +37,7 @@ export class ResendMessage implements UseCaseInterface { const sendMessageResult = await this.sendMessage.execute({ recipientUuid: params.recipient.contactUuid, encryptedMessage: encryptedMessage.getValue(), - replaceabilityIdentifier: params.rawMessage.replaceabilityIdentifier, + replaceabilityIdentifier: params.rawMessage.replaceability_identifier || undefined, }) return sendMessageResult diff --git a/packages/services/src/Domain/index.ts b/packages/services/src/Domain/index.ts index ad5c76674..35d65d138 100644 --- a/packages/services/src/Domain/index.ts +++ b/packages/services/src/Domain/index.ts @@ -4,7 +4,6 @@ export * from './Api/ApiServiceEventData' export * from './Api/LegacyApiServiceInterface' export * from './Api/MetaReceivedData' export * from './Api/SessionRefreshedData' -export * from './Api/WebSocketsEventData' export * from './Api/WebsocketsService' export * from './Api/WebSocketsServiceEvent' export * from './Application/AppGroupManagedApplication' diff --git a/packages/snjs/mocha/history.test.js b/packages/snjs/mocha/history.test.js index a684e2f39..7161055c9 100644 --- a/packages/snjs/mocha/history.test.js +++ b/packages/snjs/mocha/history.test.js @@ -267,6 +267,7 @@ describe('history manager', () => { it('should save initial revisions on server', async () => { const item = await Factory.createSyncedNote(application) + expect(item).to.be.ok await Factory.sleep(Factory.ServerRevisionCreationDelay) diff --git a/packages/snjs/mocha/lib/factory.js b/packages/snjs/mocha/lib/factory.js index d8557a9cb..5d4e919fd 100644 --- a/packages/snjs/mocha/lib/factory.js +++ b/packages/snjs/mocha/lib/factory.js @@ -288,7 +288,7 @@ export async function storagePayloadCount(application) { * Controlled via docker/syncing-server-js.env */ export const ServerRevisionFrequency = 2.1 -export const ServerRevisionCreationDelay = 1.0 +export const ServerRevisionCreationDelay = 1.5 export function yesterday() { return new Date(new Date().setDate(new Date().getDate() - 1)) diff --git a/packages/snjs/package.json b/packages/snjs/package.json index f998fcc2d..1ce5499f6 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.25.0", - "@standardnotes/domain-events": "^2.120.0", + "@standardnotes/domain-events": "^2.121.0", "@standardnotes/encryption": "workspace:*", "@standardnotes/features": "workspace:*", "@standardnotes/files": "workspace:*", diff --git a/yarn.lock b/yarn.lock index 3708368fb..f7d5f53e6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4349,13 +4349,13 @@ __metadata: languageName: node linkType: hard -"@standardnotes/domain-events@npm:^2.120.0": - version: 2.120.0 - resolution: "@standardnotes/domain-events@npm:2.120.0" +"@standardnotes/domain-events@npm:^2.121.0": + version: 2.121.0 + resolution: "@standardnotes/domain-events@npm:2.121.0" dependencies: "@standardnotes/predicates": 1.6.9 "@standardnotes/security": 1.12.0 - checksum: bcd6caf10bc050199db4d0fb13605d43773418c1420efea583381ae6cd33a1a365451a61f3d8d6e08d19a52005e5d67ad2b4c8f3b8f951269b1a2a4bc0ac33cf + checksum: 49d4a834212f24b4469487ce6126d554e50145dee665326e2fc0536a1890febbca4e8c07e37666bfced9d5bfd36d175edfeb1483876326a4c964805993dba7ec languageName: node linkType: hard @@ -4829,7 +4829,7 @@ __metadata: "@standardnotes/api": "workspace:*" "@standardnotes/common": ^1.50.0 "@standardnotes/domain-core": ^1.25.0 - "@standardnotes/domain-events": ^2.120.0 + "@standardnotes/domain-events": ^2.121.0 "@standardnotes/encryption": "workspace:*" "@standardnotes/features": "workspace:*" "@standardnotes/files": "workspace:*"