@wireapp/core 46.46.6-beta.14.f6fd03fe6 → 46.46.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/Account.d.ts +156 -51
- package/lib/Account.d.ts.map +1 -1
- package/lib/Account.js +503 -127
- package/lib/Account.test.js +158 -147
- package/lib/broadcast/AvailabilityType.d.ts +1 -1
- package/lib/broadcast/AvailabilityType.d.ts.map +1 -1
- package/lib/broadcast/BroadcastService.d.ts +1 -1
- package/lib/broadcast/BroadcastService.d.ts.map +1 -1
- package/lib/broadcast/BroadcastService.js +1 -1
- package/lib/client/ClientService.d.ts +4 -3
- package/lib/client/ClientService.d.ts.map +1 -1
- package/lib/client/ClientService.js +19 -5
- package/lib/conversation/AbortReason.d.ts +1 -1
- package/lib/conversation/AbortReason.d.ts.map +1 -1
- package/lib/conversation/AssetService/AssetService.d.ts +12 -30
- package/lib/conversation/AssetService/AssetService.d.ts.map +1 -1
- package/lib/conversation/AssetService/AssetService.js +1 -10
- package/lib/conversation/AssetService/AssetService.test.js +8 -3
- package/lib/conversation/ClientActionType.d.ts +1 -1
- package/lib/conversation/ClientActionType.d.ts.map +1 -1
- package/lib/conversation/ClientActionType.js +1 -1
- package/lib/conversation/ConversationService/ConversationService.d.ts +98 -14
- package/lib/conversation/ConversationService/ConversationService.d.ts.map +1 -1
- package/lib/conversation/ConversationService/ConversationService.js +314 -101
- package/lib/conversation/ConversationService/ConversationService.test.js +441 -47
- package/lib/conversation/ConversationService/ConversationService.types.d.ts +5 -4
- package/lib/conversation/ConversationService/ConversationService.types.d.ts.map +1 -1
- package/lib/conversation/ConversationService/Utility/getConversationQualifiedMembers.d.ts.map +1 -1
- package/lib/conversation/ConversationService/Utility/getConversationQualifiedMembers.js +6 -3
- package/lib/conversation/SubconversationService/SubconversationService.d.ts.map +1 -1
- package/lib/conversation/SubconversationService/SubconversationService.js +158 -11
- package/lib/conversation/SubconversationService/SubconversationService.test.js +8 -2
- package/lib/conversation/content/AssetContent.d.ts +1 -1
- package/lib/conversation/content/AssetContent.d.ts.map +1 -1
- package/lib/conversation/content/ButtonActionConfirmationContent.d.ts +1 -1
- package/lib/conversation/content/ButtonActionConfirmationContent.d.ts.map +1 -1
- package/lib/conversation/content/ButtonActionContent.d.ts +1 -1
- package/lib/conversation/content/ButtonActionContent.d.ts.map +1 -1
- package/lib/conversation/content/ClearedContent.d.ts +1 -1
- package/lib/conversation/content/ClearedContent.d.ts.map +1 -1
- package/lib/conversation/content/ClientActionContent.d.ts +1 -1
- package/lib/conversation/content/ClientActionContent.d.ts.map +1 -1
- package/lib/conversation/content/CompositeContent.d.ts +1 -1
- package/lib/conversation/content/CompositeContent.d.ts.map +1 -1
- package/lib/conversation/content/ConfirmationContent.d.ts +1 -1
- package/lib/conversation/content/ConfirmationContent.d.ts.map +1 -1
- package/lib/conversation/content/DeletedContent.d.ts +1 -1
- package/lib/conversation/content/DeletedContent.d.ts.map +1 -1
- package/lib/conversation/content/HiddenContent.d.ts +1 -1
- package/lib/conversation/content/HiddenContent.d.ts.map +1 -1
- package/lib/conversation/content/KnockContent.d.ts +1 -1
- package/lib/conversation/content/KnockContent.d.ts.map +1 -1
- package/lib/conversation/content/LinkPreviewContent.d.ts +1 -1
- package/lib/conversation/content/LinkPreviewContent.d.ts.map +1 -1
- package/lib/conversation/content/MentionContent.d.ts +1 -1
- package/lib/conversation/content/MentionContent.d.ts.map +1 -1
- package/lib/conversation/content/MultipartContent.d.ts +1 -1
- package/lib/conversation/content/MultipartContent.d.ts.map +1 -1
- package/lib/conversation/content/QuoteContent.d.ts +1 -1
- package/lib/conversation/content/QuoteContent.d.ts.map +1 -1
- package/lib/conversation/content/TweetContent.d.ts +1 -1
- package/lib/conversation/content/TweetContent.d.ts.map +1 -1
- package/lib/conversation/content/index.d.ts +1 -1
- package/lib/conversation/content/index.d.ts.map +1 -1
- package/lib/conversation/content/index.js +1 -1
- package/lib/conversation/message/MessageBuilder.d.ts +1 -1
- package/lib/conversation/message/MessageBuilder.d.ts.map +1 -1
- package/lib/conversation/message/MessageBuilder.js +1 -1
- package/lib/conversation/message/MessageService.d.ts.map +1 -1
- package/lib/conversation/message/MessageService.js +1 -1
- package/lib/conversation/message/MessageService.test.js +7 -1
- package/lib/conversation/message/MessageToProtoMapper.d.ts +1 -1
- package/lib/conversation/message/MessageToProtoMapper.d.ts.map +1 -1
- package/lib/conversation/message/MessageToProtoMapper.js +1 -1
- package/lib/conversation/message/messageSender.js +2 -2
- package/lib/cryptography/AssetCryptography/EncryptedAsset.d.ts +2 -2
- package/lib/cryptography/AssetCryptography/EncryptedAsset.d.ts.map +1 -1
- package/lib/messagingProtocols/common.types.d.ts +9 -0
- package/lib/messagingProtocols/common.types.d.ts.map +1 -1
- package/lib/messagingProtocols/mls/E2EIdentityService/E2EIService.types.d.ts +2 -2
- package/lib/messagingProtocols/mls/E2EIdentityService/E2EIService.types.d.ts.map +1 -1
- package/lib/messagingProtocols/mls/E2EIdentityService/E2EIService.types.js +2 -1
- package/lib/messagingProtocols/mls/E2EIdentityService/E2EIServiceExternal.d.ts +1 -1
- package/lib/messagingProtocols/mls/E2EIdentityService/E2EIServiceExternal.d.ts.map +1 -1
- package/lib/messagingProtocols/mls/E2EIdentityService/E2EIServiceExternal.js +13 -11
- package/lib/messagingProtocols/mls/E2EIdentityService/E2EIServiceExternal.test.js +21 -16
- package/lib/messagingProtocols/mls/E2EIdentityService/E2EIServiceInternal.d.ts +9 -3
- package/lib/messagingProtocols/mls/E2EIdentityService/E2EIServiceInternal.d.ts.map +1 -1
- package/lib/messagingProtocols/mls/E2EIdentityService/E2EIServiceInternal.js +31 -12
- package/lib/messagingProtocols/mls/E2EIdentityService/Helper/index.d.ts +6 -0
- package/lib/messagingProtocols/mls/E2EIdentityService/Helper/index.d.ts.map +1 -1
- package/lib/messagingProtocols/mls/E2EIdentityService/Helper/index.js +19 -1
- package/lib/messagingProtocols/mls/EventHandler/events/messageAdd/IncomingProposalsQueue/IncomingProposalsQueue.d.ts +7 -0
- package/lib/messagingProtocols/mls/EventHandler/events/messageAdd/IncomingProposalsQueue/IncomingProposalsQueue.d.ts.map +1 -0
- package/lib/messagingProtocols/mls/EventHandler/events/messageAdd/IncomingProposalsQueue/IncomingProposalsQueue.js +48 -0
- package/lib/messagingProtocols/mls/EventHandler/events/messageAdd/IncomingProposalsQueue/index.d.ts +2 -0
- package/lib/messagingProtocols/mls/EventHandler/events/messageAdd/{IncomingMessagesQueue → IncomingProposalsQueue}/index.d.ts.map +1 -1
- package/lib/messagingProtocols/mls/EventHandler/events/messageAdd/{IncomingMessagesQueue → IncomingProposalsQueue}/index.js +1 -1
- package/lib/messagingProtocols/mls/EventHandler/events/messageAdd/index.d.ts +0 -1
- package/lib/messagingProtocols/mls/EventHandler/events/messageAdd/index.d.ts.map +1 -1
- package/lib/messagingProtocols/mls/EventHandler/events/messageAdd/index.js +0 -1
- package/lib/messagingProtocols/mls/EventHandler/events/messageAdd/messageAdd.d.ts.map +1 -1
- package/lib/messagingProtocols/mls/EventHandler/events/messageAdd/messageAdd.js +23 -14
- package/lib/messagingProtocols/mls/EventHandler/events/welcomeMessage/welcomeMessage.d.ts.map +1 -1
- package/lib/messagingProtocols/mls/EventHandler/events/welcomeMessage/welcomeMessage.js +5 -2
- package/lib/messagingProtocols/mls/EventHandler/events/welcomeMessage/welcomeMessage.test.js +13 -3
- package/lib/messagingProtocols/mls/MLSService/CoreCryptoMLSError.d.ts +38 -2
- package/lib/messagingProtocols/mls/MLSService/CoreCryptoMLSError.d.ts.map +1 -1
- package/lib/messagingProtocols/mls/MLSService/CoreCryptoMLSError.js +41 -6
- package/lib/messagingProtocols/mls/MLSService/CoreCryptoMLSError.test.d.ts +2 -0
- package/lib/messagingProtocols/mls/MLSService/CoreCryptoMLSError.test.d.ts.map +1 -0
- package/lib/messagingProtocols/mls/MLSService/CoreCryptoMLSError.test.js +124 -0
- package/lib/messagingProtocols/mls/MLSService/MLSService.d.ts +38 -34
- package/lib/messagingProtocols/mls/MLSService/MLSService.d.ts.map +1 -1
- package/lib/messagingProtocols/mls/MLSService/MLSService.js +267 -208
- package/lib/messagingProtocols/mls/MLSService/MLSService.test.js +157 -160
- package/lib/messagingProtocols/mls/MLSService/commitBundleUtil.js +3 -3
- package/lib/messagingProtocols/mls/MLSService/commitBundleUtil.test.js +5 -5
- package/lib/messagingProtocols/mls/conversationRejoinQueue.js +2 -2
- package/lib/messagingProtocols/mls/recovery/MlsErrorMapper.d.ts +78 -0
- package/lib/messagingProtocols/mls/recovery/MlsErrorMapper.d.ts.map +1 -0
- package/lib/messagingProtocols/mls/recovery/MlsErrorMapper.js +173 -0
- package/lib/messagingProtocols/mls/recovery/MlsErrorMapper.test.d.ts +2 -0
- package/lib/messagingProtocols/mls/recovery/MlsErrorMapper.test.d.ts.map +1 -0
- package/lib/messagingProtocols/mls/recovery/MlsErrorMapper.test.js +117 -0
- package/lib/messagingProtocols/mls/recovery/MlsRecoveryOrchestrator.d.ts +167 -0
- package/lib/messagingProtocols/mls/recovery/MlsRecoveryOrchestrator.d.ts.map +1 -0
- package/lib/messagingProtocols/mls/recovery/MlsRecoveryOrchestrator.js +317 -0
- package/lib/messagingProtocols/mls/recovery/MlsRecoveryOrchestrator.test.d.ts +2 -0
- package/lib/messagingProtocols/mls/recovery/MlsRecoveryOrchestrator.test.d.ts.map +1 -0
- package/lib/messagingProtocols/mls/recovery/MlsRecoveryOrchestrator.test.js +248 -0
- package/lib/messagingProtocols/mls/recovery/index.d.ts +5 -0
- package/lib/messagingProtocols/mls/recovery/index.d.ts.map +1 -0
- package/lib/messagingProtocols/mls/recovery/index.js +28 -0
- package/lib/messagingProtocols/mls/types.d.ts +0 -8
- package/lib/messagingProtocols/mls/types.d.ts.map +1 -1
- package/lib/messagingProtocols/proteus/EventHandler/events/otrMessageAdd/otrMessageAdd.d.ts.map +1 -1
- package/lib/messagingProtocols/proteus/EventHandler/events/otrMessageAdd/otrMessageAdd.js +7 -1
- package/lib/messagingProtocols/proteus/ProteusService/CryptoClient/CoreCryptoWrapper/CoreCryptoWrapper.d.ts +8 -15
- package/lib/messagingProtocols/proteus/ProteusService/CryptoClient/CoreCryptoWrapper/CoreCryptoWrapper.d.ts.map +1 -1
- package/lib/messagingProtocols/proteus/ProteusService/CryptoClient/CoreCryptoWrapper/CoreCryptoWrapper.js +97 -62
- package/lib/messagingProtocols/proteus/ProteusService/CryptoClient/CryptoClient.types.d.ts +0 -6
- package/lib/messagingProtocols/proteus/ProteusService/CryptoClient/CryptoClient.types.d.ts.map +1 -1
- package/lib/messagingProtocols/proteus/ProteusService/DecryptionErrorGenerator/DecryptionErrorGenerator.d.ts +1 -6
- package/lib/messagingProtocols/proteus/ProteusService/DecryptionErrorGenerator/DecryptionErrorGenerator.d.ts.map +1 -1
- package/lib/messagingProtocols/proteus/ProteusService/DecryptionErrorGenerator/DecryptionErrorGenerator.js +19 -22
- package/lib/messagingProtocols/proteus/ProteusService/ProteusService.d.ts +5 -3
- package/lib/messagingProtocols/proteus/ProteusService/ProteusService.d.ts.map +1 -1
- package/lib/messagingProtocols/proteus/ProteusService/ProteusService.js +11 -24
- package/lib/messagingProtocols/proteus/ProteusService/ProteusService.mocks.d.ts +1 -0
- package/lib/messagingProtocols/proteus/ProteusService/ProteusService.mocks.d.ts.map +1 -1
- package/lib/messagingProtocols/proteus/ProteusService/ProteusService.mocks.js +11 -2
- package/lib/messagingProtocols/proteus/ProteusService/ProteusService.test.js +13 -9
- package/lib/messagingProtocols/proteus/ProteusService/ProteusService.types.d.ts +3 -2
- package/lib/messagingProtocols/proteus/ProteusService/ProteusService.types.d.ts.map +1 -1
- package/lib/messagingProtocols/proteus/ProteusService/WithMockedGenerics.test.js +11 -4
- package/lib/messagingProtocols/proteus/ProteusService/cryptoMigrationStateStore.d.ts +0 -4
- package/lib/messagingProtocols/proteus/ProteusService/cryptoMigrationStateStore.d.ts.map +1 -1
- package/lib/messagingProtocols/proteus/ProteusService/cryptoMigrationStateStore.js +0 -5
- package/lib/messagingProtocols/proteus/ProteusService/identityClearer.d.ts +2 -1
- package/lib/messagingProtocols/proteus/ProteusService/identityClearer.d.ts.map +1 -1
- package/lib/messagingProtocols/proteus/ProteusService/identityClearer.js +8 -2
- package/lib/messagingProtocols/proteus/Utility/SessionHandler/SessionHandler.test.js +4 -0
- package/lib/messagingProtocols/proteus/Utility/getGenericMessageParams.d.ts +1 -1
- package/lib/messagingProtocols/proteus/Utility/getGenericMessageParams.d.ts.map +1 -1
- package/lib/messagingProtocols/proteus/Utility/getGenericMessageParams.js +1 -1
- package/lib/notification/NotificationService.d.ts +20 -6
- package/lib/notification/NotificationService.d.ts.map +1 -1
- package/lib/notification/NotificationService.js +23 -14
- package/lib/notification/NotificationService.test.js +8 -0
- package/lib/secretStore/secretKeyGenerator.d.ts +1 -0
- package/lib/secretStore/secretKeyGenerator.d.ts.map +1 -1
- package/lib/secretStore/secretKeyGenerator.js +3 -1
- package/lib/self/SelfService.d.ts +2 -2
- package/lib/self/SelfService.d.ts.map +1 -1
- package/lib/self/SelfService.test.js +5 -2
- package/lib/team/TeamService.d.ts +5 -2
- package/lib/team/TeamService.d.ts.map +1 -1
- package/lib/team/TeamService.js +12 -2
- package/lib/test/StoreHelper.d.ts +2 -0
- package/lib/test/StoreHelper.d.ts.map +1 -0
- package/lib/test/StoreHelper.js +27 -0
- package/lib/user/UserService.d.ts +2 -2
- package/lib/user/UserService.d.ts.map +1 -1
- package/lib/user/UserService.js +3 -3
- package/lib/util/TypePredicateUtil.d.ts.map +1 -1
- package/lib/util/TypePredicateUtil.js +2 -2
- package/package.json +3 -3
- package/lib/messagingProtocols/mls/EventHandler/events/messageAdd/IncomingMessagesQueue/IncomingMesssagesQueue.d.ts +0 -4
- package/lib/messagingProtocols/mls/EventHandler/events/messageAdd/IncomingMessagesQueue/IncomingMesssagesQueue.d.ts.map +0 -1
- package/lib/messagingProtocols/mls/EventHandler/events/messageAdd/IncomingMessagesQueue/IncomingMesssagesQueue.js +0 -69
- package/lib/messagingProtocols/mls/EventHandler/events/messageAdd/IncomingMessagesQueue/index.d.ts +0 -2
- package/lib/messagingProtocols/mls/EventHandler/events/messageAdd/messageAdd.test.d.ts +0 -2
- package/lib/messagingProtocols/mls/EventHandler/events/messageAdd/messageAdd.test.d.ts.map +0 -1
- package/lib/messagingProtocols/mls/EventHandler/events/messageAdd/messageAdd.test.js +0 -98
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { QualifiedUserClients, ConversationProtocol, MessageSendingStatus, Conversation } from '@wireapp/api-client/lib/conversation';
|
|
1
|
+
import { QualifiedUserClients, MessageSendingStatus, Conversation } from '@wireapp/api-client/lib/conversation';
|
|
3
2
|
import { ConversationEvent, ConversationMemberJoinEvent } from '@wireapp/api-client/lib/event';
|
|
3
|
+
import { CONVERSATION_PROTOCOL } from '@wireapp/api-client/lib/team';
|
|
4
4
|
import { QualifiedId } from '@wireapp/api-client/lib/user';
|
|
5
|
+
import { GenericMessage } from '@wireapp/protocol-messaging';
|
|
5
6
|
import { MessageSendingState } from '..';
|
|
6
7
|
export declare enum MessageTargetMode {
|
|
7
8
|
NONE = 0,
|
|
@@ -48,7 +49,7 @@ export interface MessageSendingCallbacks {
|
|
|
48
49
|
* The protocol to use to send the message (MLS or Proteus)
|
|
49
50
|
*/
|
|
50
51
|
export type ProtocolParam = {
|
|
51
|
-
protocol:
|
|
52
|
+
protocol: CONVERSATION_PROTOCOL;
|
|
52
53
|
};
|
|
53
54
|
/**
|
|
54
55
|
* The message to send to the conversation
|
|
@@ -62,7 +63,7 @@ export type SendMlsMessageParams = SendCommonParams & {
|
|
|
62
63
|
* The groupId of the conversation to send the message to (Needed only for MLS)
|
|
63
64
|
*/
|
|
64
65
|
groupId: string;
|
|
65
|
-
protocol:
|
|
66
|
+
protocol: CONVERSATION_PROTOCOL.MLS;
|
|
66
67
|
};
|
|
67
68
|
export type KeyPackageClaimUser = QualifiedId & {
|
|
68
69
|
skipOwnClientId?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConversationService.types.d.ts","sourceRoot":"","sources":["../../../src/conversation/ConversationService/ConversationService.types.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"ConversationService.types.d.ts","sourceRoot":"","sources":["../../../src/conversation/ConversationService/ConversationService.types.ts"],"names":[],"mappings":"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"}
|
package/lib/conversation/ConversationService/Utility/getConversationQualifiedMembers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getConversationQualifiedMembers.d.ts","sourceRoot":"","sources":["../../../../src/conversation/ConversationService/Utility/getConversationQualifiedMembers.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,SAAS,EAAC,MAAM,mCAAmC,CAAC;AAC5D,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAC;AAEzD,UAAU,MAAM;IACd,SAAS,EAAE,SAAS,CAAC;IACrB,cAAc,EAAE,WAAW,CAAC;CAC7B;
|
|
1
|
+
{"version":3,"file":"getConversationQualifiedMembers.d.ts","sourceRoot":"","sources":["../../../../src/conversation/ConversationService/Utility/getConversationQualifiedMembers.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,SAAS,EAAC,MAAM,mCAAmC,CAAC;AAC5D,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAC;AAEzD,UAAU,MAAM;IACd,SAAS,EAAE,SAAS,CAAC;IACrB,cAAc,EAAE,WAAW,CAAC;CAC7B;AAED,QAAA,MAAM,+BAA+B,kCAAuC,MAAM,KAAG,OAAO,CAAC,WAAW,EAAE,CAgBzG,CAAC;AAEF,OAAO,EAAC,+BAA+B,EAAC,CAAC"}
|
|
@@ -26,9 +26,12 @@ const getConversationQualifiedMembers = async ({ apiClient, conversationId }) =>
|
|
|
26
26
|
* yourself in the list of users if you want to sync a message also to your
|
|
27
27
|
* other clients.
|
|
28
28
|
*/
|
|
29
|
-
|
|
29
|
+
const filteredConversations = conversation.members.others
|
|
30
30
|
.filter(member => !!member.qualified_id)
|
|
31
|
-
.map(member => member.qualified_id)
|
|
32
|
-
|
|
31
|
+
.map(member => member.qualified_id);
|
|
32
|
+
if (conversation.members.self?.qualified_id) {
|
|
33
|
+
filteredConversations.push(conversation.members.self.qualified_id);
|
|
34
|
+
}
|
|
35
|
+
return filteredConversations;
|
|
33
36
|
};
|
|
34
37
|
exports.getConversationQualifiedMembers = getConversationQualifiedMembers;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubconversationService.d.ts","sourceRoot":"","sources":["../../../src/conversation/SubconversationService/SubconversationService.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,kBAAkB,EAAkB,MAAM,sCAAsC,CAAC;AACzF,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAC;AAGzD,OAAO,EAAC,SAAS,EAAC,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAa,iBAAiB,EAAC,MAAM,kBAAkB,CAAC;AAI/D,OAAO,EAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"SubconversationService.d.ts","sourceRoot":"","sources":["../../../src/conversation/SubconversationService/SubconversationService.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,7 @@ const conversation_1 = require("@wireapp/api-client/lib/conversation");
|
|
|
23
23
|
const TimeUtil_1 = require("@wireapp/commons/lib/util/TimeUtil");
|
|
24
24
|
const commons_1 = require("@wireapp/commons");
|
|
25
25
|
const subconversationUtil_1 = require("./subconversationUtil");
|
|
26
|
+
const mls_1 = require("../../messagingProtocols/mls");
|
|
26
27
|
const fullyQualifiedClientIdUtils_1 = require("../../util/fullyQualifiedClientIdUtils");
|
|
27
28
|
const MLS_CONVERSATION_KEY_LENGTH = 32;
|
|
28
29
|
class SubconversationService extends commons_1.TypedEventEmitter {
|
|
@@ -51,7 +52,10 @@ class SubconversationService extends commons_1.TypedEventEmitter {
|
|
|
51
52
|
*/
|
|
52
53
|
async joinConferenceSubconversation(conversationId, groupId, shouldRetry = true) {
|
|
53
54
|
try {
|
|
55
|
+
this.logger.info('Joining conference subconversation', { conversationId, groupId });
|
|
54
56
|
const { group_id: subconversationGroupId, epoch: subconversationEpoch, epoch_timestamp: subconversationEpochTimestamp, subconv_id: subconversationId, } = await this.getConferenceSubconversation(conversationId);
|
|
57
|
+
// We store the mapping between the subconversation and the parent conversation
|
|
58
|
+
await this.saveSubconversationGroupId(conversationId, subconversationId, subconversationGroupId);
|
|
55
59
|
if (subconversationEpoch === 0) {
|
|
56
60
|
const doesConversationExistsLocally = await this.mlsService.conversationExists(subconversationGroupId);
|
|
57
61
|
if (doesConversationExistsLocally) {
|
|
@@ -75,11 +79,10 @@ class SubconversationService extends commons_1.TypedEventEmitter {
|
|
|
75
79
|
await this.joinSubconversationByExternalCommit(conversationId, conversation_1.SUBCONVERSATION_ID.CONFERENCE);
|
|
76
80
|
}
|
|
77
81
|
const epoch = Number(await this.mlsService.getEpoch(subconversationGroupId));
|
|
78
|
-
// We store the mapping between the subconversation and the parent conversation
|
|
79
|
-
await this.saveSubconversationGroupId(conversationId, subconversationId, subconversationGroupId);
|
|
80
82
|
return { groupId: subconversationGroupId, epoch };
|
|
81
83
|
}
|
|
82
84
|
catch (error) {
|
|
85
|
+
this.logger.error('Failed to join conference subconversation', { conversationId, groupId, error, shouldRetry });
|
|
83
86
|
if (shouldRetry) {
|
|
84
87
|
return this.joinConferenceSubconversation(conversationId, groupId, false);
|
|
85
88
|
}
|
|
@@ -92,87 +95,159 @@ class SubconversationService extends commons_1.TypedEventEmitter {
|
|
|
92
95
|
* @param conversationId Id of the parent conversation which subconversation we want to leave
|
|
93
96
|
*/
|
|
94
97
|
async leaveConferenceSubconversation(conversationId) {
|
|
98
|
+
this.logger.info('Leaving conference subconversation', { conversationId });
|
|
95
99
|
const subconversationGroupId = await this.getSubconversationGroupId(conversationId, conversation_1.SUBCONVERSATION_ID.CONFERENCE);
|
|
96
100
|
if (!subconversationGroupId) {
|
|
101
|
+
this.logger.warn('No subconversation groupId found when leaving conference subconversation', { conversationId });
|
|
97
102
|
return;
|
|
98
103
|
}
|
|
99
104
|
const doesGroupExistLocally = await this.mlsService.conversationExists(subconversationGroupId);
|
|
100
105
|
if (!doesGroupExistLocally) {
|
|
101
106
|
// If the subconversation was known by a client but is does not exist locally, we can remove it from the store.
|
|
107
|
+
this.logger.info('Subconversation not found locally; clearing stored mapping', {
|
|
108
|
+
conversationId,
|
|
109
|
+
subconversationId: conversation_1.SUBCONVERSATION_ID.CONFERENCE,
|
|
110
|
+
subconversationGroupId,
|
|
111
|
+
});
|
|
102
112
|
return this.clearSubconversationGroupId(conversationId, conversation_1.SUBCONVERSATION_ID.CONFERENCE);
|
|
103
113
|
}
|
|
104
114
|
try {
|
|
105
115
|
await this.apiClient.api.conversation.deleteSubconversationSelf(conversationId, conversation_1.SUBCONVERSATION_ID.CONFERENCE);
|
|
106
116
|
}
|
|
107
117
|
catch (error) {
|
|
108
|
-
this.logger.error(
|
|
118
|
+
this.logger.error('Failed to leave conference subconversation', {
|
|
119
|
+
conversationId,
|
|
120
|
+
subconversationId: conversation_1.SUBCONVERSATION_ID.CONFERENCE,
|
|
121
|
+
subconversationGroupId,
|
|
122
|
+
error,
|
|
123
|
+
});
|
|
109
124
|
}
|
|
110
125
|
await this.mlsService.wipeConversation(subconversationGroupId);
|
|
111
126
|
// once we've left the subconversation, we can remove it from the store
|
|
127
|
+
this.logger.info('Clearing stored mapping after leaving conference subconversation', {
|
|
128
|
+
conversationId,
|
|
129
|
+
subconversationId: conversation_1.SUBCONVERSATION_ID.CONFERENCE,
|
|
130
|
+
subconversationGroupId,
|
|
131
|
+
});
|
|
112
132
|
await this.clearSubconversationGroupId(conversationId, conversation_1.SUBCONVERSATION_ID.CONFERENCE);
|
|
113
133
|
}
|
|
114
134
|
async leaveStaleConferenceSubconversations() {
|
|
135
|
+
this.logger.info('Leaving all stale conference subconversations');
|
|
115
136
|
const conversationIds = await this.getAllGroupIdsBySubconversationId(conversation_1.SUBCONVERSATION_ID.CONFERENCE);
|
|
116
137
|
for (const { parentConversationId } of conversationIds) {
|
|
138
|
+
this.logger.debug('Leaving stale conference subconversation for parent conversation', {
|
|
139
|
+
parentConversationId,
|
|
140
|
+
});
|
|
117
141
|
await this.leaveConferenceSubconversation(parentConversationId);
|
|
118
142
|
}
|
|
119
143
|
}
|
|
120
144
|
async getSubconversationEpochInfo(parentConversationId, parentConversationGroupId, shouldAdvanceEpoch = false) {
|
|
145
|
+
this.logger.info('Getting subconversation epoch info', {
|
|
146
|
+
parentConversationId,
|
|
147
|
+
parentConversationGroupId,
|
|
148
|
+
shouldAdvanceEpoch,
|
|
149
|
+
});
|
|
121
150
|
const subconversationGroupId = await this.getSubconversationGroupId(parentConversationId, conversation_1.SUBCONVERSATION_ID.CONFERENCE);
|
|
122
151
|
// this method should not be called if the subconversation (and its parent conversation) is not established
|
|
123
152
|
if (!subconversationGroupId) {
|
|
124
|
-
this.logger.error(
|
|
153
|
+
this.logger.error('Could not obtain epoch info for conference subconversation: missing groupId', {
|
|
154
|
+
parentConversationId,
|
|
155
|
+
});
|
|
125
156
|
return null;
|
|
126
157
|
}
|
|
127
158
|
//we don't want to react to avs callbacks when conversation was not yet established
|
|
128
159
|
const doesMLSGroupExist = await this.mlsService.conversationExists(subconversationGroupId);
|
|
129
160
|
if (!doesMLSGroupExist) {
|
|
161
|
+
this.logger.debug('Subconversation MLS group does not exist locally; skipping epoch info', {
|
|
162
|
+
parentConversationId,
|
|
163
|
+
parentConversationGroupId,
|
|
164
|
+
subconversationGroupId,
|
|
165
|
+
});
|
|
130
166
|
return null;
|
|
131
167
|
}
|
|
132
168
|
const members = await this.generateSubconversationMembers(subconversationGroupId, parentConversationGroupId);
|
|
133
169
|
if (shouldAdvanceEpoch) {
|
|
170
|
+
this.logger.info('Advancing epoch and renewing key material for subconversation', { subconversationGroupId });
|
|
134
171
|
await this.mlsService.renewKeyMaterial(subconversationGroupId);
|
|
135
172
|
}
|
|
136
173
|
const epoch = Number(await this.mlsService.getEpoch(subconversationGroupId));
|
|
137
174
|
const secretKey = await this.mlsService.exportSecretKey(subconversationGroupId, MLS_CONVERSATION_KEY_LENGTH);
|
|
175
|
+
this.logger.debug('Obtained subconversation epoch info', {
|
|
176
|
+
parentConversationId,
|
|
177
|
+
parentConversationGroupId,
|
|
178
|
+
subconversationGroupId,
|
|
179
|
+
epoch,
|
|
180
|
+
membersCount: members.length,
|
|
181
|
+
keyLength: MLS_CONVERSATION_KEY_LENGTH,
|
|
182
|
+
});
|
|
138
183
|
return { members, epoch, keyLength: MLS_CONVERSATION_KEY_LENGTH, secretKey };
|
|
139
184
|
}
|
|
140
185
|
async subscribeToEpochUpdates(parentConversationId, parentConversationGroupId, findConversationByGroupId, onEpochUpdate) {
|
|
186
|
+
this.logger.info('Subscribing to subconversation epoch updates', {
|
|
187
|
+
parentConversationId,
|
|
188
|
+
parentConversationGroupId,
|
|
189
|
+
});
|
|
141
190
|
const { epoch: initialEpoch, groupId: subconversationGroupId } = await this.joinConferenceSubconversation(parentConversationId, parentConversationGroupId);
|
|
142
191
|
const forwardNewEpoch = async ({ groupId }) => {
|
|
192
|
+
this.logger.debug('Received MLS NEW_EPOCH event', { eventGroupId: groupId, subconversationGroupId });
|
|
143
193
|
if (groupId !== subconversationGroupId) {
|
|
144
194
|
// if the epoch update did not happen in the subconversation directly, check if it happened in the parent conversation
|
|
145
195
|
const parentConversationId = findConversationByGroupId(groupId);
|
|
146
196
|
if (!parentConversationId) {
|
|
197
|
+
this.logger.debug('Ignoring NEW_EPOCH event: could not map to parent conversation');
|
|
147
198
|
return;
|
|
148
199
|
}
|
|
149
200
|
const foundSubconversationGroupId = await this.getSubconversationGroupId(parentConversationId, conversation_1.SUBCONVERSATION_ID.CONFERENCE);
|
|
150
201
|
// if the conference subconversation of parent conversation is not known, ignore the epoch update
|
|
151
202
|
if (foundSubconversationGroupId !== subconversationGroupId) {
|
|
203
|
+
this.logger.debug('Ignoring NEW_EPOCH event: not related to subscribed subconversation', {
|
|
204
|
+
eventGroupId: groupId,
|
|
205
|
+
foundSubconversationGroupId,
|
|
206
|
+
expectedSubconversationGroupId: subconversationGroupId,
|
|
207
|
+
});
|
|
152
208
|
return;
|
|
153
209
|
}
|
|
154
210
|
}
|
|
155
211
|
const subconversationEpochInfo = await this.getSubconversationEpochInfo(parentConversationId, parentConversationGroupId);
|
|
156
212
|
if (!subconversationEpochInfo) {
|
|
213
|
+
this.logger.debug('No subconversation epoch info available; skipping callback', {
|
|
214
|
+
parentConversationId,
|
|
215
|
+
parentConversationGroupId,
|
|
216
|
+
});
|
|
157
217
|
return;
|
|
158
218
|
}
|
|
159
219
|
const newSubconversationEpoch = Number(await this.mlsService.getEpoch(subconversationGroupId));
|
|
220
|
+
this.logger.info('Forwarding epoch update to subscriber', {
|
|
221
|
+
subconversationGroupId,
|
|
222
|
+
epoch: newSubconversationEpoch,
|
|
223
|
+
});
|
|
160
224
|
return onEpochUpdate({
|
|
161
225
|
...subconversationEpochInfo,
|
|
162
226
|
epoch: newSubconversationEpoch,
|
|
163
227
|
});
|
|
164
228
|
};
|
|
165
|
-
this.mlsService.on(
|
|
229
|
+
this.mlsService.on(mls_1.MLSServiceEvents.NEW_EPOCH, forwardNewEpoch);
|
|
166
230
|
await forwardNewEpoch({ groupId: subconversationGroupId, epoch: initialEpoch });
|
|
167
|
-
|
|
231
|
+
this.logger.info('Subscribed to MLS NEW_EPOCH events for subconversation', { subconversationGroupId });
|
|
232
|
+
return () => this.mlsService.off(mls_1.MLSServiceEvents.NEW_EPOCH, forwardNewEpoch);
|
|
168
233
|
}
|
|
169
234
|
async removeClientFromConferenceSubconversation(conversationId, clientToRemove) {
|
|
235
|
+
this.logger.info('Removing client from conference subconversation', {
|
|
236
|
+
conversationId,
|
|
237
|
+
user: clientToRemove.user,
|
|
238
|
+
clientId: clientToRemove.clientId,
|
|
239
|
+
});
|
|
170
240
|
const subconversationGroupId = await this.getSubconversationGroupId(conversationId, conversation_1.SUBCONVERSATION_ID.CONFERENCE);
|
|
171
241
|
if (!subconversationGroupId) {
|
|
242
|
+
this.logger.warn('Cannot remove client: subconversation groupId missing', { conversationId });
|
|
172
243
|
return;
|
|
173
244
|
}
|
|
174
245
|
const doesMLSGroupExist = await this.mlsService.conversationExists(subconversationGroupId);
|
|
175
246
|
if (!doesMLSGroupExist) {
|
|
247
|
+
this.logger.debug('Cannot remove client: subconversation MLS group does not exist locally', {
|
|
248
|
+
conversationId,
|
|
249
|
+
subconversationGroupId,
|
|
250
|
+
});
|
|
176
251
|
return;
|
|
177
252
|
}
|
|
178
253
|
const { user: { id: userId, domain }, clientId, } = clientToRemove;
|
|
@@ -180,23 +255,70 @@ class SubconversationService extends commons_1.TypedEventEmitter {
|
|
|
180
255
|
const subconversationMembers = await this.mlsService.getClientIds(subconversationGroupId);
|
|
181
256
|
const isSubconversationMember = subconversationMembers.some(({ userId, clientId, domain }) => (0, fullyQualifiedClientIdUtils_1.constructFullyQualifiedClientId)(userId, clientId, domain) === clientToRemoveQualifiedId);
|
|
182
257
|
if (!isSubconversationMember) {
|
|
258
|
+
this.logger.info('Client is not a member of the subconversation; nothing to remove', {
|
|
259
|
+
conversationId,
|
|
260
|
+
subconversationGroupId,
|
|
261
|
+
clientToRemoveQualifiedId,
|
|
262
|
+
});
|
|
183
263
|
return;
|
|
184
264
|
}
|
|
185
|
-
|
|
265
|
+
this.logger.info('Removing client from subconversation', {
|
|
266
|
+
subconversationGroupId,
|
|
267
|
+
clientToRemoveQualifiedId,
|
|
268
|
+
});
|
|
269
|
+
try {
|
|
270
|
+
await this.mlsService.removeClientsFromConversation(subconversationGroupId, [clientToRemoveQualifiedId]);
|
|
271
|
+
}
|
|
272
|
+
catch (error) {
|
|
273
|
+
this.logger.error('Failed to remove client from subconversation', {
|
|
274
|
+
subconversationGroupId,
|
|
275
|
+
clientToRemoveQualifiedId,
|
|
276
|
+
error,
|
|
277
|
+
});
|
|
278
|
+
}
|
|
186
279
|
}
|
|
187
280
|
async joinSubconversationByExternalCommit(conversationId, subconversation) {
|
|
188
|
-
|
|
281
|
+
try {
|
|
282
|
+
this.logger.info('Joining subconversation by external commit', { conversationId, subconversation });
|
|
283
|
+
await this.mlsService.joinByExternalCommit(() => this.apiClient.api.conversation.getSubconversationGroupInfo(conversationId, subconversation));
|
|
284
|
+
}
|
|
285
|
+
catch (error) {
|
|
286
|
+
this.logger.error('Failed to join subconversation by external commit', {
|
|
287
|
+
conversationId,
|
|
288
|
+
subconversation,
|
|
289
|
+
error,
|
|
290
|
+
});
|
|
291
|
+
throw error;
|
|
292
|
+
}
|
|
189
293
|
}
|
|
190
294
|
async getConferenceSubconversation(conversationId) {
|
|
191
|
-
|
|
295
|
+
this.logger.debug('Fetching conference subconversation metadata', { conversationId });
|
|
296
|
+
try {
|
|
297
|
+
return await this.apiClient.api.conversation.getSubconversation(conversationId, conversation_1.SUBCONVERSATION_ID.CONFERENCE);
|
|
298
|
+
}
|
|
299
|
+
catch (error) {
|
|
300
|
+
this.logger.error('Failed to fetch conference subconversation metadata', { conversationId, error });
|
|
301
|
+
throw error;
|
|
302
|
+
}
|
|
192
303
|
}
|
|
193
304
|
async deleteConferenceSubconversation(conversationId, data) {
|
|
194
|
-
|
|
305
|
+
this.logger.info('Deleting conference subconversation', { conversationId, data });
|
|
306
|
+
try {
|
|
307
|
+
return await this.apiClient.api.conversation.deleteSubconversation(conversationId, conversation_1.SUBCONVERSATION_ID.CONFERENCE, data);
|
|
308
|
+
}
|
|
309
|
+
catch (error) {
|
|
310
|
+
this.logger.error('Failed to delete conference subconversation', { conversationId, data, error });
|
|
311
|
+
throw error;
|
|
312
|
+
}
|
|
195
313
|
}
|
|
196
314
|
async generateSubconversationMembers(subconversationGroupId, parentGroupId) {
|
|
315
|
+
this.logger.debug('Generating subconversation members info', {
|
|
316
|
+
subconversationGroupId,
|
|
317
|
+
parentGroupId,
|
|
318
|
+
});
|
|
197
319
|
const subconversationMemberIds = await this.mlsService.getClientIds(subconversationGroupId);
|
|
198
320
|
const parentMemberIds = await this.mlsService.getClientIds(parentGroupId);
|
|
199
|
-
|
|
321
|
+
const members = parentMemberIds.map(parentMember => {
|
|
200
322
|
const isSubconversationMember = subconversationMemberIds.some(({ userId, clientId, domain }) => (0, fullyQualifiedClientIdUtils_1.constructFullyQualifiedClientId)(userId, clientId, domain) ===
|
|
201
323
|
(0, fullyQualifiedClientIdUtils_1.constructFullyQualifiedClientId)(parentMember.userId, parentMember.clientId, parentMember.domain));
|
|
202
324
|
return {
|
|
@@ -207,20 +329,45 @@ class SubconversationService extends commons_1.TypedEventEmitter {
|
|
|
207
329
|
in_subconv: isSubconversationMember,
|
|
208
330
|
};
|
|
209
331
|
});
|
|
332
|
+
this.logger.debug('Generated subconversation members info', {
|
|
333
|
+
subconversationGroupId,
|
|
334
|
+
parentGroupId,
|
|
335
|
+
membersCount: members.length,
|
|
336
|
+
});
|
|
337
|
+
return members;
|
|
210
338
|
}
|
|
211
339
|
getSubconversationGroupId = async (parentConversationId, subconversationId) => {
|
|
212
340
|
const foundSubconversation = await this.coreDatabase.get('subconversations', (0, subconversationUtil_1.generateSubconversationStoreKey)(parentConversationId, subconversationId));
|
|
341
|
+
this.logger.debug('Loaded subconversation groupId from store', {
|
|
342
|
+
parentConversationId,
|
|
343
|
+
subconversationId,
|
|
344
|
+
found: Boolean(foundSubconversation?.groupId),
|
|
345
|
+
});
|
|
213
346
|
return foundSubconversation?.groupId;
|
|
214
347
|
};
|
|
215
348
|
getAllGroupIdsBySubconversationId = async (subconversationId) => {
|
|
349
|
+
this.logger.debug('Retrieving all subconversations by subconversationId', { subconversationId });
|
|
216
350
|
const allSubconversations = await this.coreDatabase.getAll('subconversations');
|
|
217
351
|
const foundSubconversations = allSubconversations.filter(subconversation => subconversation.subconversationId === subconversationId);
|
|
352
|
+
this.logger.debug('Found subconversations by id', {
|
|
353
|
+
subconversationId,
|
|
354
|
+
count: foundSubconversations.length,
|
|
355
|
+
});
|
|
218
356
|
return foundSubconversations;
|
|
219
357
|
};
|
|
220
358
|
saveSubconversationGroupId = async (parentConversationId, subconversationId, groupId) => {
|
|
359
|
+
this.logger.debug('Saving subconversation groupId mapping', {
|
|
360
|
+
parentConversationId,
|
|
361
|
+
subconversationId,
|
|
362
|
+
groupId,
|
|
363
|
+
});
|
|
221
364
|
return this.coreDatabase.put('subconversations', { parentConversationId, subconversationId, groupId }, (0, subconversationUtil_1.generateSubconversationStoreKey)(parentConversationId, subconversationId));
|
|
222
365
|
};
|
|
223
366
|
clearSubconversationGroupId = async (parentConversationId, subconversationId) => {
|
|
367
|
+
this.logger.debug('Clearing subconversation groupId mapping', {
|
|
368
|
+
parentConversationId,
|
|
369
|
+
subconversationId,
|
|
370
|
+
});
|
|
224
371
|
return this.coreDatabase.delete('subconversations', (0, subconversationUtil_1.generateSubconversationStoreKey)(parentConversationId, subconversationId));
|
|
225
372
|
};
|
|
226
373
|
}
|
|
@@ -22,6 +22,7 @@ const conversation_1 = require("@wireapp/api-client/lib/conversation");
|
|
|
22
22
|
const http_1 = require("@wireapp/api-client/lib/http");
|
|
23
23
|
const api_client_1 = require("@wireapp/api-client");
|
|
24
24
|
const SubconversationService_1 = require("./SubconversationService");
|
|
25
|
+
const mls_1 = require("../../messagingProtocols/mls");
|
|
25
26
|
const CoreDB_1 = require("../../storage/CoreDB");
|
|
26
27
|
const fullyQualifiedClientIdUtils_1 = require("../../util/fullyQualifiedClientIdUtils");
|
|
27
28
|
const getSubconversationResponse = ({ epoch, epochTimestamp, parentConversationId, groupId, members = [], subconversationId = conversation_1.SUBCONVERSATION_ID.CONFERENCE, }) => {
|
|
@@ -35,8 +36,10 @@ const getSubconversationResponse = ({ epoch, epochTimestamp, parentConversationI
|
|
|
35
36
|
epoch_timestamp: epochTimestamp,
|
|
36
37
|
};
|
|
37
38
|
};
|
|
39
|
+
const apiClients = [];
|
|
38
40
|
const buildSubconversationService = async (isFederated = false) => {
|
|
39
41
|
const apiClient = new api_client_1.APIClient({ urls: api_client_1.APIClient.BACKEND.STAGING });
|
|
42
|
+
apiClients.push(apiClient);
|
|
40
43
|
apiClient.backendFeatures.isFederated = isFederated;
|
|
41
44
|
const mlsService = {
|
|
42
45
|
conversationExists: jest.fn(),
|
|
@@ -57,6 +60,9 @@ const buildSubconversationService = async (isFederated = false) => {
|
|
|
57
60
|
return [subconversationService, { apiClient, mlsService, coreDatabase }];
|
|
58
61
|
};
|
|
59
62
|
describe('SubconversationService', () => {
|
|
63
|
+
afterAll(() => {
|
|
64
|
+
apiClients.forEach(client => client.disconnect());
|
|
65
|
+
});
|
|
60
66
|
describe('joinConferenceSubconversation', () => {
|
|
61
67
|
afterEach(() => {
|
|
62
68
|
jest.useRealTimers();
|
|
@@ -313,11 +319,11 @@ describe('SubconversationService', () => {
|
|
|
313
319
|
const onEpochUpdateCallback = jest.fn();
|
|
314
320
|
const unsubscribe = await subconversationService.subscribeToEpochUpdates(parentConversationId, parentConversationGroupId, findConversationByGroupId, onEpochUpdateCallback);
|
|
315
321
|
expect(mlsService.getEpoch).toHaveBeenCalledWith(subconversationGroupId);
|
|
316
|
-
expect(mlsService.on).toHaveBeenCalledWith(
|
|
322
|
+
expect(mlsService.on).toHaveBeenCalledWith(mls_1.MLSServiceEvents.NEW_EPOCH, expect.any(Function));
|
|
317
323
|
expect(subconversationService.getSubconversationEpochInfo).toHaveBeenCalledWith(parentConversationId, parentConversationGroupId);
|
|
318
324
|
expect(onEpochUpdateCallback).toHaveBeenCalledWith(mockedEpochInfo);
|
|
319
325
|
unsubscribe();
|
|
320
|
-
expect(mlsService.off).toHaveBeenCalledWith(
|
|
326
|
+
expect(mlsService.off).toHaveBeenCalledWith(mls_1.MLSServiceEvents.NEW_EPOCH, expect.any(Function));
|
|
321
327
|
});
|
|
322
328
|
});
|
|
323
329
|
describe('removeClientFromConferenceSubconversation', () => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Asset } from '@
|
|
1
|
+
import { Asset } from '@wireapp/protocol-messaging';
|
|
2
2
|
import { AbortReason, AssetTransferState } from '..';
|
|
3
3
|
import { EncryptedAssetUploaded } from '../../cryptography';
|
|
4
4
|
import { FileContent, FileMetaDataContent, ImageContent, LegalHoldStatus } from '.';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetContent.d.ts","sourceRoot":"","sources":["../../../src/conversation/content/AssetContent.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,KAAK,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"AssetContent.d.ts","sourceRoot":"","sources":["../../../src/conversation/content/AssetContent.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,KAAK,EAAC,MAAM,6BAA6B,CAAC;AAElD,OAAO,EAAC,WAAW,EAAE,kBAAkB,EAAC,MAAM,IAAI,CAAC;AACnD,OAAO,EAAC,sBAAsB,EAAC,MAAM,oBAAoB,CAAC;AAE1D,OAAO,EAAC,WAAW,EAAE,mBAAmB,EAAE,YAAY,EAAE,eAAe,EAAC,MAAM,GAAG,CAAC;AAElF,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC;AACjD,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC;AACjD,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC;AACrC,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC;AAEvC,MAAM,WAAW,SAAS;IACxB,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAGD,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB;AAED,MAAM,WAAW,UAAW,SAAQ,KAAK,CAAC,WAAW;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;IAC5B,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,oBAAoB,CAAC;IACrF,kBAAkB,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC;CACjD;AAED,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAClD,KAAK,EAAE,sBAAsB,CAAC;IAC9B,KAAK,EAAE,YAAY,CAAC;CACrB;AAED,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,KAAK,EAAE,sBAAsB,CAAC;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,mBAAmB,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAyB,SAAQ,SAAS;IACzD,QAAQ,EAAE,mBAAmB,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAsB,SAAQ,SAAS;IACtD,MAAM,EAAE,WAAW,CAAC;CACrB"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { IButtonActionConfirmation } from '@
|
|
1
|
+
import { IButtonActionConfirmation } from '@wireapp/protocol-messaging';
|
|
2
2
|
export { IButtonActionConfirmation as ButtonActionConfirmationContent };
|
|
3
3
|
//# sourceMappingURL=ButtonActionConfirmationContent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonActionConfirmationContent.d.ts","sourceRoot":"","sources":["../../../src/conversation/content/ButtonActionConfirmationContent.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,yBAAyB,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"ButtonActionConfirmationContent.d.ts","sourceRoot":"","sources":["../../../src/conversation/content/ButtonActionConfirmationContent.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,yBAAyB,EAAC,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAC,yBAAyB,IAAI,+BAA+B,EAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonActionContent.d.ts","sourceRoot":"","sources":["../../../src/conversation/content/ButtonActionContent.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,aAAa,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"ButtonActionContent.d.ts","sourceRoot":"","sources":["../../../src/conversation/content/ButtonActionContent.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,aAAa,EAAC,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAC,aAAa,IAAI,mBAAmB,EAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClearedContent.d.ts","sourceRoot":"","sources":["../../../src/conversation/content/ClearedContent.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,QAAQ,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"ClearedContent.d.ts","sourceRoot":"","sources":["../../../src/conversation/content/ClearedContent.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,QAAQ,EAAC,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAC,QAAQ,IAAI,cAAc,EAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClientActionContent.d.ts","sourceRoot":"","sources":["../../../src/conversation/content/ClientActionContent.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,eAAe,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"ClientActionContent.d.ts","sourceRoot":"","sources":["../../../src/conversation/content/ClientActionContent.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,eAAe,EAAC,MAAM,6BAA6B,CAAC;AAE5D,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompositeContent.d.ts","sourceRoot":"","sources":["../../../src/conversation/content/CompositeContent.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,UAAU,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"CompositeContent.d.ts","sourceRoot":"","sources":["../../../src/conversation/content/CompositeContent.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,UAAU,EAAC,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAC,UAAU,IAAI,gBAAgB,EAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfirmationContent.d.ts","sourceRoot":"","sources":["../../../src/conversation/content/ConfirmationContent.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,aAAa,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"ConfirmationContent.d.ts","sourceRoot":"","sources":["../../../src/conversation/content/ConfirmationContent.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,aAAa,EAAC,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAC,aAAa,IAAI,mBAAmB,EAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeletedContent.d.ts","sourceRoot":"","sources":["../../../src/conversation/content/DeletedContent.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,cAAc,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"DeletedContent.d.ts","sourceRoot":"","sources":["../../../src/conversation/content/DeletedContent.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,cAAc,EAAC,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAC,cAAc,IAAI,cAAc,EAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HiddenContent.d.ts","sourceRoot":"","sources":["../../../src/conversation/content/HiddenContent.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,YAAY,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"HiddenContent.d.ts","sourceRoot":"","sources":["../../../src/conversation/content/HiddenContent.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAC,YAAY,IAAI,aAAa,EAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KnockContent.d.ts","sourceRoot":"","sources":["../../../src/conversation/content/KnockContent.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,MAAM,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"KnockContent.d.ts","sourceRoot":"","sources":["../../../src/conversation/content/KnockContent.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,MAAM,EAAC,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAC,MAAM,IAAI,YAAY,EAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ILinkPreview } from '@
|
|
1
|
+
import { ILinkPreview } from '@wireapp/protocol-messaging';
|
|
2
2
|
import { ImageAssetContent, ImageContent, LegalHoldStatus } from '.';
|
|
3
3
|
export interface LinkPreviewContent extends Omit<ILinkPreview, 'image'> {
|
|
4
4
|
expectsReadConfirmation?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkPreviewContent.d.ts","sourceRoot":"","sources":["../../../src/conversation/content/LinkPreviewContent.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,YAAY,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"LinkPreviewContent.d.ts","sourceRoot":"","sources":["../../../src/conversation/content/LinkPreviewContent.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAC;AAEzD,OAAO,EAAC,iBAAiB,EAAE,YAAY,EAAE,eAAe,EAAC,MAAM,GAAG,CAAC;AAEnE,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC;IACrE,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,KAAK,EAAE,YAAY,CAAC;CACrB;AAED,MAAM,WAAW,0BAA2B,SAAQ,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACnF,aAAa,CAAC,EAAE,iBAAiB,CAAC;CACnC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MentionContent.d.ts","sourceRoot":"","sources":["../../../src/conversation/content/MentionContent.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,QAAQ,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"MentionContent.d.ts","sourceRoot":"","sources":["../../../src/conversation/content/MentionContent.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,QAAQ,EAAC,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAC,QAAQ,IAAI,cAAc,EAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IMultipart, IAttachment, ICellAsset, IAsset } from '@
|
|
1
|
+
import { IMultipart, IAttachment, ICellAsset, IAsset } from '@wireapp/protocol-messaging';
|
|
2
2
|
export { IMultipart as MultiPartContent };
|
|
3
3
|
export { IAttachment as MultiPartAttachment };
|
|
4
4
|
export { ICellAsset as MultiPartCellAsset };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultipartContent.d.ts","sourceRoot":"","sources":["../../../src/conversation/content/MultipartContent.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"MultipartContent.d.ts","sourceRoot":"","sources":["../../../src/conversation/content/MultipartContent.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAC,MAAM,6BAA6B,CAAC;AACxF,OAAO,EAAC,UAAU,IAAI,gBAAgB,EAAC,CAAC;AACxC,OAAO,EAAC,WAAW,IAAI,mBAAmB,EAAC,CAAC;AAC5C,OAAO,EAAC,UAAU,IAAI,kBAAkB,EAAC,CAAC;AAC1C,OAAO,EAAC,MAAM,IAAI,cAAc,EAAC,CAAC"}
|