@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.
@@ -1 +1 @@
1
- {"version":3,"file":"ConversationService.test.node.js","sourceRoot":"","sources":["ConversationService.test.node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConversationService.test.node.js","sourceRoot":"","sources":["ConversationService.test.node.ts"],"names":[],"mappings":"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"}
@@ -21,7 +21,7 @@ import {APIClient} from '@wireapp/api-client';
21
21
  import {ClientType} from '@wireapp/api-client/src/client';
22
22
  import {LegalHoldStatus} from '@wireapp/protocol-messaging';
23
23
  import {MemoryEngine} from '@wireapp/store-engine';
24
- import {PayloadBundleSource, PayloadBundleState, PayloadBundleType} from '.';
24
+ import {MessageTargetMode, PayloadBundleSource, PayloadBundleState, PayloadBundleType} from '.';
25
25
 
26
26
  import {Account} from '../Account';
27
27
  import * as PayloadHelper from '../test/PayloadHelper';
@@ -37,6 +37,14 @@ describe('ConversationService', () => {
37
37
  await account.initServices(new MemoryEngine());
38
38
  });
39
39
 
40
+ beforeEach(() => {
41
+ account['apiClient'].context = {
42
+ clientType: ClientType.NONE,
43
+ userId: PayloadHelper.getUUID(),
44
+ clientId: PayloadHelper.getUUID(),
45
+ };
46
+ });
47
+
40
48
  describe('"send"', () => {
41
49
  const baseMessage = {
42
50
  conversation: PayloadHelper.getUUID(),
@@ -57,11 +65,6 @@ describe('ConversationService', () => {
57
65
  ];
58
66
  messages.forEach(payloadBundle => {
59
67
  it(`calls callbacks when sending '${payloadBundle.type}' message is starting and successful`, async () => {
60
- account['apiClient'].context = {
61
- clientType: ClientType.NONE,
62
- userId: PayloadHelper.getUUID(),
63
- clientId: PayloadHelper.getUUID(),
64
- };
65
68
  const conversationService = account.service!.conversation;
66
69
  const sentTime = new Date().toISOString();
67
70
  spyOn<any>(conversationService, 'sendGenericMessage').and.returnValue(Promise.resolve({time: sentTime}));
@@ -78,12 +81,135 @@ describe('ConversationService', () => {
78
81
  });
79
82
  });
80
83
 
84
+ describe('targetted messages', () => {
85
+ const message: OtrMessage = {...baseMessage, type: PayloadBundleType.TEXT, content: {text: 'test'}};
86
+ it('fails if no userIds are given', done => {
87
+ const conversationService = account.service!.conversation;
88
+ conversationService
89
+ .send({
90
+ payloadBundle: message,
91
+ targetMode: MessageTargetMode.USERS,
92
+ })
93
+ .catch(error => {
94
+ expect(error.message).toContain('no userIds are given');
95
+ done();
96
+ });
97
+ });
98
+
99
+ [{user1: ['client1'], user2: ['client11', 'client12']}, ['user1', 'user2']].forEach(recipients => {
100
+ it(`forwards the list of users to report (${JSON.stringify(recipients)})`, async () => {
101
+ const conversationService = account.service!.conversation;
102
+ spyOn<any>(conversationService, 'getRecipientsForConversation').and.returnValue(Promise.resolve({} as any));
103
+ spyOn(conversationService['messageService'], 'sendMessage').and.returnValue(Promise.resolve({} as any));
104
+ await conversationService.send({
105
+ payloadBundle: message,
106
+ targetMode: MessageTargetMode.USERS,
107
+ userIds: recipients,
108
+ });
109
+
110
+ expect(conversationService['messageService'].sendMessage).toHaveBeenCalledWith(
111
+ jasmine.any(String),
112
+ jasmine.any(Object),
113
+ jasmine.any(Uint8Array),
114
+ jasmine.objectContaining({reportMissing: ['user1', 'user2']}),
115
+ );
116
+ });
117
+ });
118
+
119
+ [
120
+ {domain1: {user1: ['client1'], user2: ['client11', 'client12']}, domain2: {user3: ['client1']}},
121
+ [
122
+ {id: 'user1', domain: 'domain1'},
123
+ {id: 'user2', domain: 'domain1'},
124
+ {id: 'user3', domain: 'domain2'},
125
+ ],
126
+ ].forEach(recipients => {
127
+ it(`forwards the list of users to report for federated message (${JSON.stringify(recipients)})`, async () => {
128
+ const conversationService = account.service!.conversation;
129
+ spyOn<any>(conversationService, 'getQualifiedRecipientsForConversation').and.returnValue(
130
+ Promise.resolve({} as any),
131
+ );
132
+ spyOn(conversationService['messageService'], 'sendFederatedMessage').and.returnValue(
133
+ Promise.resolve({} as any),
134
+ );
135
+ await conversationService.send({
136
+ conversationDomain: 'domain1',
137
+ payloadBundle: message,
138
+ targetMode: MessageTargetMode.USERS,
139
+ userIds: recipients,
140
+ });
141
+
142
+ expect(conversationService['messageService'].sendFederatedMessage).toHaveBeenCalledWith(
143
+ jasmine.any(String),
144
+ jasmine.any(Object),
145
+ jasmine.any(Uint8Array),
146
+ jasmine.objectContaining({
147
+ reportMissing: [
148
+ {id: 'user1', domain: 'domain1'},
149
+ {id: 'user2', domain: 'domain1'},
150
+ {id: 'user3', domain: 'domain2'},
151
+ ],
152
+ }),
153
+ );
154
+ });
155
+ });
156
+
157
+ [{user1: ['client1'], user2: ['client11', 'client12']}, ['user1', 'user2']].forEach(recipients => {
158
+ it(`ignores all missing user/client pair if targetMode is USER_CLIENTS`, async () => {
159
+ const conversationService = account.service!.conversation;
160
+ spyOn<any>(conversationService, 'getRecipientsForConversation').and.returnValue(Promise.resolve({} as any));
161
+ spyOn(conversationService['messageService'], 'sendMessage').and.returnValue(Promise.resolve({} as any));
162
+ await conversationService.send({
163
+ payloadBundle: message,
164
+ targetMode: MessageTargetMode.USERS_CLIENTS,
165
+ userIds: recipients,
166
+ });
167
+
168
+ expect(conversationService['messageService'].sendMessage).toHaveBeenCalledWith(
169
+ jasmine.any(String),
170
+ jasmine.any(Object),
171
+ jasmine.any(Uint8Array),
172
+ jasmine.objectContaining({reportMissing: false}),
173
+ );
174
+ });
175
+ });
176
+
177
+ [
178
+ {domain1: {user1: ['client1'], user2: ['client11', 'client12']}, domain2: {user3: ['client1']}},
179
+ [
180
+ {id: 'user1', domain: 'domain1'},
181
+ {id: 'user2', domain: 'domain1'},
182
+ {id: 'user3', domain: 'domain2'},
183
+ ],
184
+ ].forEach(recipients => {
185
+ it(`ignores all missing user/client pair if targetMode is USER_CLIENTS on federated env`, async () => {
186
+ const conversationService = account.service!.conversation;
187
+ spyOn<any>(conversationService, 'getQualifiedRecipientsForConversation').and.returnValue(
188
+ Promise.resolve({} as any),
189
+ );
190
+ spyOn(conversationService['messageService'], 'sendFederatedMessage').and.returnValue(
191
+ Promise.resolve({} as any),
192
+ );
193
+ await conversationService.send({
194
+ conversationDomain: 'domain1',
195
+ payloadBundle: message,
196
+ targetMode: MessageTargetMode.USERS_CLIENTS,
197
+ userIds: recipients,
198
+ });
199
+
200
+ expect(conversationService['messageService'].sendFederatedMessage).toHaveBeenCalledWith(
201
+ jasmine.any(String),
202
+ jasmine.any(Object),
203
+ jasmine.any(Uint8Array),
204
+ jasmine.objectContaining({
205
+ reportMissing: false,
206
+ }),
207
+ );
208
+ });
209
+ });
210
+ });
211
+
81
212
  it(`cancels message sending if onStart returns false`, async () => {
82
- account['apiClient'].context = {
83
- clientType: ClientType.NONE,
84
- userId: PayloadHelper.getUUID(),
85
- clientId: PayloadHelper.getUUID(),
86
- };
87
213
  const conversationService = account.service!.conversation;
88
214
  spyOn<any>(conversationService, 'sendGenericMessage');
89
215
  const message: OtrMessage = {...baseMessage, type: PayloadBundleType.TEXT, content: {text: 'test'}};
@@ -98,11 +224,6 @@ describe('ConversationService', () => {
98
224
  });
99
225
 
100
226
  it(`does not call onSuccess when message was canceled`, async () => {
101
- account['apiClient'].context = {
102
- clientType: ClientType.NONE,
103
- userId: PayloadHelper.getUUID(),
104
- clientId: PayloadHelper.getUUID(),
105
- };
106
227
  const conversationService = account.service!.conversation;
107
228
  spyOn<any>(conversationService, 'sendGenericMessage').and.returnValue(Promise.resolve({time: '', errored: true}));
108
229
  const message: OtrMessage = {...baseMessage, type: PayloadBundleType.TEXT, content: {text: 'test'}};
@@ -118,11 +239,6 @@ describe('ConversationService', () => {
118
239
 
119
240
  describe('"createText"', () => {
120
241
  it('adds link previews correctly', async () => {
121
- account['apiClient'].context = {
122
- clientType: ClientType.NONE,
123
- userId: PayloadHelper.getUUID(),
124
- };
125
-
126
242
  const url = 'http://example.com';
127
243
 
128
244
  const permanentUrl = url;
@@ -165,11 +281,6 @@ describe('ConversationService', () => {
165
281
  });
166
282
 
167
283
  it('does not add link previews', () => {
168
- account['apiClient'].context = {
169
- clientType: ClientType.NONE,
170
- userId: PayloadHelper.getUUID(),
171
- };
172
-
173
284
  const text = 'Hello, world!';
174
285
  const textMessage = account.service!.conversation.messageBuilder.createText({conversationId: '', text}).build();
175
286
 
@@ -177,11 +288,6 @@ describe('ConversationService', () => {
177
288
  });
178
289
 
179
290
  it('uploads link previews', async () => {
180
- account['apiClient'].context = {
181
- clientType: ClientType.NONE,
182
- userId: PayloadHelper.getUUID(),
183
- };
184
-
185
291
  spyOn(account.service!.asset, 'uploadImageAsset').and.returnValue(
186
292
  Promise.resolve({
187
293
  cipherText: Buffer.from([]),
@@ -222,11 +328,6 @@ describe('ConversationService', () => {
222
328
  });
223
329
 
224
330
  it('adds mentions correctly', () => {
225
- account['apiClient'].context = {
226
- clientType: ClientType.NONE,
227
- userId: PayloadHelper.getUUID(),
228
- };
229
-
230
331
  const text = 'Hello @user!';
231
332
 
232
333
  const mention: MentionContent = {
@@ -248,11 +349,6 @@ describe('ConversationService', () => {
248
349
  });
249
350
 
250
351
  it('does not add mentions', () => {
251
- account['apiClient'].context = {
252
- clientType: ClientType.NONE,
253
- userId: PayloadHelper.getUUID(),
254
- };
255
-
256
352
  const text = 'Hello, world!';
257
353
  const textMessage = account.service!.conversation.messageBuilder.createText({conversationId: '', text}).build();
258
354
 
@@ -260,11 +356,6 @@ describe('ConversationService', () => {
260
356
  });
261
357
 
262
358
  it('adds a quote correctly', () => {
263
- account['apiClient'].context = {
264
- clientType: ClientType.NONE,
265
- userId: PayloadHelper.getUUID(),
266
- };
267
-
268
359
  const quoteId = PayloadHelper.getUUID();
269
360
  const text = 'I totally agree.';
270
361
 
@@ -283,11 +374,6 @@ describe('ConversationService', () => {
283
374
  });
284
375
 
285
376
  it('does not add a quote', () => {
286
- account['apiClient'].context = {
287
- clientType: ClientType.NONE,
288
- userId: PayloadHelper.getUUID(),
289
- };
290
-
291
377
  const text = 'Hello, world!';
292
378
  const textMessage = account.service!.conversation.messageBuilder.createText({conversationId: '', text}).build();
293
379
 
@@ -295,11 +381,6 @@ describe('ConversationService', () => {
295
381
  });
296
382
 
297
383
  it('adds a read confirmation request correctly', () => {
298
- account['apiClient'].context = {
299
- clientType: ClientType.NONE,
300
- userId: PayloadHelper.getUUID(),
301
- };
302
-
303
384
  const text = 'Please read me';
304
385
 
305
386
  const replyMessage = account
@@ -312,11 +393,6 @@ describe('ConversationService', () => {
312
393
  });
313
394
 
314
395
  it('adds a legal hold status', () => {
315
- account['apiClient'].context = {
316
- clientType: ClientType.NONE,
317
- userId: PayloadHelper.getUUID(),
318
- };
319
-
320
396
  const text = 'Please read me';
321
397
 
322
398
  const firstMessage = account
@@ -89,6 +89,46 @@ import type {
89
89
  TextMessage,
90
90
  } from './message/OtrMessage';
91
91
 
92
+ export enum MessageTargetMode {
93
+ NONE,
94
+ USERS,
95
+ USERS_CLIENTS,
96
+ }
97
+
98
+ interface MessageSendingOptions {
99
+ /**
100
+ * The federated domain the server runs on. Should only be set for federation enabled envs
101
+ */
102
+ conversationDomain?: string;
103
+
104
+ /**
105
+ * can be either a QualifiedId[] or QualfiedUserClients or undefined. The type has some effect on the behavior of the method.
106
+ * When given undefined the method will fetch both the members of the conversations and their devices. No ClientMismatch can happen in that case
107
+ * 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
108
+ * 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)
109
+ */
110
+ userIds?: string[] | QualifiedId[] | UserClients | QualifiedUserClients;
111
+
112
+ /**
113
+ * Will send the message as a protobuf payload
114
+ */
115
+ sendAsProtobuf?: boolean;
116
+ nativePush?: boolean;
117
+
118
+ /**
119
+ * Will be called whenever there is a clientmismatch returned from the server. Needs to be combined with a userIds of type QualifiedUserClients
120
+ */
121
+ onClientMismatch?: MessageSendingCallbacks['onClientMismatch'];
122
+
123
+ /**
124
+ * Defines the behavior to use when a mismatch happens on backend side:
125
+ * - 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)
126
+ * - 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
127
+ * - 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
128
+ */
129
+ targetMode?: MessageTargetMode;
130
+ }
131
+
92
132
  export interface MessageSendingCallbacks {
93
133
  onStart?: (message: GenericMessage) => void | boolean | Promise<boolean>;
94
134
  onSuccess?: (message: GenericMessage, sentTime?: string) => void;
@@ -263,37 +303,47 @@ export class ConversationService {
263
303
  * @param sendingClientId The clientId from which the message is sent
264
304
  * @param conversationId The conversation in which to send the message
265
305
  * @param genericMessage The payload of the message to send
266
- * @param options.domain? The federated domain the server runs on. Should only be set for federation enabled envs
267
- * @param options.sendAsProtobuf? Will send the message as a protobuf payload
268
- * @param options.userIds? can be either a QualifiedId[] or QualfiedUserClients or undefined. The type has some effect on the behavior of the method.
269
- * When given undefined the method will fetch both the members of the conversations and their devices. No ClientMismatch can happen in that case
270
- * 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
271
- * 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)
272
- * @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
273
306
  * @return Resolves with the message sending status from backend
274
307
  */
275
308
  private async sendGenericMessage(
276
309
  sendingClientId: string,
277
310
  conversationId: string,
278
311
  genericMessage: GenericMessage,
279
- options: {
280
- domain?: string;
281
- userIds?: string[] | QualifiedId[] | UserClients | QualifiedUserClients;
282
- sendAsProtobuf?: boolean;
283
- onClientMismatch?: MessageSendingCallbacks['onClientMismatch'];
284
- } = {},
312
+ {
313
+ conversationDomain,
314
+ userIds,
315
+ nativePush,
316
+ sendAsProtobuf,
317
+ onClientMismatch,
318
+ targetMode = MessageTargetMode.NONE,
319
+ }: MessageSendingOptions = {},
285
320
  ) {
286
- const {domain, userIds} = options;
287
321
  const plainText = GenericMessage.encode(genericMessage).finish();
288
- if (domain) {
322
+ if (targetMode !== MessageTargetMode.NONE && !userIds) {
323
+ throw new Error('Cannot send targetted message when no userIds are given');
324
+ }
325
+ if (conversationDomain) {
289
326
  if (isStringArray(userIds) || isUserClients(userIds)) {
290
327
  throw new Error('Invalid userIds option for sending to federated backend');
291
328
  }
292
- const recipients = await this.getQualifiedRecipientsForConversation({id: conversationId, domain}, userIds);
329
+ const recipients = await this.getQualifiedRecipientsForConversation(
330
+ {id: conversationId, domain: conversationDomain},
331
+ userIds,
332
+ );
333
+ let reportMissing;
334
+ if (targetMode === MessageTargetMode.NONE) {
335
+ reportMissing = isQualifiedUserClients(userIds); // we want to check mismatch in case the consumer gave an exact list of users/devices
336
+ } else if (targetMode === MessageTargetMode.USERS) {
337
+ reportMissing = this.extractQualifiedUserIds(userIds);
338
+ } else {
339
+ // in case the message is fully targetted at user/client pairs, we do not want to report the missing clients or users at all
340
+ reportMissing = false;
341
+ }
293
342
  return this.messageService.sendFederatedMessage(sendingClientId, recipients, plainText, {
294
- conversationId: {id: conversationId, domain},
295
- reportMissing: isQualifiedUserClients(options.userIds), // we want to check mismatch in case the consumer gave an exact list of users/devices
296
- onClientMismatch: mismatch => options.onClientMismatch?.(mismatch, false),
343
+ conversationId: {id: conversationId, domain: conversationDomain},
344
+ nativePush,
345
+ reportMissing,
346
+ onClientMismatch: mismatch => onClientMismatch?.(mismatch, false),
297
347
  });
298
348
  }
299
349
 
@@ -301,14 +351,41 @@ export class ConversationService {
301
351
  throw new Error('Invalid userIds option for sending');
302
352
  }
303
353
  const recipients = await this.getRecipientsForConversation(conversationId, userIds);
354
+ let reportMissing;
355
+ if (targetMode === MessageTargetMode.NONE) {
356
+ reportMissing = isUserClients(userIds); // we want to check mismatch in case the consumer gave an exact list of users/devices
357
+ } else if (targetMode === MessageTargetMode.USERS) {
358
+ reportMissing = this.extractUserIds(userIds);
359
+ } else {
360
+ // in case the message is fully targetted at user/client pairs, we do not want to report the missing clients or users at all
361
+ reportMissing = false;
362
+ }
304
363
  return this.messageService.sendMessage(sendingClientId, recipients, plainText, {
305
364
  conversationId,
306
- sendAsProtobuf: options.sendAsProtobuf,
307
- reportMissing: isUserClients(options.userIds), // we want to check mismatch in case the consumer gave an exact list of users/devices
308
- onClientMismatch: mistmatch => options.onClientMismatch?.(mistmatch, false),
365
+ sendAsProtobuf,
366
+ nativePush,
367
+ reportMissing,
368
+ onClientMismatch: mistmatch => onClientMismatch?.(mistmatch, false),
309
369
  });
310
370
  }
311
371
 
372
+ private extractUserIds(userIds?: string[] | UserClients): string[] | undefined {
373
+ if (!userIds || isStringArray(userIds)) {
374
+ return userIds;
375
+ }
376
+ return Object.keys(userIds);
377
+ }
378
+
379
+ private extractQualifiedUserIds(userIds?: QualifiedId[] | QualifiedUserClients): QualifiedId[] | undefined {
380
+ if (!userIds || isQualifiedIdArray(userIds)) {
381
+ return userIds;
382
+ }
383
+
384
+ return Object.entries(userIds).reduce<QualifiedId[]>((ids, [domain, userClients]) => {
385
+ return ids.concat(Object.keys(userClients).map(userId => ({domain, id: userId})));
386
+ }, []);
387
+ }
388
+
312
389
  private generateButtonActionGenericMessage(payloadBundle: ButtonActionMessage): GenericMessage {
313
390
  return GenericMessage.create({
314
391
  [GenericMessageType.BUTTON_ACTION]: ButtonAction.create(payloadBundle.content),
@@ -591,7 +668,7 @@ export class ConversationService {
591
668
  const {id: selfConversationId} = await this.getSelfConversation();
592
669
 
593
670
  await this.sendGenericMessage(this.apiClient.validatedClientId, selfConversationId, genericMessage, {
594
- domain: conversationDomain,
671
+ conversationDomain,
595
672
  sendAsProtobuf,
596
673
  });
597
674
 
@@ -630,7 +707,7 @@ export class ConversationService {
630
707
 
631
708
  await this.sendGenericMessage(this.apiClient.validatedClientId, selfConversationId, genericMessage, {
632
709
  sendAsProtobuf,
633
- domain: conversationDomain,
710
+ conversationDomain,
634
711
  });
635
712
 
636
713
  return {
@@ -669,7 +746,7 @@ export class ConversationService {
669
746
  const response = await this.sendGenericMessage(this.apiClient.validatedClientId, conversationId, genericMessage, {
670
747
  userIds,
671
748
  sendAsProtobuf,
672
- domain: conversationDomain,
749
+ conversationDomain,
673
750
  });
674
751
  callbacks?.onSuccess?.(genericMessage, response?.time);
675
752
 
@@ -769,9 +846,6 @@ export class ConversationService {
769
846
  * 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)
770
847
  * When given a QualifiedId[] or QualifiedUserClients the method will send the message through the federated API endpoint
771
848
  * When given a string[] or UserClients the method will send the message through the old API endpoint
772
- * @param params.sendAsProtobuf?
773
- * @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)
774
- * @param params.callbacks? Optional callbacks that will be called when the message starts being sent and when it has been succesfully sent.
775
849
  * @param callbacks.onStart Will be called before a message is actually sent. Returning 'false' will prevent the message from being sent
776
850
  * @param callbacks.onClientMismatch? Will be called when a mismatch happens. Returning `false` from the callback will stop the sending attempt
777
851
  * @return resolves with the sent message
@@ -781,14 +855,14 @@ export class ConversationService {
781
855
  userIds,
782
856
  sendAsProtobuf,
783
857
  conversationDomain,
858
+ nativePush,
859
+ targetMode,
784
860
  callbacks,
785
861
  }: {
786
862
  payloadBundle: T;
787
863
  userIds?: string[] | QualifiedId[] | UserClients | QualifiedUserClients;
788
- sendAsProtobuf?: boolean;
789
- conversationDomain?: string;
790
864
  callbacks?: MessageSendingCallbacks;
791
- }): Promise<T> {
865
+ } & MessageSendingOptions): Promise<T> {
792
866
  let genericMessage: GenericMessage;
793
867
  let processedContent: AssetContent | undefined = undefined;
794
868
 
@@ -862,7 +936,9 @@ export class ConversationService {
862
936
  {
863
937
  userIds,
864
938
  sendAsProtobuf,
865
- domain: conversationDomain,
939
+ conversationDomain,
940
+ nativePush,
941
+ targetMode,
866
942
  onClientMismatch: callbacks?.onClientMismatch,
867
943
  },
868
944
  );
@@ -20,8 +20,9 @@ export declare class MessageService {
20
20
  */
21
21
  sendMessage(sendingClientId: string, recipients: UserClients | UserPreKeyBundleMap, plainText: Uint8Array, options?: {
22
22
  conversationId?: string;
23
- reportMissing?: boolean;
23
+ reportMissing?: boolean | string[];
24
24
  sendAsProtobuf?: boolean;
25
+ nativePush?: boolean;
25
26
  onClientMismatch?: (mismatch: ClientMismatch) => void | boolean | Promise<boolean>;
26
27
  }): Promise<ClientMismatch & {
27
28
  errored?: boolean;
@@ -41,7 +42,8 @@ export declare class MessageService {
41
42
  sendFederatedMessage(sendingClientId: string, recipients: QualifiedUserClients | QualifiedUserPreKeyBundleMap, plainText: Uint8Array, options: {
42
43
  assetData?: Uint8Array;
43
44
  conversationId?: QualifiedId;
44
- reportMissing?: boolean;
45
+ reportMissing?: boolean | QualifiedId[];
46
+ nativePush?: boolean;
45
47
  onClientMismatch?: (mismatch: MessageSendingStatus) => void | boolean | Promise<boolean>;
46
48
  }): Promise<MessageSendingStatus & {
47
49
  errored?: boolean;
@@ -33,6 +33,7 @@ const MessageBuilder_1 = require("./MessageBuilder");
33
33
  const protocol_messaging_1 = require("@wireapp/protocol-messaging");
34
34
  const __1 = require("..");
35
35
  const UserClientsUtil_1 = require("./UserClientsUtil");
36
+ const util_1 = require("../../util");
36
37
  class MessageService {
37
38
  constructor(apiClient, cryptographyService) {
38
39
  this.apiClient = apiClient;
@@ -138,15 +139,21 @@ class MessageService {
138
139
  sender: {
139
140
  client: long_1.default.fromString(sendingClientId, 16),
140
141
  },
142
+ nativePush: options.nativePush,
141
143
  });
142
144
  if (options.assetData) {
143
145
  protoMessage.blob = options.assetData;
144
146
  }
145
147
  if (options.reportMissing) {
146
- protoMessage.reportAll = {};
148
+ if ((0, util_1.isQualifiedIdArray)(options.reportMissing)) {
149
+ protoMessage.reportOnly = { userIds: options.reportMissing };
150
+ }
151
+ else {
152
+ protoMessage.reportAll = true;
153
+ }
147
154
  }
148
155
  else {
149
- protoMessage.ignoreAll = {};
156
+ protoMessage.ignoreAll = true;
150
157
  }
151
158
  if (!options.conversationId) {
152
159
  //TODO implement federated broadcast sending
@@ -160,10 +167,15 @@ class MessageService {
160
167
  data: options.assetData ? bazinga64_1.Encoder.toBase64(options.assetData).asString : undefined,
161
168
  recipients: cryptography_1.CryptographyService.convertArrayRecipientsToBase64(recipients),
162
169
  sender: sendingClientId,
170
+ native_push: options.nativePush,
163
171
  };
172
+ const ignoreMissing = options.reportMissing === true ? false : undefined;
173
+ if ((0, util_1.isStringArray)(options.reportMissing)) {
174
+ message.report_missing = options.reportMissing;
175
+ }
164
176
  return !options.conversationId
165
- ? this.apiClient.broadcast.api.postBroadcastMessage(sendingClientId, message, !options.reportMissing)
166
- : this.apiClient.conversation.api.postOTRMessage(sendingClientId, options.conversationId, message, !options.reportMissing);
177
+ ? this.apiClient.broadcast.api.postBroadcastMessage(sendingClientId, message, ignoreMissing)
178
+ : this.apiClient.conversation.api.postOTRMessage(sendingClientId, options.conversationId, message, ignoreMissing);
167
179
  }
168
180
  async generateExternalPayload(plainText) {
169
181
  const asset = await (0, AssetCryptography_node_1.encryptAsset)({ plainText });
@@ -251,12 +263,17 @@ class MessageService {
251
263
  client: long_1.default.fromString(sendingClientId, 16),
252
264
  },
253
265
  });
266
+ const ignoreMissing = options.reportMissing === true ? false : undefined;
267
+ if ((0, util_1.isStringArray)(options.reportMissing)) {
268
+ const encoder = new TextEncoder();
269
+ protoMessage.reportMissing = options.reportMissing.map(userId => ({ uuid: encoder.encode(userId) }));
270
+ }
254
271
  if (options.assetData) {
255
272
  protoMessage.blob = options.assetData;
256
273
  }
257
274
  return !options.conversationId
258
- ? this.apiClient.broadcast.api.postBroadcastProtobufMessage(sendingClientId, protoMessage, !options.reportMissing)
259
- : this.apiClient.conversation.api.postOTRProtobufMessage(sendingClientId, options.conversationId, protoMessage, !options.reportMissing);
275
+ ? this.apiClient.broadcast.api.postBroadcastProtobufMessage(sendingClientId, protoMessage, ignoreMissing)
276
+ : this.apiClient.conversation.api.postOTRProtobufMessage(sendingClientId, options.conversationId, protoMessage, ignoreMissing);
260
277
  }
261
278
  }
262
279
  exports.MessageService = MessageService;