@amityco/ts-sdk-react-native 6.30.3-cae094b.0 → 6.30.4-48268a5.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.
Files changed (43) hide show
  1. package/dist/channelRepository/events/onChannelCreated.d.ts +1 -16
  2. package/dist/channelRepository/events/onChannelCreated.d.ts.map +1 -1
  3. package/dist/channelRepository/events/onChannelDeleted.d.ts +1 -16
  4. package/dist/channelRepository/events/onChannelDeleted.d.ts.map +1 -1
  5. package/dist/channelRepository/events/onChannelFetched.d.ts +1 -16
  6. package/dist/channelRepository/events/onChannelFetched.d.ts.map +1 -1
  7. package/dist/channelRepository/events/onChannelJoined.d.ts +1 -16
  8. package/dist/channelRepository/events/onChannelJoined.d.ts.map +1 -1
  9. package/dist/channelRepository/events/onChannelLeft.d.ts +1 -16
  10. package/dist/channelRepository/events/onChannelLeft.d.ts.map +1 -1
  11. package/dist/channelRepository/events/onChannelMemberAdded.d.ts +0 -15
  12. package/dist/channelRepository/events/onChannelMemberAdded.d.ts.map +1 -1
  13. package/dist/channelRepository/events/onChannelMemberBanned.d.ts +1 -16
  14. package/dist/channelRepository/events/onChannelMemberBanned.d.ts.map +1 -1
  15. package/dist/channelRepository/events/onChannelMemberRemoved.d.ts +1 -16
  16. package/dist/channelRepository/events/onChannelMemberRemoved.d.ts.map +1 -1
  17. package/dist/channelRepository/events/onChannelMemberRoleAdded.d.ts +0 -15
  18. package/dist/channelRepository/events/onChannelMemberRoleAdded.d.ts.map +1 -1
  19. package/dist/channelRepository/events/onChannelMemberRoleRemoved.d.ts +0 -15
  20. package/dist/channelRepository/events/onChannelMemberRoleRemoved.d.ts.map +1 -1
  21. package/dist/channelRepository/events/onChannelMemberUnbanned.d.ts +1 -16
  22. package/dist/channelRepository/events/onChannelMemberUnbanned.d.ts.map +1 -1
  23. package/dist/channelRepository/events/onChannelMuted.d.ts +1 -16
  24. package/dist/channelRepository/events/onChannelMuted.d.ts.map +1 -1
  25. package/dist/channelRepository/events/onChannelUpdated.d.ts +0 -15
  26. package/dist/channelRepository/events/onChannelUpdated.d.ts.map +1 -1
  27. package/dist/index.cjs.js +276 -283
  28. package/dist/index.esm.js +276 -283
  29. package/dist/index.umd.js +3 -3
  30. package/package.json +1 -1
  31. package/src/channelRepository/events/onChannelCreated.ts +26 -22
  32. package/src/channelRepository/events/onChannelDeleted.ts +32 -28
  33. package/src/channelRepository/events/onChannelFetched.ts +29 -20
  34. package/src/channelRepository/events/onChannelJoined.ts +27 -23
  35. package/src/channelRepository/events/onChannelLeft.ts +39 -34
  36. package/src/channelRepository/events/onChannelMemberAdded.ts +34 -23
  37. package/src/channelRepository/events/onChannelMemberBanned.ts +19 -17
  38. package/src/channelRepository/events/onChannelMemberRemoved.ts +32 -23
  39. package/src/channelRepository/events/onChannelMemberRoleAdded.ts +32 -26
  40. package/src/channelRepository/events/onChannelMemberRoleRemoved.ts +30 -26
  41. package/src/channelRepository/events/onChannelMemberUnbanned.ts +31 -23
  42. package/src/channelRepository/events/onChannelMuted.ts +26 -22
  43. package/src/channelRepository/events/onChannelUpdated.ts +32 -29
package/dist/index.esm.js CHANGED
@@ -23859,52 +23859,48 @@ const deleteChannelUnreadByChannelId = (channelId) => {
23859
23859
  }
23860
23860
  };
23861
23861
 
23862
- /**
23863
- * ```js
23864
- * import { onChannelDeleted } from '@amityco/ts-sdk-react-native'
23865
- * const dispose = onChannelDeleted(channel => {
23866
- * // ...
23867
- * })
23868
- * ```
23869
- *
23870
- * Fired when any {@link Amity.Channel} have been deleted
23871
- *
23872
- * @param callback The function to call when the event was fired
23873
- * @returns an {@link Amity.Unsubscriber} function to stop listening
23874
- *
23875
- * @category Channel Events
23876
- */
23862
+ const callbacks$b = [];
23863
+ let mainDisposer$a = null;
23864
+ const dispose$b = (cb) => {
23865
+ const index = callbacks$b.indexOf(cb);
23866
+ if (index > -1) {
23867
+ callbacks$b.splice(index, 1);
23868
+ }
23869
+ if (callbacks$b.length === 0) {
23870
+ mainDisposer$a === null || mainDisposer$a === void 0 ? void 0 : mainDisposer$a();
23871
+ }
23872
+ };
23877
23873
  const onChannelDeleted = (callback) => {
23878
- const client = getActiveClient();
23879
- const filter = async (payload) => {
23880
- const data = await prepareChannelPayload(payload);
23881
- if (client.isUnreadCountEnabled && client.getMarkerSyncConsistentMode()) {
23882
- data.channels.forEach(channel => {
23883
- addFlagIsDeletedSubChannelUnreadByChannelId(channel.channelId);
23884
- deleteChannelUnreadByChannelId(channel.channelId);
23885
- });
23886
- }
23887
- ingestInCache(data);
23888
- callback(data.channels[0]);
23889
- };
23890
- return createEventSubscriber(client, 'onChannelDeleted', 'channel.deleted', filter);
23874
+ if (callbacks$b.length === 0) {
23875
+ const client = getActiveClient();
23876
+ const filter = async (payload) => {
23877
+ const data = await prepareChannelPayload(payload);
23878
+ if (client.isUnreadCountEnabled && client.getMarkerSyncConsistentMode()) {
23879
+ data.channels.forEach(channel => {
23880
+ addFlagIsDeletedSubChannelUnreadByChannelId(channel.channelId);
23881
+ deleteChannelUnreadByChannelId(channel.channelId);
23882
+ });
23883
+ }
23884
+ ingestInCache(data);
23885
+ callbacks$b.forEach(cb => cb(data.channels[0]));
23886
+ };
23887
+ mainDisposer$a = createEventSubscriber(client, 'onChannelDeleted', 'channel.deleted', filter);
23888
+ }
23889
+ callbacks$b.push(callback);
23890
+ return () => dispose$b(callback);
23891
23891
  };
23892
23892
 
23893
- /**
23894
- * ```js
23895
- * import { onChannelMemberBanned } from '@amityco/ts-sdk-react-native'
23896
- * const dispose = onChannelMemberBanned((channel, member) => {
23897
- * // ...
23898
- * })
23899
- * ```
23900
- *
23901
- * Fired when any {@link Amity.InternalUser} has been banned from any {@link Amity.Channel}
23902
- *
23903
- * @param callback The function to call when the event was fired
23904
- * @returns an {@link Amity.Unsubscriber} function to stop listening
23905
- *
23906
- * @category Channel Events
23907
- */
23893
+ const callbacks$a = [];
23894
+ let mainDisposer$9 = null;
23895
+ const dispose$a = (cb) => {
23896
+ const index = callbacks$a.indexOf(cb);
23897
+ if (index > -1) {
23898
+ callbacks$a.splice(index, 1);
23899
+ }
23900
+ if (callbacks$a.length === 0) {
23901
+ mainDisposer$9 === null || mainDisposer$9 === void 0 ? void 0 : mainDisposer$9();
23902
+ }
23903
+ };
23908
23904
  const onChannelMemberBanned = (callback) => {
23909
23905
  const client = getActiveClient();
23910
23906
  const filter = async (payload) => {
@@ -23920,9 +23916,11 @@ const onChannelMemberBanned = (callback) => {
23920
23916
  });
23921
23917
  }
23922
23918
  ingestInCache(preparedPayload);
23923
- callback(channels[0], channelUsers.find(cu => cu.membership === 'banned'));
23919
+ callbacks$a.forEach(cb => cb(channels[0], channelUsers.find(cu => cu.membership === 'banned')));
23924
23920
  };
23925
- return createEventSubscriber(client, 'onChannelMemberBanned', 'channel.banned', filter);
23921
+ mainDisposer$9 = createEventSubscriber(client, 'onChannelMemberBanned', 'channel.banned', filter);
23922
+ callbacks$a.push(callback);
23923
+ return () => dispose$a(callback);
23926
23924
  };
23927
23925
 
23928
23926
  function prepareUserPayload(response) {
@@ -24381,274 +24379,269 @@ const removeChannelMarkerCache = (channel) => {
24381
24379
  dropFromCache(['channelMarker', 'get', id], true);
24382
24380
  };
24383
24381
 
24384
- /**
24385
- * ```js
24386
- * import { onChannelCreated } from '@amityco/ts-sdk-react-native'
24387
- * const dispose = onChannelCreated(channel => {
24388
- * // ...
24389
- * })
24390
- * ```
24391
- *
24392
- * Fired when any {@link Amity.Channel} have been created
24393
- *
24394
- * @param callback The function to call when the event was fired
24395
- * @returns an {@link Amity.Unsubscriber} function to stop listening
24396
- *
24397
- * @category Channel Events
24398
- */
24382
+ const callbacks$9 = [];
24383
+ let mainDisposer$8 = null;
24384
+ const dispose$9 = (cb) => {
24385
+ const index = callbacks$9.indexOf(cb);
24386
+ if (index > -1) {
24387
+ callbacks$9.splice(index, 1);
24388
+ }
24389
+ if (callbacks$9.length === 0) {
24390
+ mainDisposer$8 === null || mainDisposer$8 === void 0 ? void 0 : mainDisposer$8();
24391
+ }
24392
+ };
24399
24393
  const onChannelCreated = (callback) => {
24400
- const client = getActiveClient();
24401
- const filter = async (payload) => {
24402
- const data = await prepareChannelPayload(payload);
24403
- ingestInCache(data);
24404
- callback(data.channels[0]);
24405
- };
24406
- return createEventSubscriber(client, 'onChannelCreated', 'channel.created', filter);
24394
+ if (callbacks$9.length === 0) {
24395
+ const client = getActiveClient();
24396
+ const filter = async (payload) => {
24397
+ const data = await prepareChannelPayload(payload);
24398
+ ingestInCache(data);
24399
+ callbacks$9.forEach(cb => cb(data.channels[0]));
24400
+ };
24401
+ mainDisposer$8 = createEventSubscriber(client, 'onChannelCreated', 'channel.created', filter);
24402
+ }
24403
+ callbacks$9.push(callback);
24404
+ return () => dispose$9(callback);
24407
24405
  };
24408
24406
 
24409
- /**
24410
- * ```js
24411
- * import { onChannelUpdated } from '@amityco/ts-sdk-react-native'
24412
- * const dispose = onChannelUpdated(channel => {
24413
- * // ...
24414
- * })
24415
- * ```
24416
- *
24417
- * Fired when any {@link Amity.Channel} have been updated
24418
- *
24419
- * @param callback The function to call when the event was fired
24420
- * @returns an {@link Amity.Unsubscriber} function to stop listening
24421
- *
24422
- * @category Channel Events
24423
- */
24407
+ const callbacks$8 = [];
24408
+ const mainDisposers = [];
24409
+ const dispose$8 = (cb) => {
24410
+ const index = callbacks$8.indexOf(cb);
24411
+ if (index > -1) {
24412
+ callbacks$8.splice(index, 1);
24413
+ }
24414
+ if (callbacks$8.length === 0) {
24415
+ mainDisposers.forEach(fn => fn());
24416
+ }
24417
+ };
24424
24418
  const onChannelUpdated = (callback) => {
24425
24419
  const client = getActiveClient();
24426
- const filter = async (payload) => {
24427
- const data = await prepareChannelPayload(payload);
24428
- ingestInCache(data);
24429
- callback(data.channels[0]);
24430
- };
24431
- const disposers = [
24432
- createEventSubscriber(client, 'onChannelUpdated', 'channel.updated', filter),
24433
- createEventSubscriber(client, 'onChannelUpdated', 'local.channel.updated', payload => callback(payload.channels[0])),
24434
- ];
24435
- return () => {
24436
- disposers.forEach(fn => fn());
24437
- };
24420
+ if (callbacks$8.length === 0) {
24421
+ const filter = async (payload) => {
24422
+ const data = await prepareChannelPayload(payload);
24423
+ ingestInCache(data);
24424
+ callbacks$8.forEach(cb => cb(data.channels[0]));
24425
+ };
24426
+ mainDisposers.push(createEventSubscriber(client, 'onChannelUpdated', 'channel.updated', filter));
24427
+ mainDisposers.push(createEventSubscriber(client, 'onChannelUpdated', 'local.channel.updated', payload => callbacks$8.forEach(cb => cb(payload.channels[0]))));
24428
+ }
24429
+ callbacks$8.push(callback);
24430
+ return () => dispose$8(callback);
24438
24431
  };
24439
24432
 
24440
- /**
24441
- * ```js
24442
- * import { onChannelJoined } from '@amityco/ts-sdk-react-native'
24443
- * const dispose = onChannelJoined((channel, member) => {
24444
- * // ...
24445
- * })
24446
- * ```
24447
- *
24448
- * Fired when any {@link Amity.Channel} was joined
24449
- *
24450
- * @param callback The function to call when the event was fired
24451
- * @returns an {@link Amity.Unsubscriber} function to stop listening
24452
- *
24453
- * @category Channel Events
24454
- */
24433
+ const callbacks$7 = [];
24434
+ let mainDisposer$7 = null;
24435
+ const dispose$7 = (cb) => {
24436
+ const index = callbacks$7.indexOf(cb);
24437
+ if (index > -1) {
24438
+ callbacks$7.splice(index, 1);
24439
+ }
24440
+ if (callbacks$7.length === 0) {
24441
+ mainDisposer$7 === null || mainDisposer$7 === void 0 ? void 0 : mainDisposer$7();
24442
+ }
24443
+ };
24455
24444
  const onChannelJoined = (callback) => {
24456
- const client = getActiveClient();
24457
- const filter = async (payload) => {
24458
- const preparedPayload = await prepareChannelPayload(payload);
24459
- const { channels, channelUsers } = preparedPayload;
24460
- ingestInCache(preparedPayload);
24461
- callback(channels[0], channelUsers[0]);
24462
- };
24463
- return createEventSubscriber(client, 'onChannelJoined', 'channel.joined', filter);
24445
+ if (callbacks$7.length === 0) {
24446
+ const client = getActiveClient();
24447
+ const filter = async (payload) => {
24448
+ const preparedPayload = await prepareChannelPayload(payload);
24449
+ const { channels, channelUsers } = preparedPayload;
24450
+ ingestInCache(preparedPayload);
24451
+ callbacks$7.forEach(cb => cb(channels[0], channelUsers[0]));
24452
+ };
24453
+ mainDisposer$7 = createEventSubscriber(client, 'onChannelJoined', 'channel.joined', filter);
24454
+ }
24455
+ callbacks$7.push(callback);
24456
+ return () => dispose$7(callback);
24464
24457
  };
24465
24458
 
24466
- /**
24467
- * ```js
24468
- * import { onChannelLeft } from '@amityco/ts-sdk-react-native'
24469
- * const dispose = onChannelLeft((channel, member) => {
24470
- * // ...
24471
- * })
24472
- * ```
24473
- *
24474
- * Fired when any {@link Amity.Channel} was left
24475
- *
24476
- * @param callback The function to call when the event was fired
24477
- * @returns an {@link Amity.Unsubscriber} function to stop listening
24478
- *
24479
- * @category Channel Events
24480
- */
24459
+ const callbacks$6 = [];
24460
+ let mainDisposer$6 = null;
24461
+ const dispose$6 = (cb) => {
24462
+ const index = callbacks$6.indexOf(cb);
24463
+ if (index > -1) {
24464
+ callbacks$6.splice(index, 1);
24465
+ }
24466
+ if (callbacks$6.length === 0) {
24467
+ mainDisposer$6 === null || mainDisposer$6 === void 0 ? void 0 : mainDisposer$6();
24468
+ }
24469
+ };
24481
24470
  const onChannelLeft = (callback) => {
24482
- const client = getActiveClient();
24483
- const filter = async (payload) => {
24484
- const { userId } = getActiveClient();
24485
- const { channelUsers: leftUsers } = payload;
24486
- const isLeftByMe = leftUsers.some(user => user.userId === userId);
24487
- const preparedPayload = await prepareChannelPayload(payload, {
24488
- isMessagePreviewUpdated: isLeftByMe,
24489
- });
24490
- if (client.isUnreadCountEnabled && client.getMarkerSyncConsistentMode() && isLeftByMe) {
24491
- preparedPayload.channels.forEach(channel => {
24492
- addFlagIsDeletedSubChannelUnreadByChannelId(channel.channelId);
24493
- deleteChannelUnreadByChannelId(channel.channelId);
24471
+ if (callbacks$6.length === 0) {
24472
+ const client = getActiveClient();
24473
+ const filter = async (payload) => {
24474
+ const { userId } = getActiveClient();
24475
+ const { channelUsers: leftUsers } = payload;
24476
+ const isLeftByMe = leftUsers.some(user => user.userId === userId);
24477
+ const preparedPayload = await prepareChannelPayload(payload, {
24478
+ isMessagePreviewUpdated: isLeftByMe,
24494
24479
  });
24495
- }
24496
- const { channels, channelUsers } = preparedPayload;
24497
- ingestInCache(preparedPayload);
24498
- callback(channels[0], channelUsers[0]);
24499
- };
24500
- return createEventSubscriber(client, 'onChannelLeft', 'channel.left', filter);
24480
+ if (client.isUnreadCountEnabled && client.getMarkerSyncConsistentMode() && isLeftByMe) {
24481
+ preparedPayload.channels.forEach(channel => {
24482
+ addFlagIsDeletedSubChannelUnreadByChannelId(channel.channelId);
24483
+ deleteChannelUnreadByChannelId(channel.channelId);
24484
+ });
24485
+ }
24486
+ const { channels, channelUsers } = preparedPayload;
24487
+ ingestInCache(preparedPayload);
24488
+ callbacks$6.forEach(cb => cb(channels[0], channelUsers[0]));
24489
+ };
24490
+ mainDisposer$6 = createEventSubscriber(client, 'onChannelLeft', 'channel.left', filter);
24491
+ }
24492
+ callbacks$6.push(callback);
24493
+ return () => dispose$6(callback);
24501
24494
  };
24502
24495
 
24503
- /**
24504
- * ```js
24505
- * import { onChannelMuted } from '@amityco/ts-sdk-react-native'
24506
- * const dispose = onChannelMuted(channel => {
24507
- * // ...
24508
- * })
24509
- * ```
24510
- *
24511
- * Fired when any {@link Amity.Channel} have been muted
24512
- *
24513
- * @param callback The function to call when the event was fired
24514
- * @returns an {@link Amity.Unsubscriber} function to stop listening
24515
- *
24516
- * @category Channel Events
24517
- */
24496
+ const callbacks$5 = [];
24497
+ let mainDisposer$5 = null;
24498
+ const dispose$5 = (cb) => {
24499
+ const index = callbacks$5.indexOf(cb);
24500
+ if (index > -1) {
24501
+ callbacks$5.splice(index, 1);
24502
+ }
24503
+ if (callbacks$5.length === 0) {
24504
+ mainDisposer$5 === null || mainDisposer$5 === void 0 ? void 0 : mainDisposer$5();
24505
+ }
24506
+ };
24518
24507
  const onChannelMuted = (callback) => {
24519
- const client = getActiveClient();
24520
- const filter = async (payload) => {
24521
- const data = await prepareChannelPayload(payload);
24522
- ingestInCache(data);
24523
- callback(data.channels[0]);
24524
- };
24525
- return createEventSubscriber(client, 'onChannelMuted', 'channel.setMuted', filter);
24508
+ if (callbacks$5.length === 0) {
24509
+ const client = getActiveClient();
24510
+ const filter = async (payload) => {
24511
+ const data = await prepareChannelPayload(payload);
24512
+ ingestInCache(data);
24513
+ callbacks$5.forEach(cb => cb(data.channels[0]));
24514
+ };
24515
+ mainDisposer$5 = createEventSubscriber(client, 'onChannelMuted', 'channel.setMuted', filter);
24516
+ }
24517
+ callbacks$5.push(callback);
24518
+ return () => dispose$5(callback);
24526
24519
  };
24527
24520
 
24528
- /**
24529
- * ```js
24530
- * import { onChannelMemberAdded } from '@amityco/ts-sdk-react-native'
24531
- * const dispose = onChannelMemberAdded((channel, member) => {
24532
- * // ...
24533
- * })
24534
- * ```
24535
- *
24536
- * Fired when any {@link Amity.InternalUser} has been added to any {@link Amity.Channel}
24537
- *
24538
- * @param callback The function to call when the event was fired
24539
- * @returns an {@link Amity.Unsubscriber} function to stop listening
24540
- *
24541
- * @category Channel Events
24542
- */
24521
+ const callbacks$4 = [];
24522
+ let mainDisposer$4 = null;
24523
+ const dispose$4 = (cb) => {
24524
+ const index = callbacks$4.indexOf(cb);
24525
+ if (index > -1) {
24526
+ callbacks$4.splice(index, 1);
24527
+ }
24528
+ if (callbacks$4.length === 0) {
24529
+ mainDisposer$4 === null || mainDisposer$4 === void 0 ? void 0 : mainDisposer$4();
24530
+ }
24531
+ };
24543
24532
  const onChannelMemberAdded = (callback) => {
24544
- const client = getActiveClient();
24545
- const filter = async (payload) => {
24546
- const preparedPayload = await prepareChannelPayload(payload);
24547
- const { channels, channelUsers } = preparedPayload;
24548
- ingestInCache(preparedPayload);
24549
- callback(channels[0], channelUsers.find(cu => cu.membership === 'member'));
24550
- };
24551
- return createEventSubscriber(client, 'onChannelMemberAdded', 'channel.membersAdded', filter);
24533
+ if (callbacks$4.length === 0) {
24534
+ const client = getActiveClient();
24535
+ const filter = async (payload) => {
24536
+ const preparedPayload = await prepareChannelPayload(payload);
24537
+ const { channels, channelUsers } = preparedPayload;
24538
+ ingestInCache(preparedPayload);
24539
+ callbacks$4.forEach(cb => cb(channels[0], channelUsers.find(cu => cu.membership === 'member')));
24540
+ };
24541
+ mainDisposer$4 = createEventSubscriber(client, 'onChannelMemberAdded', 'channel.membersAdded', filter);
24542
+ }
24543
+ callbacks$4.push(callback);
24544
+ return () => dispose$4(callback);
24552
24545
  };
24553
24546
 
24554
- /**
24555
- * ```js
24556
- * import { onChannelMemberRemoved } from '@amityco/ts-sdk-react-native'
24557
- * const dispose = onChannelMemberRemoved((channel, member) => {
24558
- * // ...
24559
- * })
24560
- * ```
24561
- *
24562
- * Fired when any {@link Amity.InternalUser} has been removed from any {@link Amity.Channel}
24563
- *
24564
- * @param callback The function to call when the event was fired
24565
- * @returns an {@link Amity.Unsubscriber} function to stop listening
24566
- *
24567
- * @category Channel Events
24568
- */
24547
+ const callbacks$3 = [];
24548
+ let mainDisposer$3 = null;
24549
+ const dispose$3 = (cb) => {
24550
+ const index = callbacks$3.indexOf(cb);
24551
+ if (index > -1) {
24552
+ callbacks$3.splice(index, 1);
24553
+ }
24554
+ if (callbacks$3.length === 0) {
24555
+ mainDisposer$3 === null || mainDisposer$3 === void 0 ? void 0 : mainDisposer$3();
24556
+ }
24557
+ };
24569
24558
  const onChannelMemberRemoved = (callback) => {
24570
- const client = getActiveClient();
24571
- const filter = async (payload) => {
24572
- const preparedPayload = await prepareChannelPayload(payload);
24573
- const { channels, channelUsers } = preparedPayload;
24574
- ingestInCache(preparedPayload);
24575
- callback(channels[0], channelUsers[0]);
24576
- };
24577
- return createEventSubscriber(client, 'onChannelMemberRemoved', 'channel.membersRemoved', filter);
24559
+ if (callbacks$3.length === 0) {
24560
+ const client = getActiveClient();
24561
+ const filter = async (payload) => {
24562
+ const preparedPayload = await prepareChannelPayload(payload);
24563
+ const { channels, channelUsers } = preparedPayload;
24564
+ ingestInCache(preparedPayload);
24565
+ callbacks$3.forEach(cb => cb(channels[0], channelUsers[0]));
24566
+ };
24567
+ mainDisposer$3 = createEventSubscriber(client, 'onChannelMemberRemoved', 'channel.membersRemoved', filter);
24568
+ }
24569
+ callbacks$3.push(callback);
24570
+ return () => dispose$3(callback);
24578
24571
  };
24579
24572
 
24580
- /**
24581
- * ```js
24582
- * import { onChannelMemberUnbanned } from '@amityco/ts-sdk-react-native'
24583
- * const dispose = onChannelMemberUnbanned((channel, member) => {
24584
- * // ...
24585
- * })
24586
- * ```
24587
- *
24588
- * Fired when any {@link Amity.InternalUser} has been unbanned from any {@link Amity.Channel}
24589
- *
24590
- * @param callback The function to call when the event was fired
24591
- * @returns an {@link Amity.Unsubscriber} function to stop listening
24592
- *
24593
- * @category Channel Events
24594
- */
24573
+ const callbacks$2 = [];
24574
+ let mainDisposer$2 = null;
24575
+ const dispose$2 = (cb) => {
24576
+ const index = callbacks$2.indexOf(cb);
24577
+ if (index > -1) {
24578
+ callbacks$2.splice(index, 1);
24579
+ }
24580
+ if (callbacks$2.length === 0) {
24581
+ mainDisposer$2 === null || mainDisposer$2 === void 0 ? void 0 : mainDisposer$2();
24582
+ }
24583
+ };
24595
24584
  const onChannelMemberUnbanned = (callback) => {
24596
- const client = getActiveClient();
24597
- const filter = async (payload) => {
24598
- const preparedPayload = await prepareChannelPayload(payload);
24599
- const { channels, channelUsers } = preparedPayload;
24600
- ingestInCache(preparedPayload);
24601
- callback(channels[0], channelUsers.find(cu => cu.membership === 'none'));
24602
- };
24603
- return createEventSubscriber(client, 'onChannelMemberUnbanned', 'channel.unbanned', filter);
24585
+ if (callbacks$2.length === 0) {
24586
+ const client = getActiveClient();
24587
+ const filter = async (payload) => {
24588
+ const preparedPayload = await prepareChannelPayload(payload);
24589
+ const { channels, channelUsers } = preparedPayload;
24590
+ ingestInCache(preparedPayload);
24591
+ callbacks$2.forEach(cb => cb(channels[0], channelUsers.find(cu => cu.membership === 'none')));
24592
+ };
24593
+ mainDisposer$2 = createEventSubscriber(client, 'onChannelMemberUnbanned', 'channel.unbanned', filter);
24594
+ }
24595
+ callbacks$2.push(callback);
24596
+ return () => dispose$2(callback);
24604
24597
  };
24605
24598
 
24606
- /**
24607
- * ```js
24608
- * import { onChannelMemberRoleAdded } from '@amityco/ts-sdk-react-native'
24609
- * const dispose = onChannelMemberRoleAdded((channel, member) => {
24610
- * // ...
24611
- * })
24612
- * ```
24613
- *
24614
- * Fired when any {@link Amity.channelUsers} 's role has been added to any {@link Amity.Channel}
24615
- *
24616
- * @param callback The function to call when the event was fired
24617
- * @returns an {@link Amity.Unsubscriber} function to stop listening
24618
- *
24619
- * @category Channel Events
24620
- */
24599
+ const callbacks$1 = [];
24600
+ let mainDisposer$1 = null;
24601
+ const dispose$1 = (cb) => {
24602
+ const index = callbacks$1.indexOf(cb);
24603
+ if (index > -1) {
24604
+ callbacks$1.splice(index, 1);
24605
+ }
24606
+ if (callbacks$1.length === 0) {
24607
+ mainDisposer$1 === null || mainDisposer$1 === void 0 ? void 0 : mainDisposer$1();
24608
+ }
24609
+ };
24621
24610
  const onChannelMemberRoleAdded = (callback) => {
24622
- const client = getActiveClient();
24623
- const filter = async (payload) => {
24624
- const { channels, channelUsers } = payload;
24625
- callback(channels[0], channelUsers.find(channelUser => channelUser.membership === 'member'));
24626
- };
24627
- return createEventSubscriber(client, 'onChannelMemberRoleAdded', 'local.channel-moderator.role-added', filter);
24611
+ if (callbacks$1.length === 0) {
24612
+ const client = getActiveClient();
24613
+ const filter = async (payload) => {
24614
+ const { channels, channelUsers } = payload;
24615
+ callbacks$1.forEach(cb => cb(channels[0], channelUsers.find(channelUser => channelUser.membership === 'member')));
24616
+ };
24617
+ mainDisposer$1 = createEventSubscriber(client, 'onChannelMemberRoleAdded', 'local.channel-moderator.role-added', filter);
24618
+ }
24619
+ callbacks$1.push(callback);
24620
+ return () => dispose$1(callback);
24628
24621
  };
24629
24622
 
24630
- /**
24631
- * ```js
24632
- * import { onChannelMemberRoleRemoved } from '@amityco/ts-sdk-react-native'
24633
- * const dispose = onChannelMemberRoleRemoved((channel, member) => {
24634
- * // ...
24635
- * })
24636
- * ```
24637
- *
24638
- * Fired when any {@link Amity.channelUsers} 's role has been deleted to any {@link Amity.Channel}
24639
- *
24640
- * @param callback The function to call when the event was fired
24641
- * @returns an {@link Amity.Unsubscriber} function to stop listening
24642
- *
24643
- * @category Channel Events
24644
- */
24623
+ const callbacks = [];
24624
+ let mainDisposer = null;
24625
+ const dispose = (cb) => {
24626
+ const index = callbacks.indexOf(cb);
24627
+ if (index > -1) {
24628
+ callbacks.splice(index, 1);
24629
+ }
24630
+ if (callbacks.length === 0) {
24631
+ mainDisposer === null || mainDisposer === void 0 ? void 0 : mainDisposer();
24632
+ }
24633
+ };
24645
24634
  const onChannelMemberRoleRemoved = (callback) => {
24646
- const client = getActiveClient();
24647
- const filter = async (payload) => {
24648
- const { channels, channelUsers } = payload;
24649
- callback(channels[0], channelUsers.find(channelUser => channelUser.membership === 'member'));
24650
- };
24651
- return createEventSubscriber(client, 'onChannelMemberRoleRemoved', 'local.channel-moderator.role-removed', filter);
24635
+ if (callbacks.length === 0) {
24636
+ const client = getActiveClient();
24637
+ const filter = async (payload) => {
24638
+ const { channels, channelUsers } = payload;
24639
+ callback(channels[0], channelUsers.find(channelUser => channelUser.membership === 'member'));
24640
+ };
24641
+ mainDisposer = createEventSubscriber(client, 'onChannelMemberRoleRemoved', 'local.channel-moderator.role-removed', filter);
24642
+ }
24643
+ callbacks.push(callback);
24644
+ return () => dispose(callback);
24652
24645
  };
24653
24646
 
24654
24647
  /**