@wireapp/core 17.27.4 → 17.28.0

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/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [17.28.0](https://github.com/wireapp/wire-web-packages/tree/main/packages/core/compare/@wireapp/core@17.27.4...@wireapp/core@17.28.0) (2021-11-23)
7
+
8
+
9
+ ### Features
10
+
11
+ * **core:** Add ability to send targeted message to specific users ([#4181](https://github.com/wireapp/wire-web-packages/tree/main/packages/core/issues/4181)) ([9154556](https://github.com/wireapp/wire-web-packages/tree/main/packages/core/commit/91545560ecad09ef124497d803110e739ab95500))
12
+
13
+
14
+
15
+
16
+
6
17
  ## [17.27.4](https://github.com/wireapp/wire-web-packages/tree/main/packages/core/compare/@wireapp/core@17.27.3...@wireapp/core@17.27.4) (2021-11-16)
7
18
 
8
19
  **Note:** Version bump only for package @wireapp/core
package/package.json CHANGED
@@ -69,6 +69,6 @@
69
69
  "test:project": "yarn dist && yarn test",
70
70
  "test:node": "nyc jasmine --config=jasmine.json"
71
71
  },
72
- "version": "17.27.4",
73
- "gitHead": "178821e7b09be7ffd2a96e7f354bb48ffdd7377b"
72
+ "version": "17.28.0",
73
+ "gitHead": "19755b6cc35801813a2f889bdd82e44589df8f1a"
74
74
  }
@@ -9,6 +9,40 @@ import type { RemoteData } from '../conversation/content/';
9
9
  import type { CryptographyService } from '../cryptography/';
10
10
  import { MessageBuilder } from './message/MessageBuilder';
11
11
  import type { ClearConversationMessage, DeleteMessage, HideMessage, OtrMessage } from './message/OtrMessage';
12
+ export declare enum MessageTargetMode {
13
+ NONE = 0,
14
+ USERS = 1,
15
+ USERS_CLIENTS = 2
16
+ }
17
+ interface MessageSendingOptions {
18
+ /**
19
+ * The federated domain the server runs on. Should only be set for federation enabled envs
20
+ */
21
+ conversationDomain?: string;
22
+ /**
23
+ * can be either a QualifiedId[] or QualfiedUserClients or undefined. The type has some effect on the behavior of the method.
24
+ * When given undefined the method will fetch both the members of the conversations and their devices. No ClientMismatch can happen in that case
25
+ * When given a QualifiedId[] the method will fetch the freshest list of devices for those users (since they are not given by the consumer). As a consequence no ClientMismatch error will trigger and we will ignore missing clients when sending
26
+ * When given a QualifiedUserClients the method will only send to the clients listed in the userIds. This could lead to ClientMismatch (since the given list of devices might not be the freshest one and new clients could have been created)
27
+ */
28
+ userIds?: string[] | QualifiedId[] | UserClients | QualifiedUserClients;
29
+ /**
30
+ * Will send the message as a protobuf payload
31
+ */
32
+ sendAsProtobuf?: boolean;
33
+ nativePush?: boolean;
34
+ /**
35
+ * Will be called whenever there is a clientmismatch returned from the server. Needs to be combined with a userIds of type QualifiedUserClients
36
+ */
37
+ onClientMismatch?: MessageSendingCallbacks['onClientMismatch'];
38
+ /**
39
+ * Defines the behavior to use when a mismatch happens on backend side:
40
+ * - NONE -> Not a targetted message, we want to send to all the users/clients in the conversation. Will report all missing users and clients (default mode)
41
+ * - USERS -> A message targetted to all the clients of the given users (according to params.userIds). Will ignore missing users and only report missing clients for the given params.userIds
42
+ * - USERS_CLIENTS -> A message targetted at some specific clients of specific users (according to params.userIds). Will force sending the message even if users or clients are missing
43
+ */
44
+ targetMode?: MessageTargetMode;
45
+ }
12
46
  export interface MessageSendingCallbacks {
13
47
  onStart?: (message: GenericMessage) => void | boolean | Promise<boolean>;
14
48
  onSuccess?: (message: GenericMessage, sentTime?: string) => void;
@@ -49,16 +83,11 @@ export declare class ConversationService {
49
83
  * @param sendingClientId The clientId from which the message is sent
50
84
  * @param conversationId The conversation in which to send the message
51
85
  * @param genericMessage The payload of the message to send
52
- * @param options.domain? The federated domain the server runs on. Should only be set for federation enabled envs
53
- * @param options.sendAsProtobuf? Will send the message as a protobuf payload
54
- * @param options.userIds? can be either a QualifiedId[] or QualfiedUserClients or undefined. The type has some effect on the behavior of the method.
55
- * When given undefined the method will fetch both the members of the conversations and their devices. No ClientMismatch can happen in that case
56
- * When given a QualifiedId[] the method will fetch the freshest list of devices for those users (since they are not given by the consumer). As a consequence no ClientMismatch error will trigger and we will ignore missing clients when sending
57
- * When given a QualifiedUserClients the method will only send to the clients listed in the userIds. This could lead to ClientMismatch (since the given list of devices might not be the freshest one and new clients could have been created)
58
- * @param options.onClientMismatch? Will be called whenever there is a clientmismatch returned from the server. Needs to be combined with a userIds of type QualifiedUserClients
59
86
  * @return Resolves with the message sending status from backend
60
87
  */
61
88
  private sendGenericMessage;
89
+ private extractUserIds;
90
+ private extractQualifiedUserIds;
62
91
  private generateButtonActionGenericMessage;
63
92
  private generateButtonActionConfirmationGenericMessage;
64
93
  private generateCompositeGenericMessage;
@@ -95,20 +124,15 @@ export declare class ConversationService {
95
124
  * When given a QualifiedUserClients or UserClients the method will only send to the clients listed in the userIds. This could lead to ClientMismatch (since the given list of devices might not be the freshest one and new clients could have been created)
96
125
  * When given a QualifiedId[] or QualifiedUserClients the method will send the message through the federated API endpoint
97
126
  * When given a string[] or UserClients the method will send the message through the old API endpoint
98
- * @param params.sendAsProtobuf?
99
- * @param params.conversationDomain? The domain the conversation lives on (if given with QualifiedId[] or QualfiedUserClients in the userIds params, will send the message to the federated endpoint)
100
- * @param params.callbacks? Optional callbacks that will be called when the message starts being sent and when it has been succesfully sent.
101
127
  * @param callbacks.onStart Will be called before a message is actually sent. Returning 'false' will prevent the message from being sent
102
128
  * @param callbacks.onClientMismatch? Will be called when a mismatch happens. Returning `false` from the callback will stop the sending attempt
103
129
  * @return resolves with the sent message
104
130
  */
105
- send<T extends OtrMessage = OtrMessage>({ payloadBundle, userIds, sendAsProtobuf, conversationDomain, callbacks, }: {
131
+ send<T extends OtrMessage = OtrMessage>({ payloadBundle, userIds, sendAsProtobuf, conversationDomain, nativePush, targetMode, callbacks, }: {
106
132
  payloadBundle: T;
107
133
  userIds?: string[] | QualifiedId[] | UserClients | QualifiedUserClients;
108
- sendAsProtobuf?: boolean;
109
- conversationDomain?: string;
110
134
  callbacks?: MessageSendingCallbacks;
111
- }): Promise<T>;
135
+ } & MessageSendingOptions): Promise<T>;
112
136
  sendTypingStart(conversationId: string): Promise<void>;
113
137
  sendTypingStop(conversationId: string): Promise<void>;
114
138
  setConversationMutedStatus(conversationId: string, status: MutedStatus, muteTimestamp: number | Date): Promise<void>;
@@ -116,3 +140,4 @@ export declare class ConversationService {
116
140
  setMemberConversationRole(conversationId: string, userId: string, conversationRole: DefaultConversationRoleName | string): Promise<void>;
117
141
  private isClearFromMismatch;
118
142
  }
143
+ export {};
@@ -37,7 +37,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
37
37
  return result;
38
38
  };
39
39
  Object.defineProperty(exports, "__esModule", { value: true });
40
- exports.ConversationService = void 0;
40
+ exports.ConversationService = exports.MessageTargetMode = void 0;
41
41
  const conversation_1 = require("@wireapp/api-client/src/conversation/");
42
42
  const data_1 = require("@wireapp/api-client/src/conversation/data/");
43
43
  const protocol_messaging_1 = require("@wireapp/protocol-messaging");
@@ -47,6 +47,12 @@ const TypePredicateUtil_1 = require("../util/TypePredicateUtil");
47
47
  const MessageBuilder_1 = require("./message/MessageBuilder");
48
48
  const MessageService_1 = require("./message/MessageService");
49
49
  const MessageToProtoMapper_1 = require("./message/MessageToProtoMapper");
50
+ var MessageTargetMode;
51
+ (function (MessageTargetMode) {
52
+ MessageTargetMode[MessageTargetMode["NONE"] = 0] = "NONE";
53
+ MessageTargetMode[MessageTargetMode["USERS"] = 1] = "USERS";
54
+ MessageTargetMode[MessageTargetMode["USERS_CLIENTS"] = 2] = "USERS_CLIENTS";
55
+ })(MessageTargetMode = exports.MessageTargetMode || (exports.MessageTargetMode = {}));
50
56
  class ConversationService {
51
57
  constructor(apiClient, cryptographyService, assetService) {
52
58
  this.apiClient = apiClient;
@@ -172,40 +178,73 @@ class ConversationService {
172
178
  * @param sendingClientId The clientId from which the message is sent
173
179
  * @param conversationId The conversation in which to send the message
174
180
  * @param genericMessage The payload of the message to send
175
- * @param options.domain? The federated domain the server runs on. Should only be set for federation enabled envs
176
- * @param options.sendAsProtobuf? Will send the message as a protobuf payload
177
- * @param options.userIds? can be either a QualifiedId[] or QualfiedUserClients or undefined. The type has some effect on the behavior of the method.
178
- * When given undefined the method will fetch both the members of the conversations and their devices. No ClientMismatch can happen in that case
179
- * When given a QualifiedId[] the method will fetch the freshest list of devices for those users (since they are not given by the consumer). As a consequence no ClientMismatch error will trigger and we will ignore missing clients when sending
180
- * When given a QualifiedUserClients the method will only send to the clients listed in the userIds. This could lead to ClientMismatch (since the given list of devices might not be the freshest one and new clients could have been created)
181
- * @param options.onClientMismatch? Will be called whenever there is a clientmismatch returned from the server. Needs to be combined with a userIds of type QualifiedUserClients
182
181
  * @return Resolves with the message sending status from backend
183
182
  */
184
- async sendGenericMessage(sendingClientId, conversationId, genericMessage, options = {}) {
185
- const { domain, userIds } = options;
183
+ async sendGenericMessage(sendingClientId, conversationId, genericMessage, { conversationDomain, userIds, nativePush, sendAsProtobuf, onClientMismatch, targetMode = MessageTargetMode.NONE, } = {}) {
186
184
  const plainText = protocol_messaging_1.GenericMessage.encode(genericMessage).finish();
187
- if (domain) {
185
+ if (targetMode !== MessageTargetMode.NONE && !userIds) {
186
+ throw new Error('Cannot send targetted message when no userIds are given');
187
+ }
188
+ if (conversationDomain) {
188
189
  if ((0, TypePredicateUtil_1.isStringArray)(userIds) || (0, TypePredicateUtil_1.isUserClients)(userIds)) {
189
190
  throw new Error('Invalid userIds option for sending to federated backend');
190
191
  }
191
- const recipients = await this.getQualifiedRecipientsForConversation({ id: conversationId, domain }, userIds);
192
+ const recipients = await this.getQualifiedRecipientsForConversation({ id: conversationId, domain: conversationDomain }, userIds);
193
+ let reportMissing;
194
+ if (targetMode === MessageTargetMode.NONE) {
195
+ reportMissing = (0, TypePredicateUtil_1.isQualifiedUserClients)(userIds); // we want to check mismatch in case the consumer gave an exact list of users/devices
196
+ }
197
+ else if (targetMode === MessageTargetMode.USERS) {
198
+ reportMissing = this.extractQualifiedUserIds(userIds);
199
+ }
200
+ else {
201
+ // in case the message is fully targetted at user/client pairs, we do not want to report the missing clients or users at all
202
+ reportMissing = false;
203
+ }
192
204
  return this.messageService.sendFederatedMessage(sendingClientId, recipients, plainText, {
193
- conversationId: { id: conversationId, domain },
194
- reportMissing: (0, TypePredicateUtil_1.isQualifiedUserClients)(options.userIds),
195
- onClientMismatch: mismatch => { var _a; return (_a = options.onClientMismatch) === null || _a === void 0 ? void 0 : _a.call(options, mismatch, false); },
205
+ conversationId: { id: conversationId, domain: conversationDomain },
206
+ nativePush,
207
+ reportMissing,
208
+ onClientMismatch: mismatch => onClientMismatch === null || onClientMismatch === void 0 ? void 0 : onClientMismatch(mismatch, false),
196
209
  });
197
210
  }
198
211
  if ((0, TypePredicateUtil_1.isQualifiedIdArray)(userIds) || (0, TypePredicateUtil_1.isQualifiedUserClients)(userIds)) {
199
212
  throw new Error('Invalid userIds option for sending');
200
213
  }
201
214
  const recipients = await this.getRecipientsForConversation(conversationId, userIds);
215
+ let reportMissing;
216
+ if (targetMode === MessageTargetMode.NONE) {
217
+ reportMissing = (0, TypePredicateUtil_1.isUserClients)(userIds); // we want to check mismatch in case the consumer gave an exact list of users/devices
218
+ }
219
+ else if (targetMode === MessageTargetMode.USERS) {
220
+ reportMissing = this.extractUserIds(userIds);
221
+ }
222
+ else {
223
+ // in case the message is fully targetted at user/client pairs, we do not want to report the missing clients or users at all
224
+ reportMissing = false;
225
+ }
202
226
  return this.messageService.sendMessage(sendingClientId, recipients, plainText, {
203
227
  conversationId,
204
- sendAsProtobuf: options.sendAsProtobuf,
205
- reportMissing: (0, TypePredicateUtil_1.isUserClients)(options.userIds),
206
- onClientMismatch: mistmatch => { var _a; return (_a = options.onClientMismatch) === null || _a === void 0 ? void 0 : _a.call(options, mistmatch, false); },
228
+ sendAsProtobuf,
229
+ nativePush,
230
+ reportMissing,
231
+ onClientMismatch: mistmatch => onClientMismatch === null || onClientMismatch === void 0 ? void 0 : onClientMismatch(mistmatch, false),
207
232
  });
208
233
  }
234
+ extractUserIds(userIds) {
235
+ if (!userIds || (0, TypePredicateUtil_1.isStringArray)(userIds)) {
236
+ return userIds;
237
+ }
238
+ return Object.keys(userIds);
239
+ }
240
+ extractQualifiedUserIds(userIds) {
241
+ if (!userIds || (0, TypePredicateUtil_1.isQualifiedIdArray)(userIds)) {
242
+ return userIds;
243
+ }
244
+ return Object.entries(userIds).reduce((ids, [domain, userClients]) => {
245
+ return ids.concat(Object.keys(userClients).map(userId => ({ domain, id: userId })));
246
+ }, []);
247
+ }
209
248
  generateButtonActionGenericMessage(payloadBundle) {
210
249
  return protocol_messaging_1.GenericMessage.create({
211
250
  [conversation_2.GenericMessageType.BUTTON_ACTION]: protocol_messaging_1.ButtonAction.create(payloadBundle.content),
@@ -422,7 +461,7 @@ class ConversationService {
422
461
  });
423
462
  const { id: selfConversationId } = await this.getSelfConversation();
424
463
  await this.sendGenericMessage(this.apiClient.validatedClientId, selfConversationId, genericMessage, {
425
- domain: conversationDomain,
464
+ conversationDomain,
426
465
  sendAsProtobuf,
427
466
  });
428
467
  return {
@@ -450,7 +489,7 @@ class ConversationService {
450
489
  const { id: selfConversationId } = await this.getSelfConversation();
451
490
  await this.sendGenericMessage(this.apiClient.validatedClientId, selfConversationId, genericMessage, {
452
491
  sendAsProtobuf,
453
- domain: conversationDomain,
492
+ conversationDomain,
454
493
  });
455
494
  return {
456
495
  content,
@@ -478,7 +517,7 @@ class ConversationService {
478
517
  const response = await this.sendGenericMessage(this.apiClient.validatedClientId, conversationId, genericMessage, {
479
518
  userIds,
480
519
  sendAsProtobuf,
481
- domain: conversationDomain,
520
+ conversationDomain,
482
521
  });
483
522
  (_b = callbacks === null || callbacks === void 0 ? void 0 : callbacks.onSuccess) === null || _b === void 0 ? void 0 : _b.call(callbacks, genericMessage, response === null || response === void 0 ? void 0 : response.time);
484
523
  return {
@@ -559,14 +598,11 @@ class ConversationService {
559
598
  * When given a QualifiedUserClients or UserClients the method will only send to the clients listed in the userIds. This could lead to ClientMismatch (since the given list of devices might not be the freshest one and new clients could have been created)
560
599
  * When given a QualifiedId[] or QualifiedUserClients the method will send the message through the federated API endpoint
561
600
  * When given a string[] or UserClients the method will send the message through the old API endpoint
562
- * @param params.sendAsProtobuf?
563
- * @param params.conversationDomain? The domain the conversation lives on (if given with QualifiedId[] or QualfiedUserClients in the userIds params, will send the message to the federated endpoint)
564
- * @param params.callbacks? Optional callbacks that will be called when the message starts being sent and when it has been succesfully sent.
565
601
  * @param callbacks.onStart Will be called before a message is actually sent. Returning 'false' will prevent the message from being sent
566
602
  * @param callbacks.onClientMismatch? Will be called when a mismatch happens. Returning `false` from the callback will stop the sending attempt
567
603
  * @return resolves with the sent message
568
604
  */
569
- async send({ payloadBundle, userIds, sendAsProtobuf, conversationDomain, callbacks, }) {
605
+ async send({ payloadBundle, userIds, sendAsProtobuf, conversationDomain, nativePush, targetMode, callbacks, }) {
570
606
  var _a, _b, _c, _d;
571
607
  let genericMessage;
572
608
  let processedContent = undefined;
@@ -632,7 +668,9 @@ class ConversationService {
632
668
  const response = await this.sendGenericMessage(this.apiClient.validatedClientId, payloadBundle.conversation, genericMessage, {
633
669
  userIds,
634
670
  sendAsProtobuf,
635
- domain: conversationDomain,
671
+ conversationDomain,
672
+ nativePush,
673
+ targetMode,
636
674
  onClientMismatch: callbacks === null || callbacks === void 0 ? void 0 : callbacks.onClientMismatch,
637
675
  });
638
676
  if (!response.errored) {
@@ -1 +1 @@
1
- {"version":3,"file":"ConversationService.js","sourceRoot":"","sources":["ConversationService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConversationService.js","sourceRoot":"","sources":["ConversationService.ts"],"names":[],"mappings":"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"}
@@ -51,6 +51,13 @@ describe('ConversationService', () => {
51
51
  account = new Account_1.Account(client);
52
52
  await account.initServices(new store_engine_1.MemoryEngine());
53
53
  });
54
+ beforeEach(() => {
55
+ account['apiClient'].context = {
56
+ clientType: client_1.ClientType.NONE,
57
+ userId: PayloadHelper.getUUID(),
58
+ clientId: PayloadHelper.getUUID(),
59
+ };
60
+ });
54
61
  describe('"send"', () => {
55
62
  const baseMessage = {
56
63
  conversation: PayloadHelper.getUUID(),
@@ -67,11 +74,6 @@ describe('ConversationService', () => {
67
74
  ];
68
75
  messages.forEach(payloadBundle => {
69
76
  it(`calls callbacks when sending '${payloadBundle.type}' message is starting and successful`, async () => {
70
- account['apiClient'].context = {
71
- clientType: client_1.ClientType.NONE,
72
- userId: PayloadHelper.getUUID(),
73
- clientId: PayloadHelper.getUUID(),
74
- };
75
77
  const conversationService = account.service.conversation;
76
78
  const sentTime = new Date().toISOString();
77
79
  spyOn(conversationService, 'sendGenericMessage').and.returnValue(Promise.resolve({ time: sentTime }));
@@ -86,12 +88,98 @@ describe('ConversationService', () => {
86
88
  expect(callbacks.onSuccess).toHaveBeenCalledWith(jasmine.any(Object), sentTime);
87
89
  });
88
90
  });
91
+ describe('targetted messages', () => {
92
+ const message = Object.assign(Object.assign({}, baseMessage), { type: _1.PayloadBundleType.TEXT, content: { text: 'test' } });
93
+ it('fails if no userIds are given', done => {
94
+ const conversationService = account.service.conversation;
95
+ conversationService
96
+ .send({
97
+ payloadBundle: message,
98
+ targetMode: _1.MessageTargetMode.USERS,
99
+ })
100
+ .catch(error => {
101
+ expect(error.message).toContain('no userIds are given');
102
+ done();
103
+ });
104
+ });
105
+ [{ user1: ['client1'], user2: ['client11', 'client12'] }, ['user1', 'user2']].forEach(recipients => {
106
+ it(`forwards the list of users to report (${JSON.stringify(recipients)})`, async () => {
107
+ const conversationService = account.service.conversation;
108
+ spyOn(conversationService, 'getRecipientsForConversation').and.returnValue(Promise.resolve({}));
109
+ spyOn(conversationService['messageService'], 'sendMessage').and.returnValue(Promise.resolve({}));
110
+ await conversationService.send({
111
+ payloadBundle: message,
112
+ targetMode: _1.MessageTargetMode.USERS,
113
+ userIds: recipients,
114
+ });
115
+ expect(conversationService['messageService'].sendMessage).toHaveBeenCalledWith(jasmine.any(String), jasmine.any(Object), jasmine.any(Uint8Array), jasmine.objectContaining({ reportMissing: ['user1', 'user2'] }));
116
+ });
117
+ });
118
+ [
119
+ { domain1: { user1: ['client1'], user2: ['client11', 'client12'] }, domain2: { user3: ['client1'] } },
120
+ [
121
+ { id: 'user1', domain: 'domain1' },
122
+ { id: 'user2', domain: 'domain1' },
123
+ { id: 'user3', domain: 'domain2' },
124
+ ],
125
+ ].forEach(recipients => {
126
+ it(`forwards the list of users to report for federated message (${JSON.stringify(recipients)})`, async () => {
127
+ const conversationService = account.service.conversation;
128
+ spyOn(conversationService, 'getQualifiedRecipientsForConversation').and.returnValue(Promise.resolve({}));
129
+ spyOn(conversationService['messageService'], 'sendFederatedMessage').and.returnValue(Promise.resolve({}));
130
+ await conversationService.send({
131
+ conversationDomain: 'domain1',
132
+ payloadBundle: message,
133
+ targetMode: _1.MessageTargetMode.USERS,
134
+ userIds: recipients,
135
+ });
136
+ expect(conversationService['messageService'].sendFederatedMessage).toHaveBeenCalledWith(jasmine.any(String), jasmine.any(Object), jasmine.any(Uint8Array), jasmine.objectContaining({
137
+ reportMissing: [
138
+ { id: 'user1', domain: 'domain1' },
139
+ { id: 'user2', domain: 'domain1' },
140
+ { id: 'user3', domain: 'domain2' },
141
+ ],
142
+ }));
143
+ });
144
+ });
145
+ [{ user1: ['client1'], user2: ['client11', 'client12'] }, ['user1', 'user2']].forEach(recipients => {
146
+ it(`ignores all missing user/client pair if targetMode is USER_CLIENTS`, async () => {
147
+ const conversationService = account.service.conversation;
148
+ spyOn(conversationService, 'getRecipientsForConversation').and.returnValue(Promise.resolve({}));
149
+ spyOn(conversationService['messageService'], 'sendMessage').and.returnValue(Promise.resolve({}));
150
+ await conversationService.send({
151
+ payloadBundle: message,
152
+ targetMode: _1.MessageTargetMode.USERS_CLIENTS,
153
+ userIds: recipients,
154
+ });
155
+ expect(conversationService['messageService'].sendMessage).toHaveBeenCalledWith(jasmine.any(String), jasmine.any(Object), jasmine.any(Uint8Array), jasmine.objectContaining({ reportMissing: false }));
156
+ });
157
+ });
158
+ [
159
+ { domain1: { user1: ['client1'], user2: ['client11', 'client12'] }, domain2: { user3: ['client1'] } },
160
+ [
161
+ { id: 'user1', domain: 'domain1' },
162
+ { id: 'user2', domain: 'domain1' },
163
+ { id: 'user3', domain: 'domain2' },
164
+ ],
165
+ ].forEach(recipients => {
166
+ it(`ignores all missing user/client pair if targetMode is USER_CLIENTS on federated env`, async () => {
167
+ const conversationService = account.service.conversation;
168
+ spyOn(conversationService, 'getQualifiedRecipientsForConversation').and.returnValue(Promise.resolve({}));
169
+ spyOn(conversationService['messageService'], 'sendFederatedMessage').and.returnValue(Promise.resolve({}));
170
+ await conversationService.send({
171
+ conversationDomain: 'domain1',
172
+ payloadBundle: message,
173
+ targetMode: _1.MessageTargetMode.USERS_CLIENTS,
174
+ userIds: recipients,
175
+ });
176
+ expect(conversationService['messageService'].sendFederatedMessage).toHaveBeenCalledWith(jasmine.any(String), jasmine.any(Object), jasmine.any(Uint8Array), jasmine.objectContaining({
177
+ reportMissing: false,
178
+ }));
179
+ });
180
+ });
181
+ });
89
182
  it(`cancels message sending if onStart returns false`, async () => {
90
- account['apiClient'].context = {
91
- clientType: client_1.ClientType.NONE,
92
- userId: PayloadHelper.getUUID(),
93
- clientId: PayloadHelper.getUUID(),
94
- };
95
183
  const conversationService = account.service.conversation;
96
184
  spyOn(conversationService, 'sendGenericMessage');
97
185
  const message = Object.assign(Object.assign({}, baseMessage), { type: _1.PayloadBundleType.TEXT, content: { text: 'test' } });
@@ -104,11 +192,6 @@ describe('ConversationService', () => {
104
192
  expect(conversationService['sendGenericMessage']).not.toHaveBeenCalled();
105
193
  });
106
194
  it(`does not call onSuccess when message was canceled`, async () => {
107
- account['apiClient'].context = {
108
- clientType: client_1.ClientType.NONE,
109
- userId: PayloadHelper.getUUID(),
110
- clientId: PayloadHelper.getUUID(),
111
- };
112
195
  const conversationService = account.service.conversation;
113
196
  spyOn(conversationService, 'sendGenericMessage').and.returnValue(Promise.resolve({ time: '', errored: true }));
114
197
  const message = Object.assign(Object.assign({}, baseMessage), { type: _1.PayloadBundleType.TEXT, content: { text: 'test' } });
@@ -122,10 +205,6 @@ describe('ConversationService', () => {
122
205
  });
123
206
  describe('"createText"', () => {
124
207
  it('adds link previews correctly', async () => {
125
- account['apiClient'].context = {
126
- clientType: client_1.ClientType.NONE,
127
- userId: PayloadHelper.getUUID(),
128
- };
129
208
  const url = 'http://example.com';
130
209
  const permanentUrl = url;
131
210
  const summary = 'Summary';
@@ -161,19 +240,11 @@ describe('ConversationService', () => {
161
240
  }));
162
241
  });
163
242
  it('does not add link previews', () => {
164
- account['apiClient'].context = {
165
- clientType: client_1.ClientType.NONE,
166
- userId: PayloadHelper.getUUID(),
167
- };
168
243
  const text = 'Hello, world!';
169
244
  const textMessage = account.service.conversation.messageBuilder.createText({ conversationId: '', text }).build();
170
245
  expect(textMessage.content.linkPreviews).toBeUndefined();
171
246
  });
172
247
  it('uploads link previews', async () => {
173
- account['apiClient'].context = {
174
- clientType: client_1.ClientType.NONE,
175
- userId: PayloadHelper.getUUID(),
176
- };
177
248
  spyOn(account.service.asset, 'uploadImageAsset').and.returnValue(Promise.resolve({
178
249
  cipherText: Buffer.from([]),
179
250
  key: '',
@@ -204,10 +275,6 @@ describe('ConversationService', () => {
204
275
  }));
205
276
  });
206
277
  it('adds mentions correctly', () => {
207
- account['apiClient'].context = {
208
- clientType: client_1.ClientType.NONE,
209
- userId: PayloadHelper.getUUID(),
210
- };
211
278
  const text = 'Hello @user!';
212
279
  const mention = {
213
280
  length: 5,
@@ -224,19 +291,11 @@ describe('ConversationService', () => {
224
291
  expect(textMessage.content.mentions[0]).toEqual(jasmine.objectContaining(mention));
225
292
  });
226
293
  it('does not add mentions', () => {
227
- account['apiClient'].context = {
228
- clientType: client_1.ClientType.NONE,
229
- userId: PayloadHelper.getUUID(),
230
- };
231
294
  const text = 'Hello, world!';
232
295
  const textMessage = account.service.conversation.messageBuilder.createText({ conversationId: '', text }).build();
233
296
  expect(textMessage.content.mentions).toBeUndefined();
234
297
  });
235
298
  it('adds a quote correctly', () => {
236
- account['apiClient'].context = {
237
- clientType: client_1.ClientType.NONE,
238
- userId: PayloadHelper.getUUID(),
239
- };
240
299
  const quoteId = PayloadHelper.getUUID();
241
300
  const text = 'I totally agree.';
242
301
  const quote = {
@@ -251,19 +310,11 @@ describe('ConversationService', () => {
251
310
  expect(replyMessage.content.quote).toEqual(jasmine.objectContaining(quote));
252
311
  });
253
312
  it('does not add a quote', () => {
254
- account['apiClient'].context = {
255
- clientType: client_1.ClientType.NONE,
256
- userId: PayloadHelper.getUUID(),
257
- };
258
313
  const text = 'Hello, world!';
259
314
  const textMessage = account.service.conversation.messageBuilder.createText({ conversationId: '', text }).build();
260
315
  expect(textMessage.content.quote).toBeUndefined();
261
316
  });
262
317
  it('adds a read confirmation request correctly', () => {
263
- account['apiClient'].context = {
264
- clientType: client_1.ClientType.NONE,
265
- userId: PayloadHelper.getUUID(),
266
- };
267
318
  const text = 'Please read me';
268
319
  const replyMessage = account
269
320
  .service.conversation.messageBuilder.createText({ conversationId: '', text })
@@ -273,10 +324,6 @@ describe('ConversationService', () => {
273
324
  expect(replyMessage.content.expectsReadConfirmation).toEqual(true);
274
325
  });
275
326
  it('adds a legal hold status', () => {
276
- account['apiClient'].context = {
277
- clientType: client_1.ClientType.NONE,
278
- userId: PayloadHelper.getUUID(),
279
- };
280
327
  const text = 'Please read me';
281
328
  const firstMessage = account
282
329
  .service.conversation.messageBuilder.createText({ conversationId: '', text })