stream-chat 9.27.1 → 9.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.
@@ -66,6 +66,7 @@ __export(index_exports, {
66
66
  BuiltinRoles: () => BuiltinRoles,
67
67
  Campaign: () => Campaign,
68
68
  Channel: () => Channel,
69
+ ChannelBatchUpdater: () => ChannelBatchUpdater,
69
70
  ChannelManager: () => ChannelManager,
70
71
  ChannelSearchSource: () => ChannelSearchSource,
71
72
  ChannelState: () => ChannelState,
@@ -335,6 +336,190 @@ var Campaign = class {
335
336
  }
336
337
  };
337
338
 
339
+ // src/channel_batch_updater.ts
340
+ var ChannelBatchUpdater = class {
341
+ constructor(client) {
342
+ this.client = client;
343
+ }
344
+ // Member operations
345
+ /**
346
+ * addMembers - Add members to channels matching the filter
347
+ *
348
+ * @param {UpdateChannelsBatchFilters} filter Filter to select channels
349
+ * @param {string[] | NewMemberPayload[]} members Members to add
350
+ * @return {Promise<APIResponse & UpdateChannelsBatchResponse>} The server response
351
+ */
352
+ async addMembers(filter, members) {
353
+ return await this.client.updateChannelsBatch({
354
+ operation: "addMembers",
355
+ filter,
356
+ members
357
+ });
358
+ }
359
+ /**
360
+ * removeMembers - Remove members from channels matching the filter
361
+ *
362
+ * @param {UpdateChannelsBatchFilters} filter Filter to select channels
363
+ * @param {string[]} members Member IDs to remove
364
+ * @return {Promise<APIResponse & UpdateChannelsBatchResponse>} The server response
365
+ */
366
+ async removeMembers(filter, members) {
367
+ return await this.client.updateChannelsBatch({
368
+ operation: "removeMembers",
369
+ filter,
370
+ members
371
+ });
372
+ }
373
+ /**
374
+ * inviteMembers - Invite members to channels matching the filter
375
+ *
376
+ * @param {UpdateChannelsBatchFilters} filter Filter to select channels
377
+ * @param {string[] | NewMemberPayload[]} members Members to invite
378
+ * @return {Promise<APIResponse & UpdateChannelsBatchResponse>} The server response
379
+ */
380
+ async inviteMembers(filter, members) {
381
+ return await this.client.updateChannelsBatch({
382
+ operation: "inviteMembers",
383
+ filter,
384
+ members
385
+ });
386
+ }
387
+ /**
388
+ * addModerators - Add moderators to channels matching the filter
389
+ *
390
+ * @param {UpdateChannelsBatchFilters} filter Filter to select channels
391
+ * @param {string[]} members Member IDs to promote to moderator
392
+ * @return {Promise<APIResponse & UpdateChannelsBatchResponse>} The server response
393
+ */
394
+ async addModerators(filter, members) {
395
+ return await this.client.updateChannelsBatch({
396
+ operation: "addModerators",
397
+ filter,
398
+ members
399
+ });
400
+ }
401
+ /**
402
+ * demoteModerators - Remove moderator role from members in channels matching the filter
403
+ *
404
+ * @param {UpdateChannelsBatchFilters} filter Filter to select channels
405
+ * @param {string[]} members Member IDs to demote
406
+ * @return {Promise<APIResponse & UpdateChannelsBatchResponse>} The server response
407
+ */
408
+ async demoteModerators(filter, members) {
409
+ return await this.client.updateChannelsBatch({
410
+ operation: "demoteModerators",
411
+ filter,
412
+ members
413
+ });
414
+ }
415
+ /**
416
+ * assignRoles - Assign roles to members in channels matching the filter
417
+ *
418
+ * @param {UpdateChannelsBatchFilters} filter Filter to select channels
419
+ * @param {NewMemberPayload[]} members Members with role assignments
420
+ * @return {Promise<APIResponse & UpdateChannelsBatchResponse>} The server response
421
+ */
422
+ async assignRoles(filter, members) {
423
+ return await this.client.updateChannelsBatch({
424
+ operation: "assignRoles",
425
+ filter,
426
+ members
427
+ });
428
+ }
429
+ // Visibility operations
430
+ /**
431
+ * hide - Hide channels matching the filter
432
+ *
433
+ * @param {UpdateChannelsBatchFilters} filter Filter to select channels
434
+ * @return {Promise<APIResponse & UpdateChannelsBatchResponse>} The server response
435
+ */
436
+ async hide(filter) {
437
+ return await this.client.updateChannelsBatch({
438
+ operation: "hide",
439
+ filter
440
+ });
441
+ }
442
+ /**
443
+ * show - Show channels matching the filter
444
+ *
445
+ * @param {UpdateChannelsBatchFilters} filter Filter to select channels
446
+ * @return {Promise<APIResponse & UpdateChannelsBatchResponse>} The server response
447
+ */
448
+ async show(filter) {
449
+ return await this.client.updateChannelsBatch({
450
+ operation: "show",
451
+ filter
452
+ });
453
+ }
454
+ /**
455
+ * archive - Archive channels matching the filter
456
+ *
457
+ * @param {UpdateChannelsBatchFilters} filter Filter to select channels
458
+ * @return {Promise<APIResponse & UpdateChannelsBatchResponse>} The server response
459
+ */
460
+ async archive(filter) {
461
+ return await this.client.updateChannelsBatch({
462
+ operation: "archive",
463
+ filter
464
+ });
465
+ }
466
+ /**
467
+ * unarchive - Unarchive channels matching the filter
468
+ *
469
+ * @param {UpdateChannelsBatchFilters} filter Filter to select channels
470
+ * @return {Promise<APIResponse & UpdateChannelsBatchResponse>} The server response
471
+ */
472
+ async unarchive(filter) {
473
+ return await this.client.updateChannelsBatch({
474
+ operation: "unarchive",
475
+ filter
476
+ });
477
+ }
478
+ // Data operations
479
+ /**
480
+ * updateData - Update data on channels matching the filter
481
+ *
482
+ * @param {UpdateChannelsBatchFilters} filter Filter to select channels
483
+ * @param {BatchChannelDataUpdate} data Data to update
484
+ * @return {Promise<APIResponse & UpdateChannelsBatchResponse>} The server response
485
+ */
486
+ async updateData(filter, data) {
487
+ return await this.client.updateChannelsBatch({
488
+ operation: "updateData",
489
+ filter,
490
+ data
491
+ });
492
+ }
493
+ /**
494
+ * addFilterTags - Add filter tags to channels matching the filter
495
+ *
496
+ * @param {UpdateChannelsBatchFilters} filter Filter to select channels
497
+ * @param {string[]} tags Tags to add
498
+ * @return {Promise<APIResponse & UpdateChannelsBatchResponse>} The server response
499
+ */
500
+ async addFilterTags(filter, tags) {
501
+ return await this.client.updateChannelsBatch({
502
+ operation: "addFilterTags",
503
+ filter,
504
+ filter_tags_update: tags
505
+ });
506
+ }
507
+ /**
508
+ * removeFilterTags - Remove filter tags from channels matching the filter
509
+ *
510
+ * @param {UpdateChannelsBatchFilters} filter Filter to select channels
511
+ * @param {string[]} tags Tags to remove
512
+ * @return {Promise<APIResponse & UpdateChannelsBatchResponse>} The server response
513
+ */
514
+ async removeFilterTags(filter, tags) {
515
+ return await this.client.updateChannelsBatch({
516
+ operation: "removeFilterTags",
517
+ filter,
518
+ filter_tags_update: tags
519
+ });
520
+ }
521
+ };
522
+
338
523
  // src/client.ts
339
524
  var import_axios3 = __toESM(require("axios"));
340
525
  var import_https = __toESM(require_https());
@@ -1163,6 +1348,7 @@ var runDetached = (callback, options) => {
1163
1348
  }
1164
1349
  promise.catch(onError);
1165
1350
  };
1351
+ var isBlockedMessage = (message) => message.type === "error" && (message.moderation_details?.action === "MESSAGE_RESPONSE_ACTION_REMOVE" || message.moderation?.action === "remove");
1166
1352
 
1167
1353
  // src/channel_state.ts
1168
1354
  var messageSetBounds = (a, b) => ({
@@ -1708,6 +1894,10 @@ var ChannelState = class {
1708
1894
  const filteredMessages = this.latestMessages.filter(
1709
1895
  (message) => message.type !== "error"
1710
1896
  );
1897
+ const blockedMessages = this.latestMessages.filter(isBlockedMessage);
1898
+ for (const message of blockedMessages) {
1899
+ this._channel.getClient().offlineDb?.hardDeleteMessage({ id: message.id });
1900
+ }
1711
1901
  this.latestMessages = filteredMessages;
1712
1902
  }
1713
1903
  /**
@@ -4160,8 +4350,9 @@ var createCompositionDataCleanupMiddleware = (composer) => ({
4160
4350
  state,
4161
4351
  next
4162
4352
  }) => {
4353
+ const messageType = !composer.editedMessage?.type || composer.editedMessage.type === "error" ? "regular" : composer.editedMessage.type;
4163
4354
  const common = {
4164
- type: composer.editedMessage?.type ?? "regular"
4355
+ type: messageType
4165
4356
  };
4166
4357
  const editedMessagePayloadToBeSent = composer.editedMessage ? toUpdatedMessagePayload(composer.editedMessage) : void 0;
4167
4358
  return next({
@@ -14734,7 +14925,7 @@ var StreamChat = class _StreamChat {
14734
14925
  if (this.userAgent) {
14735
14926
  return this.userAgent;
14736
14927
  }
14737
- const version = "9.27.1";
14928
+ const version = "9.28.0";
14738
14929
  const clientBundle = "browser-cjs";
14739
14930
  let userAgentString = "";
14740
14931
  if (this.sdkIdentifier) {
@@ -15033,6 +15224,14 @@ var StreamChat = class _StreamChat {
15033
15224
  }
15034
15225
  return new Campaign(this, idOrData, data);
15035
15226
  }
15227
+ /**
15228
+ * channelBatchUpdater - Returns a ChannelBatchUpdater instance for batch channel operations
15229
+ *
15230
+ * @return {ChannelBatchUpdater} A ChannelBatchUpdater instance
15231
+ */
15232
+ channelBatchUpdater() {
15233
+ return new ChannelBatchUpdater(this);
15234
+ }
15036
15235
  segment(type, idOrData, data) {
15037
15236
  if (typeof idOrData === "string") {
15038
15237
  return new Segment(this, type, idOrData, data);
@@ -15895,6 +16094,18 @@ var StreamChat = class _StreamChat {
15895
16094
  syncDeliveredCandidates(collections) {
15896
16095
  this.messageDeliveryReporter.syncDeliveredCandidates(collections);
15897
16096
  }
16097
+ /**
16098
+ * Update Channels Batch
16099
+ *
16100
+ * @param {UpdateChannelsBatchOptions} payload for updating channels in batch
16101
+ * @return {Promise<APIResponse & UpdateChannelsBatchResponse>} The server response
16102
+ */
16103
+ async updateChannelsBatch(payload) {
16104
+ return await this.put(
16105
+ this.baseURL + `/channels/batch`,
16106
+ payload
16107
+ );
16108
+ }
15898
16109
  };
15899
16110
 
15900
16111
  // src/events.ts