@wireapp/core 46.0.16 → 46.0.18
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.js +43 -56
- package/lib/account/AccountService.js +1 -0
- package/lib/broadcast/BroadcastService.js +3 -0
- package/lib/client/ClientBackendRepository.js +1 -0
- package/lib/client/ClientDatabaseRepository.js +16 -7
- package/lib/client/ClientService.d.ts.map +1 -1
- package/lib/client/ClientService.js +14 -13
- package/lib/connection/ConnectionService.js +1 -0
- package/lib/conversation/AssetService/AssetService.d.ts +0 -1
- package/lib/conversation/AssetService/AssetService.d.ts.map +1 -1
- package/lib/conversation/AssetService/AssetService.js +13 -6
- package/lib/conversation/AssetService/AssetService.test.js +1 -1
- package/lib/conversation/ConversationService/ConversationService.d.ts.map +1 -1
- package/lib/conversation/ConversationService/ConversationService.js +90 -80
- package/lib/conversation/ConversationService/ConversationService.test.js +12 -5
- package/lib/conversation/ConversationService/Utility/getConversationQualifiedMembers.d.ts.map +1 -1
- package/lib/conversation/MessageTimer/MessageTimer.js +2 -0
- package/lib/conversation/SubconversationService/SubconversationService.d.ts.map +1 -1
- package/lib/conversation/SubconversationService/SubconversationService.js +23 -17
- package/lib/conversation/content/AssetContent.d.ts +0 -1
- package/lib/conversation/content/AssetContent.d.ts.map +1 -1
- package/lib/conversation/content/ContentType.js +18 -19
- package/lib/conversation/content/FileContent.d.ts +0 -1
- package/lib/conversation/content/FileContent.d.ts.map +1 -1
- package/lib/conversation/content/ImageContent.d.ts +0 -1
- package/lib/conversation/content/ImageContent.d.ts.map +1 -1
- package/lib/conversation/message/MessageBuilder.js +22 -23
- package/lib/conversation/message/MessageService.js +5 -4
- package/lib/conversation/message/MessageService.test.js +20 -9
- package/lib/conversation/message/MessageToProtoMapper.js +2 -2
- package/lib/conversation/message/RecipientsHelper.js +1 -2
- package/lib/conversation/message/TextContentBuilder.js +3 -2
- package/lib/conversation/message/UserClientsUtil.js +2 -3
- package/lib/conversation/message/messageSender.js +5 -6
- package/lib/cryptography/AssetCryptography/AssetCryptography.d.ts.map +1 -1
- package/lib/cryptography/GenericMessageMapper.js +74 -22
- package/lib/cryptography/MessageHashService.d.ts +0 -1
- package/lib/cryptography/MessageHashService.d.ts.map +1 -1
- package/lib/cryptography/MessageHashService.js +2 -0
- package/lib/errors/DecryptionError.js +2 -0
- package/lib/errors/FederatedBackendsError.js +3 -2
- package/lib/giphy/GiphyService.js +1 -0
- package/lib/linkPreview/LinkPreviewService.js +2 -12
- package/lib/messagingProtocols/mls/E2EIdentityService/Connection/AcmeServer/AcmeService.d.ts +4 -4
- package/lib/messagingProtocols/mls/E2EIdentityService/Connection/AcmeServer/AcmeService.js +9 -8
- package/lib/messagingProtocols/mls/E2EIdentityService/Connection/AcmeServer/schema.d.ts +8 -8
- package/lib/messagingProtocols/mls/E2EIdentityService/E2EIServiceExternal.js +33 -3
- package/lib/messagingProtocols/mls/E2EIdentityService/E2EIServiceExternal.test.js +11 -11
- package/lib/messagingProtocols/mls/E2EIdentityService/E2EIServiceInternal.js +15 -5
- package/lib/messagingProtocols/mls/E2EIdentityService/Steps/Account.d.ts.map +1 -1
- package/lib/messagingProtocols/mls/E2EIdentityService/Steps/Account.js +1 -1
- package/lib/messagingProtocols/mls/E2EIdentityService/Steps/Authorization.d.ts +1 -1
- package/lib/messagingProtocols/mls/E2EIdentityService/Steps/Authorization.d.ts.map +1 -1
- package/lib/messagingProtocols/mls/E2EIdentityService/Steps/Authorization.js +2 -3
- package/lib/messagingProtocols/mls/E2EIdentityService/Steps/Certificate.js +1 -1
- package/lib/messagingProtocols/mls/E2EIdentityService/Steps/Order.d.ts.map +1 -1
- package/lib/messagingProtocols/mls/E2EIdentityService/Steps/Order.js +2 -2
- package/lib/messagingProtocols/mls/E2EIdentityService/Storage/E2EIStorage.d.ts.map +1 -1
- package/lib/messagingProtocols/mls/E2EIdentityService/Storage/E2EIStorage.js +1 -2
- package/lib/messagingProtocols/mls/E2EIdentityService/Storage/E2EIStorage.schema.d.ts +4 -4
- package/lib/messagingProtocols/mls/EventHandler/events/messageAdd/IncomingMessagesQueue/IncomingMesssagesQueue.d.ts.map +1 -1
- package/lib/messagingProtocols/mls/EventHandler/events/messageAdd/messageAdd.d.ts.map +1 -1
- package/lib/messagingProtocols/mls/EventHandler/events/messageAdd/messageAdd.js +1 -1
- package/lib/messagingProtocols/mls/EventHandler/events/welcomeMessage/welcomeMessage.d.ts.map +1 -1
- package/lib/messagingProtocols/mls/EventHandler/events/welcomeMessage/welcomeMessage.js +1 -1
- package/lib/messagingProtocols/mls/EventHandler/events/welcomeMessage/welcomeMessage.test.js +7 -3
- package/lib/messagingProtocols/mls/MLSService/ClientMLSError.js +1 -0
- package/lib/messagingProtocols/mls/MLSService/CoreCryptoMLSError.d.ts.map +1 -1
- package/lib/messagingProtocols/mls/MLSService/MLSService.d.ts.map +1 -1
- package/lib/messagingProtocols/mls/MLSService/MLSService.js +109 -114
- package/lib/messagingProtocols/mls/MLSService/MLSService.test.js +28 -9
- package/lib/messagingProtocols/mls/MLSService/commitBundleUtil.js +1 -2
- package/lib/messagingProtocols/mls/conversationRejoinQueue.js +3 -4
- package/lib/messagingProtocols/mls/utils/MLSId.js +2 -3
- package/lib/messagingProtocols/proteus/EventHandler/events/otrMessageAdd/otrMessageAdd.d.ts.map +1 -1
- package/lib/messagingProtocols/proteus/ProteusService/CryptoClient/CoreCryptoWrapper/CoreCryptoWrapper.js +6 -2
- package/lib/messagingProtocols/proteus/ProteusService/CryptoClient/CoreCryptoWrapper/PrekeysTracker/PrekeysTracker.js +3 -0
- package/lib/messagingProtocols/proteus/ProteusService/CryptoClient/CoreCryptoWrapper/PrekeysTracker/PrekeysTracker.store.js +1 -1
- package/lib/messagingProtocols/proteus/ProteusService/CryptoClient/CryptoboxWrapper.js +5 -4
- package/lib/messagingProtocols/proteus/ProteusService/DecryptionErrorGenerator/DecryptionErrorGenerator.js +1 -2
- package/lib/messagingProtocols/proteus/ProteusService/ProteusService.d.ts.map +1 -1
- package/lib/messagingProtocols/proteus/ProteusService/ProteusService.js +20 -16
- package/lib/messagingProtocols/proteus/ProteusService/ProteusService.mocks.d.ts +4 -7
- package/lib/messagingProtocols/proteus/ProteusService/ProteusService.mocks.d.ts.map +1 -1
- package/lib/messagingProtocols/proteus/ProteusService/ProteusService.test.js +15 -15
- package/lib/messagingProtocols/proteus/ProteusService/cryptoMigrationStateStore.js +1 -1
- package/lib/messagingProtocols/proteus/ProteusService/identityClearer.js +1 -2
- package/lib/messagingProtocols/proteus/ProteusService/sessionIdMigrator.js +2 -3
- package/lib/messagingProtocols/proteus/ProteusService/userDomainFilters.js +1 -2
- package/lib/messagingProtocols/proteus/Utility/Recipients.d.ts.map +1 -1
- package/lib/messagingProtocols/proteus/Utility/SessionHandler/SessionHandler.d.ts.map +1 -1
- package/lib/messagingProtocols/proteus/Utility/SessionHandler/SessionHandler.js +14 -14
- package/lib/messagingProtocols/proteus/Utility/SessionHandler/SessionHandler.test.js +5 -2
- package/lib/messagingProtocols/proteus/Utility/getGenericMessageParams.d.ts.map +1 -1
- package/lib/notification/NotificationBackendRepository.d.ts +1 -1
- package/lib/notification/NotificationBackendRepository.js +1 -0
- package/lib/notification/NotificationDatabaseRepository.js +1 -0
- package/lib/notification/NotificationService.js +38 -49
- package/lib/secretStore/encryptedStore.js +10 -22
- package/lib/secretStore/secretKeyGenerator.js +2 -2
- package/lib/secretStore/secretKeyGenerator.test.js +1 -1
- package/lib/self/SelfService.js +2 -1
- package/lib/storage/CoreDB.js +2 -3
- package/lib/team/TeamService.js +1 -0
- package/lib/test/PayloadHelper.js +3 -4
- package/lib/testUtils/index.js +2 -3
- package/lib/user/UserService.d.ts +2 -2
- package/lib/user/UserService.js +1 -0
- package/lib/util/LocalStorageStore/index.d.ts.map +1 -1
- package/lib/util/LowPrecisionTaskScheduler/LowPrecisionTaskScheduler.js +4 -6
- package/lib/util/RecurringTaskScheduler/RecurringTaskScheduler.d.ts.map +1 -1
- package/lib/util/RecurringTaskScheduler/RecurringTaskScheduler.js +34 -33
- package/lib/util/TaskScheduler/TaskScheduler.d.ts +1 -1
- package/lib/util/TaskScheduler/TaskScheduler.d.ts.map +1 -1
- package/lib/util/TypePredicateUtil.js +7 -10
- package/lib/util/fullyQualifiedClientIdUtils.js +1 -2
- package/package.json +3 -3
|
@@ -18,7 +18,28 @@
|
|
|
18
18
|
*
|
|
19
19
|
*/
|
|
20
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
-
exports.
|
|
21
|
+
exports.createId = createId;
|
|
22
|
+
exports.buildButtonActionMessage = buildButtonActionMessage;
|
|
23
|
+
exports.buildButtonActionConfirmationMessage = buildButtonActionConfirmationMessage;
|
|
24
|
+
exports.buildCompositeMessage = buildCompositeMessage;
|
|
25
|
+
exports.buildConfirmationMessage = buildConfirmationMessage;
|
|
26
|
+
exports.buildEditedTextMessage = buildEditedTextMessage;
|
|
27
|
+
exports.buildFileDataMessage = buildFileDataMessage;
|
|
28
|
+
exports.buildFileMetaDataMessage = buildFileMetaDataMessage;
|
|
29
|
+
exports.buildFileAbortMessage = buildFileAbortMessage;
|
|
30
|
+
exports.buildLastReadMessage = buildLastReadMessage;
|
|
31
|
+
exports.buildDataTransferMessage = buildDataTransferMessage;
|
|
32
|
+
exports.buildClearedMessage = buildClearedMessage;
|
|
33
|
+
exports.buildImageMessage = buildImageMessage;
|
|
34
|
+
exports.buildLocationMessage = buildLocationMessage;
|
|
35
|
+
exports.buildPingMessage = buildPingMessage;
|
|
36
|
+
exports.buildReactionMessage = buildReactionMessage;
|
|
37
|
+
exports.buildSessionResetMessage = buildSessionResetMessage;
|
|
38
|
+
exports.buildCallMessage = buildCallMessage;
|
|
39
|
+
exports.buildDeleteMessage = buildDeleteMessage;
|
|
40
|
+
exports.buildHideMessage = buildHideMessage;
|
|
41
|
+
exports.buildTextMessage = buildTextMessage;
|
|
42
|
+
exports.wrapInEphemeral = wrapInEphemeral;
|
|
22
43
|
const uuid_1 = require("uuid");
|
|
23
44
|
const protocol_messaging_1 = require("@wireapp/protocol-messaging");
|
|
24
45
|
const AssetTransferState_1 = require("../AssetTransferState");
|
|
@@ -27,28 +48,24 @@ const MessageToProtoMapper_1 = require("../message/MessageToProtoMapper");
|
|
|
27
48
|
function createId() {
|
|
28
49
|
return (0, uuid_1.v4)();
|
|
29
50
|
}
|
|
30
|
-
exports.createId = createId;
|
|
31
51
|
function buildButtonActionMessage(payloadBundle) {
|
|
32
52
|
return protocol_messaging_1.GenericMessage.create({
|
|
33
53
|
[GenericMessageType_1.GenericMessageType.BUTTON_ACTION]: protocol_messaging_1.ButtonAction.create(payloadBundle),
|
|
34
54
|
messageId: createId(),
|
|
35
55
|
});
|
|
36
56
|
}
|
|
37
|
-
exports.buildButtonActionMessage = buildButtonActionMessage;
|
|
38
57
|
function buildButtonActionConfirmationMessage(payloadBundle) {
|
|
39
58
|
return protocol_messaging_1.GenericMessage.create({
|
|
40
59
|
[GenericMessageType_1.GenericMessageType.BUTTON_ACTION_CONFIRMATION]: protocol_messaging_1.ButtonActionConfirmation.create(payloadBundle),
|
|
41
60
|
messageId: createId(),
|
|
42
61
|
});
|
|
43
62
|
}
|
|
44
|
-
exports.buildButtonActionConfirmationMessage = buildButtonActionConfirmationMessage;
|
|
45
63
|
function buildCompositeMessage(payload) {
|
|
46
64
|
return protocol_messaging_1.GenericMessage.create({
|
|
47
65
|
[GenericMessageType_1.GenericMessageType.COMPOSITE]: protocol_messaging_1.Composite.create(payload),
|
|
48
66
|
messageId: createId(),
|
|
49
67
|
});
|
|
50
68
|
}
|
|
51
|
-
exports.buildCompositeMessage = buildCompositeMessage;
|
|
52
69
|
function buildConfirmationMessage(payloadBundle) {
|
|
53
70
|
const content = protocol_messaging_1.Confirmation.create(payloadBundle);
|
|
54
71
|
return protocol_messaging_1.GenericMessage.create({
|
|
@@ -56,7 +73,6 @@ function buildConfirmationMessage(payloadBundle) {
|
|
|
56
73
|
messageId: createId(),
|
|
57
74
|
});
|
|
58
75
|
}
|
|
59
|
-
exports.buildConfirmationMessage = buildConfirmationMessage;
|
|
60
76
|
function buildEditedTextMessage(payloadBundle, messageId = createId()) {
|
|
61
77
|
const editedMessage = protocol_messaging_1.MessageEdit.create({
|
|
62
78
|
replacingMessageId: payloadBundle.originalMessageId,
|
|
@@ -67,7 +83,6 @@ function buildEditedTextMessage(payloadBundle, messageId = createId()) {
|
|
|
67
83
|
messageId,
|
|
68
84
|
});
|
|
69
85
|
}
|
|
70
|
-
exports.buildEditedTextMessage = buildEditedTextMessage;
|
|
71
86
|
function buildFileDataMessage(payloadBundle, messageId = createId()) {
|
|
72
87
|
const { asset, expectsReadConfirmation, legalHoldStatus } = payloadBundle;
|
|
73
88
|
const remoteData = protocol_messaging_1.Asset.RemoteData.create({
|
|
@@ -89,7 +104,6 @@ function buildFileDataMessage(payloadBundle, messageId = createId()) {
|
|
|
89
104
|
});
|
|
90
105
|
return genericMessage;
|
|
91
106
|
}
|
|
92
|
-
exports.buildFileDataMessage = buildFileDataMessage;
|
|
93
107
|
function buildFileMetaDataMessage(payloadBundle, messageId = createId()) {
|
|
94
108
|
const { expectsReadConfirmation, legalHoldStatus, metaData } = payloadBundle;
|
|
95
109
|
const original = protocol_messaging_1.Asset.Original.create({
|
|
@@ -111,7 +125,6 @@ function buildFileMetaDataMessage(payloadBundle, messageId = createId()) {
|
|
|
111
125
|
});
|
|
112
126
|
return genericMessage;
|
|
113
127
|
}
|
|
114
|
-
exports.buildFileMetaDataMessage = buildFileMetaDataMessage;
|
|
115
128
|
function buildFileAbortMessage(payloadBundle, messageId = createId()) {
|
|
116
129
|
const { expectsReadConfirmation, legalHoldStatus, reason } = payloadBundle;
|
|
117
130
|
const assetMessage = protocol_messaging_1.Asset.create({
|
|
@@ -126,7 +139,6 @@ function buildFileAbortMessage(payloadBundle, messageId = createId()) {
|
|
|
126
139
|
});
|
|
127
140
|
return genericMessage;
|
|
128
141
|
}
|
|
129
|
-
exports.buildFileAbortMessage = buildFileAbortMessage;
|
|
130
142
|
function buildLastReadMessage(conversationId, lastReadTimestamp) {
|
|
131
143
|
const lastRead = new protocol_messaging_1.LastRead({
|
|
132
144
|
conversationId: conversationId.id,
|
|
@@ -138,7 +150,6 @@ function buildLastReadMessage(conversationId, lastReadTimestamp) {
|
|
|
138
150
|
messageId: createId(),
|
|
139
151
|
});
|
|
140
152
|
}
|
|
141
|
-
exports.buildLastReadMessage = buildLastReadMessage;
|
|
142
153
|
function buildDataTransferMessage(identifier) {
|
|
143
154
|
const dataTransfer = new protocol_messaging_1.DataTransfer({
|
|
144
155
|
trackingIdentifier: {
|
|
@@ -150,7 +161,6 @@ function buildDataTransferMessage(identifier) {
|
|
|
150
161
|
messageId: createId(),
|
|
151
162
|
});
|
|
152
163
|
}
|
|
153
|
-
exports.buildDataTransferMessage = buildDataTransferMessage;
|
|
154
164
|
function buildClearedMessage(conversationId, timestamp = Date.now()) {
|
|
155
165
|
const clearedMessage = protocol_messaging_1.Cleared.create({
|
|
156
166
|
clearedTimestamp: timestamp,
|
|
@@ -161,7 +171,6 @@ function buildClearedMessage(conversationId, timestamp = Date.now()) {
|
|
|
161
171
|
messageId: createId(),
|
|
162
172
|
});
|
|
163
173
|
}
|
|
164
|
-
exports.buildClearedMessage = buildClearedMessage;
|
|
165
174
|
function buildImageMessage(payloadBundle, messageId = createId()) {
|
|
166
175
|
const imageAsset = buildAsset(payloadBundle);
|
|
167
176
|
const genericMessage = protocol_messaging_1.GenericMessage.create({
|
|
@@ -170,7 +179,6 @@ function buildImageMessage(payloadBundle, messageId = createId()) {
|
|
|
170
179
|
});
|
|
171
180
|
return genericMessage;
|
|
172
181
|
}
|
|
173
|
-
exports.buildImageMessage = buildImageMessage;
|
|
174
182
|
function buildLocationMessage(payloadBundle) {
|
|
175
183
|
const { expectsReadConfirmation, latitude, legalHoldStatus, longitude, name, zoom } = payloadBundle;
|
|
176
184
|
const locationMessage = protocol_messaging_1.Location.create({
|
|
@@ -187,7 +195,6 @@ function buildLocationMessage(payloadBundle) {
|
|
|
187
195
|
});
|
|
188
196
|
return genericMessage;
|
|
189
197
|
}
|
|
190
|
-
exports.buildLocationMessage = buildLocationMessage;
|
|
191
198
|
function buildPingMessage(payloadBundle) {
|
|
192
199
|
const content = protocol_messaging_1.Knock.create(payloadBundle);
|
|
193
200
|
const genericMessage = protocol_messaging_1.GenericMessage.create({
|
|
@@ -196,7 +203,6 @@ function buildPingMessage(payloadBundle) {
|
|
|
196
203
|
});
|
|
197
204
|
return genericMessage;
|
|
198
205
|
}
|
|
199
|
-
exports.buildPingMessage = buildPingMessage;
|
|
200
206
|
function buildReactionMessage(payloadBundle) {
|
|
201
207
|
const { legalHoldStatus, originalMessageId, type } = payloadBundle;
|
|
202
208
|
const reaction = protocol_messaging_1.Reaction.create({
|
|
@@ -210,14 +216,12 @@ function buildReactionMessage(payloadBundle) {
|
|
|
210
216
|
});
|
|
211
217
|
return genericMessage;
|
|
212
218
|
}
|
|
213
|
-
exports.buildReactionMessage = buildReactionMessage;
|
|
214
219
|
function buildSessionResetMessage() {
|
|
215
220
|
return protocol_messaging_1.GenericMessage.create({
|
|
216
221
|
[GenericMessageType_1.GenericMessageType.CLIENT_ACTION]: protocol_messaging_1.ClientAction.RESET_SESSION,
|
|
217
222
|
messageId: createId(),
|
|
218
223
|
});
|
|
219
224
|
}
|
|
220
|
-
exports.buildSessionResetMessage = buildSessionResetMessage;
|
|
221
225
|
function buildCallMessage(payload) {
|
|
222
226
|
const callMessage = protocol_messaging_1.Calling.create(payload);
|
|
223
227
|
return protocol_messaging_1.GenericMessage.create({
|
|
@@ -225,7 +229,6 @@ function buildCallMessage(payload) {
|
|
|
225
229
|
messageId: createId(),
|
|
226
230
|
});
|
|
227
231
|
}
|
|
228
|
-
exports.buildCallMessage = buildCallMessage;
|
|
229
232
|
function buildDeleteMessage(payload) {
|
|
230
233
|
const content = protocol_messaging_1.MessageDelete.create(payload);
|
|
231
234
|
return protocol_messaging_1.GenericMessage.create({
|
|
@@ -233,7 +236,6 @@ function buildDeleteMessage(payload) {
|
|
|
233
236
|
messageId: createId(),
|
|
234
237
|
});
|
|
235
238
|
}
|
|
236
|
-
exports.buildDeleteMessage = buildDeleteMessage;
|
|
237
239
|
function buildHideMessage(payload) {
|
|
238
240
|
const content = protocol_messaging_1.MessageHide.create(payload);
|
|
239
241
|
return protocol_messaging_1.GenericMessage.create({
|
|
@@ -241,7 +243,6 @@ function buildHideMessage(payload) {
|
|
|
241
243
|
messageId: createId(),
|
|
242
244
|
});
|
|
243
245
|
}
|
|
244
|
-
exports.buildHideMessage = buildHideMessage;
|
|
245
246
|
function buildTextMessage(payloadBundle, messageId = createId()) {
|
|
246
247
|
const genericMessage = protocol_messaging_1.GenericMessage.create({
|
|
247
248
|
messageId,
|
|
@@ -249,7 +250,6 @@ function buildTextMessage(payloadBundle, messageId = createId()) {
|
|
|
249
250
|
});
|
|
250
251
|
return genericMessage;
|
|
251
252
|
}
|
|
252
|
-
exports.buildTextMessage = buildTextMessage;
|
|
253
253
|
function buildAsset(payloadBundle) {
|
|
254
254
|
const { asset, expectsReadConfirmation, image, legalHoldStatus } = payloadBundle;
|
|
255
255
|
const imageMetadata = protocol_messaging_1.Asset.ImageMetaData.create({
|
|
@@ -289,4 +289,3 @@ function wrapInEphemeral(originalGenericMessage, expireAfterMillis) {
|
|
|
289
289
|
});
|
|
290
290
|
return genericMessage;
|
|
291
291
|
}
|
|
292
|
-
exports.wrapInEphemeral = wrapInEphemeral;
|
|
@@ -30,6 +30,8 @@ const long_1 = __importDefault(require("long"));
|
|
|
30
30
|
const UserClientsUtil_1 = require("./UserClientsUtil");
|
|
31
31
|
const util_1 = require("../../util");
|
|
32
32
|
class MessageService {
|
|
33
|
+
apiClient;
|
|
34
|
+
proteusService;
|
|
33
35
|
constructor(apiClient, proteusService) {
|
|
34
36
|
this.apiClient = apiClient;
|
|
35
37
|
this.proteusService = proteusService;
|
|
@@ -50,7 +52,7 @@ class MessageService {
|
|
|
50
52
|
const encryptionResults = await this.proteusService.encrypt(plainText, recipients);
|
|
51
53
|
const send = async ({ payloads, unknowns, failed }) => {
|
|
52
54
|
const result = await this.sendOtrMessage(sendingClientId, payloads, options);
|
|
53
|
-
const extras = { failed, deleted: unknowns
|
|
55
|
+
const extras = { failed, deleted: unknowns ?? {} };
|
|
54
56
|
return (0, deepmerge_ts_1.deepmerge)(result, extras);
|
|
55
57
|
};
|
|
56
58
|
try {
|
|
@@ -63,7 +65,7 @@ class MessageService {
|
|
|
63
65
|
const mismatch = error.response.data;
|
|
64
66
|
const shouldStopSending = options.onClientMismatch && (await options.onClientMismatch(mismatch)) === false;
|
|
65
67
|
if (shouldStopSending) {
|
|
66
|
-
return
|
|
68
|
+
return { ...mismatch, canceled: true };
|
|
67
69
|
}
|
|
68
70
|
const reEncryptedPayload = await this.reencryptAfterMismatch(mismatch, encryptionResults, plainText);
|
|
69
71
|
return send(reEncryptedPayload);
|
|
@@ -117,8 +119,7 @@ class MessageService {
|
|
|
117
119
|
return this.apiClient.api.conversation.postOTRMessage(id, domain, protoMessage);
|
|
118
120
|
}
|
|
119
121
|
isClientMismatchError(error) {
|
|
120
|
-
|
|
121
|
-
return ((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === http_status_codes_1.StatusCodes.PRECONDITION_FAILED;
|
|
122
|
+
return error.response?.status === http_status_codes_1.StatusCodes.PRECONDITION_FAILED;
|
|
122
123
|
}
|
|
123
124
|
/**
|
|
124
125
|
* Will re-encrypt a message when there were some missing clients in the initial send (typically when the server replies with a client mismatch error)
|
|
@@ -45,7 +45,7 @@ const user2 = {
|
|
|
45
45
|
function generateQualifiedRecipients(users) {
|
|
46
46
|
const payload = {};
|
|
47
47
|
users.forEach(({ id, domain, clients }) => {
|
|
48
|
-
payload[domain]
|
|
48
|
+
payload[domain] ||= {};
|
|
49
49
|
payload[domain][id] = clients;
|
|
50
50
|
});
|
|
51
51
|
return payload;
|
|
@@ -104,7 +104,7 @@ describe('MessageService', () => {
|
|
|
104
104
|
conversationId: { id: 'convid', domain: 'domain' },
|
|
105
105
|
});
|
|
106
106
|
expect(apiClient.api.conversation.postOTRMessage).toHaveBeenCalled();
|
|
107
|
-
expect(result).toEqual(
|
|
107
|
+
expect(result).toEqual({ ...baseMessageSendingStatus, failed: undefined });
|
|
108
108
|
});
|
|
109
109
|
it('should send regular to conversation', async () => {
|
|
110
110
|
const [messageService, { apiClient }] = await buildMessageService();
|
|
@@ -137,7 +137,10 @@ describe('MessageService', () => {
|
|
|
137
137
|
it('handles client mismatch when no other clients from that domain are known', async () => {
|
|
138
138
|
const [messageService, { apiClient }] = await buildMessageService();
|
|
139
139
|
let spyCounter = 0;
|
|
140
|
-
const clientMismatch =
|
|
140
|
+
const clientMismatch = {
|
|
141
|
+
...baseClientMismatch,
|
|
142
|
+
missing: { [user1.domain]: { [user1.id]: ['client'] } },
|
|
143
|
+
};
|
|
141
144
|
jest.spyOn(apiClient.api.conversation, 'postOTRMessage').mockImplementation(() => {
|
|
142
145
|
spyCounter++;
|
|
143
146
|
if (spyCounter === 1) {
|
|
@@ -163,7 +166,11 @@ describe('MessageService', () => {
|
|
|
163
166
|
it('handles client mismatch internally if no onClientMismatch is given', async () => {
|
|
164
167
|
const [messageService, { apiClient }] = await buildMessageService();
|
|
165
168
|
let spyCounter = 0;
|
|
166
|
-
const clientMismatch =
|
|
169
|
+
const clientMismatch = {
|
|
170
|
+
...baseClientMismatch,
|
|
171
|
+
deleted: { [user1.domain]: { [user1.id]: [user1.clients[0]] } },
|
|
172
|
+
missing: { [user2.domain]: { [user2.id]: ['client22'] } },
|
|
173
|
+
};
|
|
167
174
|
jest.spyOn(apiClient.api.conversation, 'postOTRMessage').mockImplementation(() => {
|
|
168
175
|
spyCounter++;
|
|
169
176
|
if (spyCounter === 1) {
|
|
@@ -189,7 +196,7 @@ describe('MessageService', () => {
|
|
|
189
196
|
it('continues message sending if onClientMismatch returns true', async () => {
|
|
190
197
|
const [messageService, { apiClient }] = await buildMessageService();
|
|
191
198
|
const onClientMismatch = jest.fn().mockReturnValue(Promise.resolve(true));
|
|
192
|
-
const clientMismatch =
|
|
199
|
+
const clientMismatch = { ...baseClientMismatch, missing: { [user2.domain]: { [user2.id]: ['client22'] } } };
|
|
193
200
|
let spyCounter = 0;
|
|
194
201
|
jest.spyOn(apiClient.api.conversation, 'postOTRMessage').mockImplementation(() => {
|
|
195
202
|
spyCounter++;
|
|
@@ -218,7 +225,7 @@ describe('MessageService', () => {
|
|
|
218
225
|
it('stops message sending if onClientMismatch returns false', async () => {
|
|
219
226
|
const [messageService, { apiClient }] = await buildMessageService();
|
|
220
227
|
const onClientMismatch = jest.fn().mockReturnValue(Promise.resolve(false));
|
|
221
|
-
const clientMismatch =
|
|
228
|
+
const clientMismatch = { ...baseMessageSendingStatus, missing: { [user2.id]: ['client22'] } };
|
|
222
229
|
jest.spyOn(apiClient.api.conversation, 'postOTRMessage').mockImplementation(() => {
|
|
223
230
|
const error = new Error();
|
|
224
231
|
error.response = {
|
|
@@ -244,7 +251,11 @@ describe('MessageService', () => {
|
|
|
244
251
|
it('handles client mismatch internally if no onClientMismatch is given', async () => {
|
|
245
252
|
const [messageService, { apiClient }] = await buildMessageService();
|
|
246
253
|
let spyCounter = 0;
|
|
247
|
-
const clientMismatch =
|
|
254
|
+
const clientMismatch = {
|
|
255
|
+
...baseMessageSendingStatus,
|
|
256
|
+
deleted: { [user1.domain]: { [user1.id]: [user1.clients[0]] } },
|
|
257
|
+
missing: { '2.wire.test': { [user2.id]: ['client22'] } },
|
|
258
|
+
};
|
|
248
259
|
jest.spyOn(apiClient.api.conversation, 'postOTRMessage').mockImplementation(() => {
|
|
249
260
|
spyCounter++;
|
|
250
261
|
if (spyCounter === 1) {
|
|
@@ -270,7 +281,7 @@ describe('MessageService', () => {
|
|
|
270
281
|
it('continues message sending if onClientMismatch returns true', async () => {
|
|
271
282
|
const [messageService, { apiClient }] = await buildMessageService();
|
|
272
283
|
const onClientMismatch = jest.fn().mockReturnValue(true);
|
|
273
|
-
const clientMismatch =
|
|
284
|
+
const clientMismatch = { ...baseMessageSendingStatus, missing: { '2.wire.test': { [user2.id]: ['client22'] } } };
|
|
274
285
|
let spyCounter = 0;
|
|
275
286
|
jest.spyOn(apiClient.api.conversation, 'postOTRMessage').mockImplementation(() => {
|
|
276
287
|
spyCounter++;
|
|
@@ -320,7 +331,7 @@ describe('MessageService', () => {
|
|
|
320
331
|
it('stops message sending if onClientMismatch returns false', async () => {
|
|
321
332
|
const [messageService, { apiClient }] = await buildMessageService();
|
|
322
333
|
const onClientMismatch = jest.fn().mockReturnValue(false);
|
|
323
|
-
const clientMismatch =
|
|
334
|
+
const clientMismatch = { ...baseMessageSendingStatus, missing: { '2.wire.test': { [user2.id]: ['client22'] } } };
|
|
324
335
|
jest.spyOn(apiClient.api.conversation, 'postOTRMessage').mockImplementation(() => {
|
|
325
336
|
const error = new Error();
|
|
326
337
|
error.response = {
|
|
@@ -80,10 +80,10 @@ class MessageToProtoMapper {
|
|
|
80
80
|
expectsReadConfirmation,
|
|
81
81
|
legalHoldStatus,
|
|
82
82
|
});
|
|
83
|
-
if (linkPreviews
|
|
83
|
+
if (linkPreviews?.length) {
|
|
84
84
|
textMessage.linkPreview = MessageToProtoMapper.mapLinkPreviews(linkPreviews);
|
|
85
85
|
}
|
|
86
|
-
if (mentions
|
|
86
|
+
if (mentions?.length) {
|
|
87
87
|
textMessage.mentions = mentions.map(mention => protocol_messaging_1.Mention.create(mention));
|
|
88
88
|
}
|
|
89
89
|
if (quote) {
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
*
|
|
19
19
|
*/
|
|
20
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
-
exports.recipientsToBase64 =
|
|
21
|
+
exports.recipientsToBase64 = recipientsToBase64;
|
|
22
22
|
const bazinga64_1 = require("bazinga64");
|
|
23
23
|
function recipientsToBase64(recipients) {
|
|
24
24
|
return Object.fromEntries(Object.entries(recipients).map(([userId, otrClientMap]) => {
|
|
@@ -28,4 +28,3 @@ function recipientsToBase64(recipients) {
|
|
|
28
28
|
return [userId, otrClientMapWithBase64];
|
|
29
29
|
}));
|
|
30
30
|
}
|
|
31
|
-
exports.recipientsToBase64 = recipientsToBase64;
|
|
@@ -21,6 +21,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
21
21
|
exports.TextContentBuilder = void 0;
|
|
22
22
|
const content_1 = require("../content");
|
|
23
23
|
class TextContentBuilder {
|
|
24
|
+
content;
|
|
24
25
|
constructor(textContent) {
|
|
25
26
|
this.content = textContent;
|
|
26
27
|
}
|
|
@@ -28,13 +29,13 @@ class TextContentBuilder {
|
|
|
28
29
|
return this.content;
|
|
29
30
|
}
|
|
30
31
|
withLinkPreviews(linkPreviews) {
|
|
31
|
-
if (linkPreviews
|
|
32
|
+
if (linkPreviews?.length) {
|
|
32
33
|
this.content.linkPreviews = linkPreviews;
|
|
33
34
|
}
|
|
34
35
|
return this;
|
|
35
36
|
}
|
|
36
37
|
withMentions(mentions) {
|
|
37
|
-
if (mentions
|
|
38
|
+
if (mentions?.length) {
|
|
38
39
|
this.content.mentions = mentions;
|
|
39
40
|
}
|
|
40
41
|
return this;
|
|
@@ -18,7 +18,8 @@
|
|
|
18
18
|
*
|
|
19
19
|
*/
|
|
20
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
-
exports.
|
|
21
|
+
exports.flattenUserMap = flattenUserMap;
|
|
22
|
+
exports.nestUsersList = nestUsersList;
|
|
22
23
|
/**
|
|
23
24
|
* Will flatten a container of domain=>users=>anything infos to an array
|
|
24
25
|
*
|
|
@@ -30,7 +31,6 @@ function flattenUserMap(userMap) {
|
|
|
30
31
|
return [...ids, ...Object.entries(userClients).map(([id, data]) => ({ data, userId: { domain, id } }))];
|
|
31
32
|
}, []);
|
|
32
33
|
}
|
|
33
|
-
exports.flattenUserMap = flattenUserMap;
|
|
34
34
|
/**
|
|
35
35
|
* Will convert a list of qualified users to a UserMap
|
|
36
36
|
* @param users the list of users to convert
|
|
@@ -44,4 +44,3 @@ function nestUsersList(users) {
|
|
|
44
44
|
return users;
|
|
45
45
|
}, {});
|
|
46
46
|
}
|
|
47
|
-
exports.nestUsersList = nestUsersList;
|
|
@@ -18,26 +18,25 @@
|
|
|
18
18
|
*
|
|
19
19
|
*/
|
|
20
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
-
exports.
|
|
21
|
+
exports.sendMessage = sendMessage;
|
|
22
|
+
exports.getQueueLength = getQueueLength;
|
|
23
|
+
exports.isSendingMessage = isSendingMessage;
|
|
24
|
+
exports.resumeMessageSending = resumeMessageSending;
|
|
25
|
+
exports.pauseMessageSending = pauseMessageSending;
|
|
22
26
|
const promise_queue_1 = require("@wireapp/promise-queue");
|
|
23
27
|
const sendingQueue = new promise_queue_1.PromiseQueue({ name: 'message-sender', paused: true });
|
|
24
28
|
function sendMessage(sendingFunction) {
|
|
25
29
|
return sendingQueue.push(sendingFunction);
|
|
26
30
|
}
|
|
27
|
-
exports.sendMessage = sendMessage;
|
|
28
31
|
function getQueueLength() {
|
|
29
32
|
return sendingQueue.getLength();
|
|
30
33
|
}
|
|
31
|
-
exports.getQueueLength = getQueueLength;
|
|
32
34
|
function isSendingMessage() {
|
|
33
35
|
return sendingQueue.hasRunningTasks();
|
|
34
36
|
}
|
|
35
|
-
exports.isSendingMessage = isSendingMessage;
|
|
36
37
|
function resumeMessageSending() {
|
|
37
38
|
sendingQueue.pause(false);
|
|
38
39
|
}
|
|
39
|
-
exports.resumeMessageSending = resumeMessageSending;
|
|
40
40
|
function pauseMessageSending() {
|
|
41
41
|
sendingQueue.pause(true);
|
|
42
42
|
}
|
|
43
|
-
exports.pauseMessageSending = pauseMessageSending;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetCryptography.d.ts","sourceRoot":"","sources":["../../../src/cryptography/AssetCryptography/AssetCryptography.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,aAAa,EAAC,MAAM,+BAA+B,CAAC;AAG5D,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAYhD,UAAU,cAAe,SAAQ,aAAa;IAC5C,SAAS,EAAE,UAAU,CAAC;CACvB;AAED,eAAO,MAAM,YAAY,uDAItB,cAAc,KAAG,
|
|
1
|
+
{"version":3,"file":"AssetCryptography.d.ts","sourceRoot":"","sources":["../../../src/cryptography/AssetCryptography/AssetCryptography.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,aAAa,EAAC,MAAM,+BAA+B,CAAC;AAG5D,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAYhD,UAAU,cAAe,SAAQ,aAAa;IAC5C,SAAS,EAAE,UAAU,CAAC;CACvB;AAED,eAAO,MAAM,YAAY,uDAItB,cAAc,KAAG,OAAO,CAAC,UAAU,CAQrC,CAAC;AAEF,eAAO,MAAM,YAAY,6BAAkD,cAAc,KAAG,OAAO,CAAC,cAAc,CAiBjH,CAAC"}
|
|
@@ -25,6 +25,10 @@ exports.GenericMessageMapper = void 0;
|
|
|
25
25
|
const logdown_1 = __importDefault(require("logdown"));
|
|
26
26
|
const conversation_1 = require("../conversation");
|
|
27
27
|
class GenericMessageMapper {
|
|
28
|
+
static logger = (0, logdown_1.default)('@wireapp/core/GenericMessageMapper', {
|
|
29
|
+
logger: console,
|
|
30
|
+
markdown: false,
|
|
31
|
+
});
|
|
28
32
|
// TODO: Turn "any" into a specific type (or collection of types) and make the return type more specific based on the
|
|
29
33
|
// "genericMessage" input parameter.
|
|
30
34
|
static mapGenericMessage(genericMessage, event, source) {
|
|
@@ -44,10 +48,10 @@ class GenericMessageMapper {
|
|
|
44
48
|
case conversation_1.GenericMessageType.TEXT: {
|
|
45
49
|
const { content: text, expectsReadConfirmation, legalHoldStatus, linkPreview: linkPreviews, mentions, quote, } = genericMessage[conversation_1.GenericMessageType.TEXT];
|
|
46
50
|
const content = { expectsReadConfirmation, legalHoldStatus, text };
|
|
47
|
-
if (linkPreviews
|
|
51
|
+
if (linkPreviews?.length) {
|
|
48
52
|
content.linkPreviews = linkPreviews;
|
|
49
53
|
}
|
|
50
|
-
if (mentions
|
|
54
|
+
if (mentions?.length) {
|
|
51
55
|
content.mentions = mentions;
|
|
52
56
|
}
|
|
53
57
|
if (quote) {
|
|
@@ -56,27 +60,51 @@ class GenericMessageMapper {
|
|
|
56
60
|
if (typeof legalHoldStatus !== 'undefined') {
|
|
57
61
|
content.legalHoldStatus = legalHoldStatus;
|
|
58
62
|
}
|
|
59
|
-
return
|
|
63
|
+
return {
|
|
64
|
+
...baseMessage,
|
|
65
|
+
content,
|
|
66
|
+
type: conversation_1.PayloadBundleType.TEXT,
|
|
67
|
+
};
|
|
60
68
|
}
|
|
61
69
|
case conversation_1.GenericMessageType.BUTTON_ACTION: {
|
|
62
|
-
return
|
|
70
|
+
return {
|
|
71
|
+
...baseMessage,
|
|
72
|
+
content: genericMessage.buttonAction,
|
|
73
|
+
type: conversation_1.PayloadBundleType.BUTTON_ACTION,
|
|
74
|
+
};
|
|
63
75
|
}
|
|
64
76
|
case conversation_1.GenericMessageType.CALLING: {
|
|
65
|
-
return
|
|
77
|
+
return {
|
|
78
|
+
...baseMessage,
|
|
79
|
+
content: genericMessage.calling.content,
|
|
80
|
+
type: conversation_1.PayloadBundleType.CALL,
|
|
81
|
+
};
|
|
66
82
|
}
|
|
67
83
|
case conversation_1.GenericMessageType.CONFIRMATION: {
|
|
68
84
|
const { firstMessageId, moreMessageIds, type } = genericMessage[conversation_1.GenericMessageType.CONFIRMATION];
|
|
69
85
|
const content = { firstMessageId, moreMessageIds, type };
|
|
70
|
-
return
|
|
86
|
+
return {
|
|
87
|
+
...baseMessage,
|
|
88
|
+
content,
|
|
89
|
+
type: conversation_1.PayloadBundleType.CONFIRMATION,
|
|
90
|
+
};
|
|
71
91
|
}
|
|
72
92
|
case conversation_1.GenericMessageType.CLEARED: {
|
|
73
93
|
const content = genericMessage[conversation_1.GenericMessageType.CLEARED];
|
|
74
|
-
return
|
|
94
|
+
return {
|
|
95
|
+
...baseMessage,
|
|
96
|
+
content,
|
|
97
|
+
type: conversation_1.PayloadBundleType.CONVERSATION_CLEAR,
|
|
98
|
+
};
|
|
75
99
|
}
|
|
76
100
|
case conversation_1.GenericMessageType.DELETED: {
|
|
77
101
|
const originalMessageId = genericMessage[conversation_1.GenericMessageType.DELETED].messageId;
|
|
78
102
|
const content = { messageId: originalMessageId };
|
|
79
|
-
return
|
|
103
|
+
return {
|
|
104
|
+
...baseMessage,
|
|
105
|
+
content,
|
|
106
|
+
type: conversation_1.PayloadBundleType.MESSAGE_DELETE,
|
|
107
|
+
};
|
|
80
108
|
}
|
|
81
109
|
case conversation_1.GenericMessageType.EDITED: {
|
|
82
110
|
const { expectsReadConfirmation, text: { content: editedText, legalHoldStatus, linkPreview: editedLinkPreviews, mentions: editedMentions, quote: editedQuote, }, replacingMessageId, } = genericMessage[conversation_1.GenericMessageType.EDITED];
|
|
@@ -86,16 +114,20 @@ class GenericMessageMapper {
|
|
|
86
114
|
originalMessageId: replacingMessageId,
|
|
87
115
|
text: editedText,
|
|
88
116
|
};
|
|
89
|
-
if (editedLinkPreviews
|
|
117
|
+
if (editedLinkPreviews?.length) {
|
|
90
118
|
content.linkPreviews = editedLinkPreviews;
|
|
91
119
|
}
|
|
92
|
-
if (editedMentions
|
|
120
|
+
if (editedMentions?.length) {
|
|
93
121
|
content.mentions = editedMentions;
|
|
94
122
|
}
|
|
95
123
|
if (editedQuote) {
|
|
96
124
|
content.quote = editedQuote;
|
|
97
125
|
}
|
|
98
|
-
return
|
|
126
|
+
return {
|
|
127
|
+
...baseMessage,
|
|
128
|
+
content,
|
|
129
|
+
type: conversation_1.PayloadBundleType.MESSAGE_EDIT,
|
|
130
|
+
};
|
|
99
131
|
}
|
|
100
132
|
case conversation_1.GenericMessageType.HIDDEN: {
|
|
101
133
|
const { conversationId, messageId } = genericMessage[conversation_1.GenericMessageType.HIDDEN];
|
|
@@ -103,12 +135,20 @@ class GenericMessageMapper {
|
|
|
103
135
|
conversationId,
|
|
104
136
|
messageId,
|
|
105
137
|
};
|
|
106
|
-
return
|
|
138
|
+
return {
|
|
139
|
+
...baseMessage,
|
|
140
|
+
content,
|
|
141
|
+
type: conversation_1.PayloadBundleType.MESSAGE_HIDE,
|
|
142
|
+
};
|
|
107
143
|
}
|
|
108
144
|
case conversation_1.GenericMessageType.KNOCK: {
|
|
109
145
|
const { expectsReadConfirmation, legalHoldStatus } = genericMessage[conversation_1.GenericMessageType.KNOCK];
|
|
110
146
|
const content = { expectsReadConfirmation, hotKnock: false, legalHoldStatus };
|
|
111
|
-
return
|
|
147
|
+
return {
|
|
148
|
+
...baseMessage,
|
|
149
|
+
content,
|
|
150
|
+
type: conversation_1.PayloadBundleType.PING,
|
|
151
|
+
};
|
|
112
152
|
}
|
|
113
153
|
case conversation_1.GenericMessageType.LOCATION: {
|
|
114
154
|
const { expectsReadConfirmation, latitude, legalHoldStatus, longitude, name, zoom } = genericMessage[conversation_1.GenericMessageType.LOCATION];
|
|
@@ -120,11 +160,15 @@ class GenericMessageMapper {
|
|
|
120
160
|
name,
|
|
121
161
|
zoom,
|
|
122
162
|
};
|
|
123
|
-
return
|
|
163
|
+
return {
|
|
164
|
+
...baseMessage,
|
|
165
|
+
content,
|
|
166
|
+
type: conversation_1.PayloadBundleType.LOCATION,
|
|
167
|
+
};
|
|
124
168
|
}
|
|
125
169
|
case conversation_1.GenericMessageType.ASSET: {
|
|
126
170
|
const { expectsReadConfirmation, legalHoldStatus, notUploaded, original, preview, status, uploaded } = genericMessage[conversation_1.GenericMessageType.ASSET];
|
|
127
|
-
const isImage = !!
|
|
171
|
+
const isImage = !!uploaded?.assetId && !!original?.image;
|
|
128
172
|
const content = {
|
|
129
173
|
abortReason: notUploaded,
|
|
130
174
|
expectsReadConfirmation,
|
|
@@ -134,7 +178,11 @@ class GenericMessageMapper {
|
|
|
134
178
|
status,
|
|
135
179
|
uploaded,
|
|
136
180
|
};
|
|
137
|
-
return
|
|
181
|
+
return {
|
|
182
|
+
...baseMessage,
|
|
183
|
+
content,
|
|
184
|
+
type: isImage ? conversation_1.PayloadBundleType.ASSET_IMAGE : conversation_1.PayloadBundleType.ASSET,
|
|
185
|
+
};
|
|
138
186
|
}
|
|
139
187
|
case conversation_1.GenericMessageType.REACTION: {
|
|
140
188
|
const { emoji, legalHoldStatus, messageId } = genericMessage[conversation_1.GenericMessageType.REACTION];
|
|
@@ -143,17 +191,21 @@ class GenericMessageMapper {
|
|
|
143
191
|
originalMessageId: messageId,
|
|
144
192
|
type: emoji,
|
|
145
193
|
};
|
|
146
|
-
return
|
|
194
|
+
return {
|
|
195
|
+
...baseMessage,
|
|
196
|
+
content,
|
|
197
|
+
type: conversation_1.PayloadBundleType.REACTION,
|
|
198
|
+
};
|
|
147
199
|
}
|
|
148
200
|
default: {
|
|
149
201
|
this.logger.warn(`Unhandled event type "${genericMessage.content}": ${JSON.stringify(genericMessage)}`);
|
|
150
|
-
return
|
|
202
|
+
return {
|
|
203
|
+
...baseMessage,
|
|
204
|
+
content: genericMessage.content,
|
|
205
|
+
type: conversation_1.PayloadBundleType.UNKNOWN,
|
|
206
|
+
};
|
|
151
207
|
}
|
|
152
208
|
}
|
|
153
209
|
}
|
|
154
210
|
}
|
|
155
211
|
exports.GenericMessageMapper = GenericMessageMapper;
|
|
156
|
-
GenericMessageMapper.logger = (0, logdown_1.default)('@wireapp/core/GenericMessageMapper', {
|
|
157
|
-
logger: console,
|
|
158
|
-
markdown: false,
|
|
159
|
-
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageHashService.d.ts","sourceRoot":"","sources":["../../src/cryptography/MessageHashService.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MessageHashService.d.ts","sourceRoot":"","sources":["../../src/cryptography/MessageHashService.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAC,YAAY,EAAoC,eAAe,EAAE,WAAW,EAAC,MAAM,yBAAyB,CAAC;AAErH,MAAM,MAAM,uBAAuB,GAAG,YAAY,GAAG,eAAe,GAAG,WAAW,CAAC;AAEnF,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA0B;IACzD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,cAAc,EAAE,uBAAuB,EAAE,SAAS,GAAE,MAAmB;IAMnF,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,QAAQ;IAiBhB,OAAO,IAAI,MAAM;CAIlB"}
|
|
@@ -49,6 +49,8 @@ const hash = __importStar(require("hash.js"));
|
|
|
49
49
|
const long_1 = __importDefault(require("long"));
|
|
50
50
|
const content_1 = require("../conversation/content");
|
|
51
51
|
class MessageHashService {
|
|
52
|
+
messageContent;
|
|
53
|
+
timestamp;
|
|
52
54
|
constructor(messageContent, timestamp = Date.now()) {
|
|
53
55
|
this.messageContent = messageContent;
|
|
54
56
|
const unixTimestamp = new Date(timestamp).getTime();
|