@amityco/ts-sdk-react-native 6.30.2 → 6.30.3

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 +278 -285
  28. package/dist/index.esm.js +278 -285
  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.cjs.js CHANGED
@@ -122,8 +122,8 @@ const PostContentType = Object.freeze({
122
122
 
123
123
  function getVersion() {
124
124
  try {
125
- // the string ''v6.30.2-cjs'' should be replaced by actual value by @rollup/plugin-replace
126
- return 'v6.30.2-cjs';
125
+ // the string ''v6.30.3-cjs'' should be replaced by actual value by @rollup/plugin-replace
126
+ return 'v6.30.3-cjs';
127
127
  }
128
128
  catch (error) {
129
129
  return '__dev__';
@@ -7786,52 +7786,48 @@ const deleteChannelUnreadByChannelId = (channelId) => {
7786
7786
  }
7787
7787
  };
7788
7788
 
7789
- /**
7790
- * ```js
7791
- * import { onChannelDeleted } from '@amityco/ts-sdk-react-native'
7792
- * const dispose = onChannelDeleted(channel => {
7793
- * // ...
7794
- * })
7795
- * ```
7796
- *
7797
- * Fired when any {@link Amity.Channel} have been deleted
7798
- *
7799
- * @param callback The function to call when the event was fired
7800
- * @returns an {@link Amity.Unsubscriber} function to stop listening
7801
- *
7802
- * @category Channel Events
7803
- */
7789
+ const callbacks$b = [];
7790
+ let mainDisposer$a = null;
7791
+ const dispose$b = (cb) => {
7792
+ const index = callbacks$b.indexOf(cb);
7793
+ if (index > -1) {
7794
+ callbacks$b.splice(index, 1);
7795
+ }
7796
+ if (callbacks$b.length === 0) {
7797
+ mainDisposer$a === null || mainDisposer$a === void 0 ? void 0 : mainDisposer$a();
7798
+ }
7799
+ };
7804
7800
  const onChannelDeleted = (callback) => {
7805
- const client = getActiveClient();
7806
- const filter = async (payload) => {
7807
- const data = await prepareChannelPayload(payload);
7808
- if (client.isUnreadCountEnabled && client.getMarkerSyncConsistentMode()) {
7809
- data.channels.forEach(channel => {
7810
- addFlagIsDeletedSubChannelUnreadByChannelId(channel.channelId);
7811
- deleteChannelUnreadByChannelId(channel.channelId);
7812
- });
7813
- }
7814
- ingestInCache(data);
7815
- callback(data.channels[0]);
7816
- };
7817
- return createEventSubscriber(client, 'onChannelDeleted', 'channel.deleted', filter);
7801
+ if (callbacks$b.length === 0) {
7802
+ const client = getActiveClient();
7803
+ const filter = async (payload) => {
7804
+ const data = await prepareChannelPayload(payload);
7805
+ if (client.isUnreadCountEnabled && client.getMarkerSyncConsistentMode()) {
7806
+ data.channels.forEach(channel => {
7807
+ addFlagIsDeletedSubChannelUnreadByChannelId(channel.channelId);
7808
+ deleteChannelUnreadByChannelId(channel.channelId);
7809
+ });
7810
+ }
7811
+ ingestInCache(data);
7812
+ callbacks$b.forEach(cb => cb(data.channels[0]));
7813
+ };
7814
+ mainDisposer$a = createEventSubscriber(client, 'onChannelDeleted', 'channel.deleted', filter);
7815
+ }
7816
+ callbacks$b.push(callback);
7817
+ return () => dispose$b(callback);
7818
7818
  };
7819
7819
 
7820
- /**
7821
- * ```js
7822
- * import { onChannelMemberBanned } from '@amityco/ts-sdk-react-native'
7823
- * const dispose = onChannelMemberBanned((channel, member) => {
7824
- * // ...
7825
- * })
7826
- * ```
7827
- *
7828
- * Fired when any {@link Amity.InternalUser} has been banned from any {@link Amity.Channel}
7829
- *
7830
- * @param callback The function to call when the event was fired
7831
- * @returns an {@link Amity.Unsubscriber} function to stop listening
7832
- *
7833
- * @category Channel Events
7834
- */
7820
+ const callbacks$a = [];
7821
+ let mainDisposer$9 = null;
7822
+ const dispose$a = (cb) => {
7823
+ const index = callbacks$a.indexOf(cb);
7824
+ if (index > -1) {
7825
+ callbacks$a.splice(index, 1);
7826
+ }
7827
+ if (callbacks$a.length === 0) {
7828
+ mainDisposer$9 === null || mainDisposer$9 === void 0 ? void 0 : mainDisposer$9();
7829
+ }
7830
+ };
7835
7831
  const onChannelMemberBanned = (callback) => {
7836
7832
  const client = getActiveClient();
7837
7833
  const filter = async (payload) => {
@@ -7847,9 +7843,11 @@ const onChannelMemberBanned = (callback) => {
7847
7843
  });
7848
7844
  }
7849
7845
  ingestInCache(preparedPayload);
7850
- callback(channels[0], channelUsers.find(cu => cu.membership === 'banned'));
7846
+ callbacks$a.forEach(cb => cb(channels[0], channelUsers.find(cu => cu.membership === 'banned')));
7851
7847
  };
7852
- return createEventSubscriber(client, 'onChannelMemberBanned', 'channel.banned', filter);
7848
+ mainDisposer$9 = createEventSubscriber(client, 'onChannelMemberBanned', 'channel.banned', filter);
7849
+ callbacks$a.push(callback);
7850
+ return () => dispose$a(callback);
7853
7851
  };
7854
7852
 
7855
7853
  function prepareUserPayload(response) {
@@ -8308,274 +8306,269 @@ const removeChannelMarkerCache = (channel) => {
8308
8306
  dropFromCache(['channelMarker', 'get', id], true);
8309
8307
  };
8310
8308
 
8311
- /**
8312
- * ```js
8313
- * import { onChannelCreated } from '@amityco/ts-sdk-react-native'
8314
- * const dispose = onChannelCreated(channel => {
8315
- * // ...
8316
- * })
8317
- * ```
8318
- *
8319
- * Fired when any {@link Amity.Channel} have been created
8320
- *
8321
- * @param callback The function to call when the event was fired
8322
- * @returns an {@link Amity.Unsubscriber} function to stop listening
8323
- *
8324
- * @category Channel Events
8325
- */
8309
+ const callbacks$9 = [];
8310
+ let mainDisposer$8 = null;
8311
+ const dispose$9 = (cb) => {
8312
+ const index = callbacks$9.indexOf(cb);
8313
+ if (index > -1) {
8314
+ callbacks$9.splice(index, 1);
8315
+ }
8316
+ if (callbacks$9.length === 0) {
8317
+ mainDisposer$8 === null || mainDisposer$8 === void 0 ? void 0 : mainDisposer$8();
8318
+ }
8319
+ };
8326
8320
  const onChannelCreated = (callback) => {
8327
- const client = getActiveClient();
8328
- const filter = async (payload) => {
8329
- const data = await prepareChannelPayload(payload);
8330
- ingestInCache(data);
8331
- callback(data.channels[0]);
8332
- };
8333
- return createEventSubscriber(client, 'onChannelCreated', 'channel.created', filter);
8321
+ if (callbacks$9.length === 0) {
8322
+ const client = getActiveClient();
8323
+ const filter = async (payload) => {
8324
+ const data = await prepareChannelPayload(payload);
8325
+ ingestInCache(data);
8326
+ callbacks$9.forEach(cb => cb(data.channels[0]));
8327
+ };
8328
+ mainDisposer$8 = createEventSubscriber(client, 'onChannelCreated', 'channel.created', filter);
8329
+ }
8330
+ callbacks$9.push(callback);
8331
+ return () => dispose$9(callback);
8334
8332
  };
8335
8333
 
8336
- /**
8337
- * ```js
8338
- * import { onChannelUpdated } from '@amityco/ts-sdk-react-native'
8339
- * const dispose = onChannelUpdated(channel => {
8340
- * // ...
8341
- * })
8342
- * ```
8343
- *
8344
- * Fired when any {@link Amity.Channel} have been updated
8345
- *
8346
- * @param callback The function to call when the event was fired
8347
- * @returns an {@link Amity.Unsubscriber} function to stop listening
8348
- *
8349
- * @category Channel Events
8350
- */
8334
+ const callbacks$8 = [];
8335
+ const mainDisposers = [];
8336
+ const dispose$8 = (cb) => {
8337
+ const index = callbacks$8.indexOf(cb);
8338
+ if (index > -1) {
8339
+ callbacks$8.splice(index, 1);
8340
+ }
8341
+ if (callbacks$8.length === 0) {
8342
+ mainDisposers.forEach(fn => fn());
8343
+ }
8344
+ };
8351
8345
  const onChannelUpdated = (callback) => {
8352
8346
  const client = getActiveClient();
8353
- const filter = async (payload) => {
8354
- const data = await prepareChannelPayload(payload);
8355
- ingestInCache(data);
8356
- callback(data.channels[0]);
8357
- };
8358
- const disposers = [
8359
- createEventSubscriber(client, 'onChannelUpdated', 'channel.updated', filter),
8360
- createEventSubscriber(client, 'onChannelUpdated', 'local.channel.updated', payload => callback(payload.channels[0])),
8361
- ];
8362
- return () => {
8363
- disposers.forEach(fn => fn());
8364
- };
8347
+ if (callbacks$8.length === 0) {
8348
+ const filter = async (payload) => {
8349
+ const data = await prepareChannelPayload(payload);
8350
+ ingestInCache(data);
8351
+ callbacks$8.forEach(cb => cb(data.channels[0]));
8352
+ };
8353
+ mainDisposers.push(createEventSubscriber(client, 'onChannelUpdated', 'channel.updated', filter));
8354
+ mainDisposers.push(createEventSubscriber(client, 'onChannelUpdated', 'local.channel.updated', payload => callbacks$8.forEach(cb => cb(payload.channels[0]))));
8355
+ }
8356
+ callbacks$8.push(callback);
8357
+ return () => dispose$8(callback);
8365
8358
  };
8366
8359
 
8367
- /**
8368
- * ```js
8369
- * import { onChannelJoined } from '@amityco/ts-sdk-react-native'
8370
- * const dispose = onChannelJoined((channel, member) => {
8371
- * // ...
8372
- * })
8373
- * ```
8374
- *
8375
- * Fired when any {@link Amity.Channel} was joined
8376
- *
8377
- * @param callback The function to call when the event was fired
8378
- * @returns an {@link Amity.Unsubscriber} function to stop listening
8379
- *
8380
- * @category Channel Events
8381
- */
8360
+ const callbacks$7 = [];
8361
+ let mainDisposer$7 = null;
8362
+ const dispose$7 = (cb) => {
8363
+ const index = callbacks$7.indexOf(cb);
8364
+ if (index > -1) {
8365
+ callbacks$7.splice(index, 1);
8366
+ }
8367
+ if (callbacks$7.length === 0) {
8368
+ mainDisposer$7 === null || mainDisposer$7 === void 0 ? void 0 : mainDisposer$7();
8369
+ }
8370
+ };
8382
8371
  const onChannelJoined = (callback) => {
8383
- const client = getActiveClient();
8384
- const filter = async (payload) => {
8385
- const preparedPayload = await prepareChannelPayload(payload);
8386
- const { channels, channelUsers } = preparedPayload;
8387
- ingestInCache(preparedPayload);
8388
- callback(channels[0], channelUsers[0]);
8389
- };
8390
- return createEventSubscriber(client, 'onChannelJoined', 'channel.joined', filter);
8372
+ if (callbacks$7.length === 0) {
8373
+ const client = getActiveClient();
8374
+ const filter = async (payload) => {
8375
+ const preparedPayload = await prepareChannelPayload(payload);
8376
+ const { channels, channelUsers } = preparedPayload;
8377
+ ingestInCache(preparedPayload);
8378
+ callbacks$7.forEach(cb => cb(channels[0], channelUsers[0]));
8379
+ };
8380
+ mainDisposer$7 = createEventSubscriber(client, 'onChannelJoined', 'channel.joined', filter);
8381
+ }
8382
+ callbacks$7.push(callback);
8383
+ return () => dispose$7(callback);
8391
8384
  };
8392
8385
 
8393
- /**
8394
- * ```js
8395
- * import { onChannelLeft } from '@amityco/ts-sdk-react-native'
8396
- * const dispose = onChannelLeft((channel, member) => {
8397
- * // ...
8398
- * })
8399
- * ```
8400
- *
8401
- * Fired when any {@link Amity.Channel} was left
8402
- *
8403
- * @param callback The function to call when the event was fired
8404
- * @returns an {@link Amity.Unsubscriber} function to stop listening
8405
- *
8406
- * @category Channel Events
8407
- */
8386
+ const callbacks$6 = [];
8387
+ let mainDisposer$6 = null;
8388
+ const dispose$6 = (cb) => {
8389
+ const index = callbacks$6.indexOf(cb);
8390
+ if (index > -1) {
8391
+ callbacks$6.splice(index, 1);
8392
+ }
8393
+ if (callbacks$6.length === 0) {
8394
+ mainDisposer$6 === null || mainDisposer$6 === void 0 ? void 0 : mainDisposer$6();
8395
+ }
8396
+ };
8408
8397
  const onChannelLeft = (callback) => {
8409
- const client = getActiveClient();
8410
- const filter = async (payload) => {
8411
- const { userId } = getActiveClient();
8412
- const { channelUsers: leftUsers } = payload;
8413
- const isLeftByMe = leftUsers.some(user => user.userId === userId);
8414
- const preparedPayload = await prepareChannelPayload(payload, {
8415
- isMessagePreviewUpdated: isLeftByMe,
8416
- });
8417
- if (client.isUnreadCountEnabled && client.getMarkerSyncConsistentMode() && isLeftByMe) {
8418
- preparedPayload.channels.forEach(channel => {
8419
- addFlagIsDeletedSubChannelUnreadByChannelId(channel.channelId);
8420
- deleteChannelUnreadByChannelId(channel.channelId);
8398
+ if (callbacks$6.length === 0) {
8399
+ const client = getActiveClient();
8400
+ const filter = async (payload) => {
8401
+ const { userId } = getActiveClient();
8402
+ const { channelUsers: leftUsers } = payload;
8403
+ const isLeftByMe = leftUsers.some(user => user.userId === userId);
8404
+ const preparedPayload = await prepareChannelPayload(payload, {
8405
+ isMessagePreviewUpdated: isLeftByMe,
8421
8406
  });
8422
- }
8423
- const { channels, channelUsers } = preparedPayload;
8424
- ingestInCache(preparedPayload);
8425
- callback(channels[0], channelUsers[0]);
8426
- };
8427
- return createEventSubscriber(client, 'onChannelLeft', 'channel.left', filter);
8407
+ if (client.isUnreadCountEnabled && client.getMarkerSyncConsistentMode() && isLeftByMe) {
8408
+ preparedPayload.channels.forEach(channel => {
8409
+ addFlagIsDeletedSubChannelUnreadByChannelId(channel.channelId);
8410
+ deleteChannelUnreadByChannelId(channel.channelId);
8411
+ });
8412
+ }
8413
+ const { channels, channelUsers } = preparedPayload;
8414
+ ingestInCache(preparedPayload);
8415
+ callbacks$6.forEach(cb => cb(channels[0], channelUsers[0]));
8416
+ };
8417
+ mainDisposer$6 = createEventSubscriber(client, 'onChannelLeft', 'channel.left', filter);
8418
+ }
8419
+ callbacks$6.push(callback);
8420
+ return () => dispose$6(callback);
8428
8421
  };
8429
8422
 
8430
- /**
8431
- * ```js
8432
- * import { onChannelMuted } from '@amityco/ts-sdk-react-native'
8433
- * const dispose = onChannelMuted(channel => {
8434
- * // ...
8435
- * })
8436
- * ```
8437
- *
8438
- * Fired when any {@link Amity.Channel} have been muted
8439
- *
8440
- * @param callback The function to call when the event was fired
8441
- * @returns an {@link Amity.Unsubscriber} function to stop listening
8442
- *
8443
- * @category Channel Events
8444
- */
8423
+ const callbacks$5 = [];
8424
+ let mainDisposer$5 = null;
8425
+ const dispose$5 = (cb) => {
8426
+ const index = callbacks$5.indexOf(cb);
8427
+ if (index > -1) {
8428
+ callbacks$5.splice(index, 1);
8429
+ }
8430
+ if (callbacks$5.length === 0) {
8431
+ mainDisposer$5 === null || mainDisposer$5 === void 0 ? void 0 : mainDisposer$5();
8432
+ }
8433
+ };
8445
8434
  const onChannelMuted = (callback) => {
8446
- const client = getActiveClient();
8447
- const filter = async (payload) => {
8448
- const data = await prepareChannelPayload(payload);
8449
- ingestInCache(data);
8450
- callback(data.channels[0]);
8451
- };
8452
- return createEventSubscriber(client, 'onChannelMuted', 'channel.setMuted', filter);
8435
+ if (callbacks$5.length === 0) {
8436
+ const client = getActiveClient();
8437
+ const filter = async (payload) => {
8438
+ const data = await prepareChannelPayload(payload);
8439
+ ingestInCache(data);
8440
+ callbacks$5.forEach(cb => cb(data.channels[0]));
8441
+ };
8442
+ mainDisposer$5 = createEventSubscriber(client, 'onChannelMuted', 'channel.setMuted', filter);
8443
+ }
8444
+ callbacks$5.push(callback);
8445
+ return () => dispose$5(callback);
8453
8446
  };
8454
8447
 
8455
- /**
8456
- * ```js
8457
- * import { onChannelMemberAdded } from '@amityco/ts-sdk-react-native'
8458
- * const dispose = onChannelMemberAdded((channel, member) => {
8459
- * // ...
8460
- * })
8461
- * ```
8462
- *
8463
- * Fired when any {@link Amity.InternalUser} has been added to any {@link Amity.Channel}
8464
- *
8465
- * @param callback The function to call when the event was fired
8466
- * @returns an {@link Amity.Unsubscriber} function to stop listening
8467
- *
8468
- * @category Channel Events
8469
- */
8448
+ const callbacks$4 = [];
8449
+ let mainDisposer$4 = null;
8450
+ const dispose$4 = (cb) => {
8451
+ const index = callbacks$4.indexOf(cb);
8452
+ if (index > -1) {
8453
+ callbacks$4.splice(index, 1);
8454
+ }
8455
+ if (callbacks$4.length === 0) {
8456
+ mainDisposer$4 === null || mainDisposer$4 === void 0 ? void 0 : mainDisposer$4();
8457
+ }
8458
+ };
8470
8459
  const onChannelMemberAdded = (callback) => {
8471
- const client = getActiveClient();
8472
- const filter = async (payload) => {
8473
- const preparedPayload = await prepareChannelPayload(payload);
8474
- const { channels, channelUsers } = preparedPayload;
8475
- ingestInCache(preparedPayload);
8476
- callback(channels[0], channelUsers.find(cu => cu.membership === 'member'));
8477
- };
8478
- return createEventSubscriber(client, 'onChannelMemberAdded', 'channel.membersAdded', filter);
8460
+ if (callbacks$4.length === 0) {
8461
+ const client = getActiveClient();
8462
+ const filter = async (payload) => {
8463
+ const preparedPayload = await prepareChannelPayload(payload);
8464
+ const { channels, channelUsers } = preparedPayload;
8465
+ ingestInCache(preparedPayload);
8466
+ callbacks$4.forEach(cb => cb(channels[0], channelUsers.find(cu => cu.membership === 'member')));
8467
+ };
8468
+ mainDisposer$4 = createEventSubscriber(client, 'onChannelMemberAdded', 'channel.membersAdded', filter);
8469
+ }
8470
+ callbacks$4.push(callback);
8471
+ return () => dispose$4(callback);
8479
8472
  };
8480
8473
 
8481
- /**
8482
- * ```js
8483
- * import { onChannelMemberRemoved } from '@amityco/ts-sdk-react-native'
8484
- * const dispose = onChannelMemberRemoved((channel, member) => {
8485
- * // ...
8486
- * })
8487
- * ```
8488
- *
8489
- * Fired when any {@link Amity.InternalUser} has been removed from any {@link Amity.Channel}
8490
- *
8491
- * @param callback The function to call when the event was fired
8492
- * @returns an {@link Amity.Unsubscriber} function to stop listening
8493
- *
8494
- * @category Channel Events
8495
- */
8474
+ const callbacks$3 = [];
8475
+ let mainDisposer$3 = null;
8476
+ const dispose$3 = (cb) => {
8477
+ const index = callbacks$3.indexOf(cb);
8478
+ if (index > -1) {
8479
+ callbacks$3.splice(index, 1);
8480
+ }
8481
+ if (callbacks$3.length === 0) {
8482
+ mainDisposer$3 === null || mainDisposer$3 === void 0 ? void 0 : mainDisposer$3();
8483
+ }
8484
+ };
8496
8485
  const onChannelMemberRemoved = (callback) => {
8497
- const client = getActiveClient();
8498
- const filter = async (payload) => {
8499
- const preparedPayload = await prepareChannelPayload(payload);
8500
- const { channels, channelUsers } = preparedPayload;
8501
- ingestInCache(preparedPayload);
8502
- callback(channels[0], channelUsers[0]);
8503
- };
8504
- return createEventSubscriber(client, 'onChannelMemberRemoved', 'channel.membersRemoved', filter);
8486
+ if (callbacks$3.length === 0) {
8487
+ const client = getActiveClient();
8488
+ const filter = async (payload) => {
8489
+ const preparedPayload = await prepareChannelPayload(payload);
8490
+ const { channels, channelUsers } = preparedPayload;
8491
+ ingestInCache(preparedPayload);
8492
+ callbacks$3.forEach(cb => cb(channels[0], channelUsers[0]));
8493
+ };
8494
+ mainDisposer$3 = createEventSubscriber(client, 'onChannelMemberRemoved', 'channel.membersRemoved', filter);
8495
+ }
8496
+ callbacks$3.push(callback);
8497
+ return () => dispose$3(callback);
8505
8498
  };
8506
8499
 
8507
- /**
8508
- * ```js
8509
- * import { onChannelMemberUnbanned } from '@amityco/ts-sdk-react-native'
8510
- * const dispose = onChannelMemberUnbanned((channel, member) => {
8511
- * // ...
8512
- * })
8513
- * ```
8514
- *
8515
- * Fired when any {@link Amity.InternalUser} has been unbanned from any {@link Amity.Channel}
8516
- *
8517
- * @param callback The function to call when the event was fired
8518
- * @returns an {@link Amity.Unsubscriber} function to stop listening
8519
- *
8520
- * @category Channel Events
8521
- */
8500
+ const callbacks$2 = [];
8501
+ let mainDisposer$2 = null;
8502
+ const dispose$2 = (cb) => {
8503
+ const index = callbacks$2.indexOf(cb);
8504
+ if (index > -1) {
8505
+ callbacks$2.splice(index, 1);
8506
+ }
8507
+ if (callbacks$2.length === 0) {
8508
+ mainDisposer$2 === null || mainDisposer$2 === void 0 ? void 0 : mainDisposer$2();
8509
+ }
8510
+ };
8522
8511
  const onChannelMemberUnbanned = (callback) => {
8523
- const client = getActiveClient();
8524
- const filter = async (payload) => {
8525
- const preparedPayload = await prepareChannelPayload(payload);
8526
- const { channels, channelUsers } = preparedPayload;
8527
- ingestInCache(preparedPayload);
8528
- callback(channels[0], channelUsers.find(cu => cu.membership === 'none'));
8529
- };
8530
- return createEventSubscriber(client, 'onChannelMemberUnbanned', 'channel.unbanned', filter);
8512
+ if (callbacks$2.length === 0) {
8513
+ const client = getActiveClient();
8514
+ const filter = async (payload) => {
8515
+ const preparedPayload = await prepareChannelPayload(payload);
8516
+ const { channels, channelUsers } = preparedPayload;
8517
+ ingestInCache(preparedPayload);
8518
+ callbacks$2.forEach(cb => cb(channels[0], channelUsers.find(cu => cu.membership === 'none')));
8519
+ };
8520
+ mainDisposer$2 = createEventSubscriber(client, 'onChannelMemberUnbanned', 'channel.unbanned', filter);
8521
+ }
8522
+ callbacks$2.push(callback);
8523
+ return () => dispose$2(callback);
8531
8524
  };
8532
8525
 
8533
- /**
8534
- * ```js
8535
- * import { onChannelMemberRoleAdded } from '@amityco/ts-sdk-react-native'
8536
- * const dispose = onChannelMemberRoleAdded((channel, member) => {
8537
- * // ...
8538
- * })
8539
- * ```
8540
- *
8541
- * Fired when any {@link Amity.channelUsers} 's role has been added to any {@link Amity.Channel}
8542
- *
8543
- * @param callback The function to call when the event was fired
8544
- * @returns an {@link Amity.Unsubscriber} function to stop listening
8545
- *
8546
- * @category Channel Events
8547
- */
8526
+ const callbacks$1 = [];
8527
+ let mainDisposer$1 = null;
8528
+ const dispose$1 = (cb) => {
8529
+ const index = callbacks$1.indexOf(cb);
8530
+ if (index > -1) {
8531
+ callbacks$1.splice(index, 1);
8532
+ }
8533
+ if (callbacks$1.length === 0) {
8534
+ mainDisposer$1 === null || mainDisposer$1 === void 0 ? void 0 : mainDisposer$1();
8535
+ }
8536
+ };
8548
8537
  const onChannelMemberRoleAdded = (callback) => {
8549
- const client = getActiveClient();
8550
- const filter = async (payload) => {
8551
- const { channels, channelUsers } = payload;
8552
- callback(channels[0], channelUsers.find(channelUser => channelUser.membership === 'member'));
8553
- };
8554
- return createEventSubscriber(client, 'onChannelMemberRoleAdded', 'local.channel-moderator.role-added', filter);
8538
+ if (callbacks$1.length === 0) {
8539
+ const client = getActiveClient();
8540
+ const filter = async (payload) => {
8541
+ const { channels, channelUsers } = payload;
8542
+ callbacks$1.forEach(cb => cb(channels[0], channelUsers.find(channelUser => channelUser.membership === 'member')));
8543
+ };
8544
+ mainDisposer$1 = createEventSubscriber(client, 'onChannelMemberRoleAdded', 'local.channel-moderator.role-added', filter);
8545
+ }
8546
+ callbacks$1.push(callback);
8547
+ return () => dispose$1(callback);
8555
8548
  };
8556
8549
 
8557
- /**
8558
- * ```js
8559
- * import { onChannelMemberRoleRemoved } from '@amityco/ts-sdk-react-native'
8560
- * const dispose = onChannelMemberRoleRemoved((channel, member) => {
8561
- * // ...
8562
- * })
8563
- * ```
8564
- *
8565
- * Fired when any {@link Amity.channelUsers} 's role has been deleted to any {@link Amity.Channel}
8566
- *
8567
- * @param callback The function to call when the event was fired
8568
- * @returns an {@link Amity.Unsubscriber} function to stop listening
8569
- *
8570
- * @category Channel Events
8571
- */
8550
+ const callbacks = [];
8551
+ let mainDisposer = null;
8552
+ const dispose = (cb) => {
8553
+ const index = callbacks.indexOf(cb);
8554
+ if (index > -1) {
8555
+ callbacks.splice(index, 1);
8556
+ }
8557
+ if (callbacks.length === 0) {
8558
+ mainDisposer === null || mainDisposer === void 0 ? void 0 : mainDisposer();
8559
+ }
8560
+ };
8572
8561
  const onChannelMemberRoleRemoved = (callback) => {
8573
- const client = getActiveClient();
8574
- const filter = async (payload) => {
8575
- const { channels, channelUsers } = payload;
8576
- callback(channels[0], channelUsers.find(channelUser => channelUser.membership === 'member'));
8577
- };
8578
- return createEventSubscriber(client, 'onChannelMemberRoleRemoved', 'local.channel-moderator.role-removed', filter);
8562
+ if (callbacks.length === 0) {
8563
+ const client = getActiveClient();
8564
+ const filter = async (payload) => {
8565
+ const { channels, channelUsers } = payload;
8566
+ callback(channels[0], channelUsers.find(channelUser => channelUser.membership === 'member'));
8567
+ };
8568
+ mainDisposer = createEventSubscriber(client, 'onChannelMemberRoleRemoved', 'local.channel-moderator.role-removed', filter);
8569
+ }
8570
+ callbacks.push(callback);
8571
+ return () => dispose(callback);
8579
8572
  };
8580
8573
 
8581
8574
  /**