@amityco/ts-sdk 7.11.1-cc6dc67b.0 → 7.11.1-ce7af0e2.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 (93) hide show
  1. package/dist/@types/core/events.d.ts +4 -0
  2. package/dist/@types/core/events.d.ts.map +1 -1
  3. package/dist/@types/core/model.d.ts +4 -0
  4. package/dist/@types/core/model.d.ts.map +1 -1
  5. package/dist/@types/core/payload.d.ts +14 -0
  6. package/dist/@types/core/payload.d.ts.map +1 -1
  7. package/dist/@types/core/permissions.d.ts +5 -1
  8. package/dist/@types/core/permissions.d.ts.map +1 -1
  9. package/dist/@types/core/transport.d.ts +3 -0
  10. package/dist/@types/core/transport.d.ts.map +1 -1
  11. package/dist/@types/domains/community.d.ts +11 -1
  12. package/dist/@types/domains/community.d.ts.map +1 -1
  13. package/dist/@types/domains/event.d.ts +56 -9
  14. package/dist/@types/domains/event.d.ts.map +1 -1
  15. package/dist/@types/domains/notification.d.ts +3 -1
  16. package/dist/@types/domains/notification.d.ts.map +1 -1
  17. package/dist/@types/domains/partials.d.ts +2 -2
  18. package/dist/@types/domains/partials.d.ts.map +1 -1
  19. package/dist/core/events.d.ts +3 -3
  20. package/dist/core/events.d.ts.map +1 -1
  21. package/dist/core/model/idResolvers.d.ts.map +1 -1
  22. package/dist/core/model/index.d.ts.map +1 -1
  23. package/dist/eventRepository/api/deleteEvent.d.ts +15 -0
  24. package/dist/eventRepository/api/deleteEvent.d.ts.map +1 -0
  25. package/dist/eventRepository/api/index.d.ts +1 -0
  26. package/dist/eventRepository/api/index.d.ts.map +1 -1
  27. package/dist/eventRepository/events/enums.d.ts +8 -0
  28. package/dist/eventRepository/events/enums.d.ts.map +1 -0
  29. package/dist/eventRepository/events/index.d.ts +7 -0
  30. package/dist/eventRepository/events/index.d.ts.map +1 -1
  31. package/dist/eventRepository/events/onLocalEventCreated.d.ts +17 -0
  32. package/dist/eventRepository/events/onLocalEventCreated.d.ts.map +1 -0
  33. package/dist/eventRepository/events/onLocalEventDeleted.d.ts +17 -0
  34. package/dist/eventRepository/events/onLocalEventDeleted.d.ts.map +1 -0
  35. package/dist/eventRepository/events/onLocalEventUpdated.d.ts +17 -0
  36. package/dist/eventRepository/events/onLocalEventUpdated.d.ts.map +1 -0
  37. package/dist/eventRepository/events/onLocalRSVPCreated.d.ts +17 -0
  38. package/dist/eventRepository/events/onLocalRSVPCreated.d.ts.map +1 -0
  39. package/dist/eventRepository/events/onLocalRSVPUpdated.d.ts +17 -0
  40. package/dist/eventRepository/events/onLocalRSVPUpdated.d.ts.map +1 -0
  41. package/dist/eventRepository/events/onRSVPCreated.d.ts +17 -0
  42. package/dist/eventRepository/events/onRSVPCreated.d.ts.map +1 -0
  43. package/dist/eventRepository/events/onRSVPUpdated.d.ts +17 -0
  44. package/dist/eventRepository/events/onRSVPUpdated.d.ts.map +1 -0
  45. package/dist/eventRepository/internalApi/createRSVP.d.ts +16 -0
  46. package/dist/eventRepository/internalApi/createRSVP.d.ts.map +1 -0
  47. package/dist/eventRepository/internalApi/getMyRSVP.d.ts +32 -0
  48. package/dist/eventRepository/internalApi/getMyRSVP.d.ts.map +1 -0
  49. package/dist/eventRepository/internalApi/index.d.ts +3 -0
  50. package/dist/eventRepository/internalApi/index.d.ts.map +1 -1
  51. package/dist/eventRepository/internalApi/updateRSVP.d.ts +17 -0
  52. package/dist/eventRepository/internalApi/updateRSVP.d.ts.map +1 -0
  53. package/dist/eventRepository/observers/getEvent.d.ts.map +1 -1
  54. package/dist/eventRepository/observers/getEvents/LiveCollectionController.d.ts +13 -0
  55. package/dist/eventRepository/observers/getEvents/LiveCollectionController.d.ts.map +1 -0
  56. package/dist/eventRepository/observers/getEvents/PaginationController.d.ts +5 -0
  57. package/dist/eventRepository/observers/getEvents/PaginationController.d.ts.map +1 -0
  58. package/dist/eventRepository/observers/getEvents/QueryStreamController.d.ts +15 -0
  59. package/dist/eventRepository/observers/getEvents/QueryStreamController.d.ts.map +1 -0
  60. package/dist/eventRepository/observers/getEvents.d.ts +12 -0
  61. package/dist/eventRepository/observers/getEvents.d.ts.map +1 -0
  62. package/dist/eventRepository/observers/getMyEvents/LiveCollectionController.d.ts +13 -0
  63. package/dist/eventRepository/observers/getMyEvents/LiveCollectionController.d.ts.map +1 -0
  64. package/dist/eventRepository/observers/getMyEvents/PaginationController.d.ts +5 -0
  65. package/dist/eventRepository/observers/getMyEvents/PaginationController.d.ts.map +1 -0
  66. package/dist/eventRepository/observers/getMyEvents/QueryStreamController.d.ts +15 -0
  67. package/dist/eventRepository/observers/getMyEvents/QueryStreamController.d.ts.map +1 -0
  68. package/dist/eventRepository/observers/getMyEvents.d.ts +12 -0
  69. package/dist/eventRepository/observers/getMyEvents.d.ts.map +1 -0
  70. package/dist/eventRepository/observers/getRSVPs/LiveCollectionController.d.ts +13 -0
  71. package/dist/eventRepository/observers/getRSVPs/LiveCollectionController.d.ts.map +1 -0
  72. package/dist/eventRepository/observers/getRSVPs/PaginationController.d.ts +5 -0
  73. package/dist/eventRepository/observers/getRSVPs/PaginationController.d.ts.map +1 -0
  74. package/dist/eventRepository/observers/getRSVPs/QueryStreamController.d.ts +15 -0
  75. package/dist/eventRepository/observers/getRSVPs/QueryStreamController.d.ts.map +1 -0
  76. package/dist/eventRepository/observers/getRSVPs.d.ts +12 -0
  77. package/dist/eventRepository/observers/getRSVPs.d.ts.map +1 -0
  78. package/dist/eventRepository/observers/index.d.ts +3 -0
  79. package/dist/eventRepository/observers/index.d.ts.map +1 -1
  80. package/dist/eventRepository/utils/createEventEventSubscriber.d.ts +1 -1
  81. package/dist/eventRepository/utils/createEventEventSubscriber.d.ts.map +1 -1
  82. package/dist/eventRepository/utils/createEventResponseSubscriber.d.ts +2 -0
  83. package/dist/eventRepository/utils/createEventResponseSubscriber.d.ts.map +1 -0
  84. package/dist/eventRepository/utils/index.d.ts +2 -0
  85. package/dist/eventRepository/utils/index.d.ts.map +1 -1
  86. package/dist/eventRepository/utils/prepareEventResponsePayload.d.ts +2 -0
  87. package/dist/eventRepository/utils/prepareEventResponsePayload.d.ts.map +1 -0
  88. package/dist/index.cjs.js +892 -109
  89. package/dist/index.esm.js +866 -83
  90. package/dist/index.umd.js +3 -3
  91. package/dist/messagePreview/utils/getChannelMessagePreviewWithUser.d.ts +1 -1
  92. package/dist/utils/linkedObject/eventLinkObject.d.ts.map +1 -1
  93. package/package.json +1 -1
package/dist/index.cjs.js CHANGED
@@ -209,6 +209,11 @@ exports.AmityEventStatus = void 0;
209
209
  AmityEventStatus["Ended"] = "ended";
210
210
  AmityEventStatus["Cancelled"] = "cancelled";
211
211
  })(exports.AmityEventStatus || (exports.AmityEventStatus = {}));
212
+ exports.AmityEventResponseStatus = void 0;
213
+ (function (AmityEventResponseStatus) {
214
+ AmityEventResponseStatus["Going"] = "going";
215
+ AmityEventResponseStatus["NotGoing"] = "not_going";
216
+ })(exports.AmityEventResponseStatus || (exports.AmityEventResponseStatus = {}));
212
217
 
213
218
  function getVersion() {
214
219
  try {
@@ -658,6 +663,9 @@ const idResolvers = {
658
663
  notificationTraySeen: ({ userId }) => userId,
659
664
  invitation: ({ _id }) => _id,
660
665
  joinRequest: ({ joinRequestId }) => joinRequestId,
666
+ event: ({ eventId }) => eventId,
667
+ eventResponse: ({ eventId }) => eventId,
668
+ discussionCommunity: ({ communityId }) => communityId,
661
669
  };
662
670
  /**
663
671
  * Retrieve the id resolver matching a domain name
@@ -713,6 +721,9 @@ const PAYLOAD2MODEL = {
713
721
  notificationTrayItems: 'notificationTrayItem',
714
722
  invitations: 'invitation',
715
723
  joinRequests: 'joinRequest',
724
+ events: 'event',
725
+ eventResponse: 'eventResponse',
726
+ discussionCommunities: 'discussionCommunity',
716
727
  };
717
728
  /** hidden */
718
729
  const isOutdated = (prevData, nextData) => {
@@ -13676,6 +13687,503 @@ const communityLinkedObject = (community) => {
13676
13687
  } });
13677
13688
  };
13678
13689
 
13690
+ const prepareEventResponsePayload = (rawPayload) => {
13691
+ return {
13692
+ status: rawPayload.eventResponses[0].status,
13693
+ eventId: rawPayload.eventResponses[0].eventId,
13694
+ event: rawPayload.events,
13695
+ userId: rawPayload.eventResponses[0].userId,
13696
+ user: rawPayload.users.map(convertRawUserToInternalUser),
13697
+ };
13698
+ };
13699
+
13700
+ /* begin_public_function
13701
+ id: event.rsvp.create
13702
+ */
13703
+ /**
13704
+ * ```js
13705
+ * import { event } from '@amityco/ts-sdk'
13706
+ * const response = await event.createRSVP(eventId, status)
13707
+ * ```
13708
+ *
13709
+ * Creates an {@link Amity.InternalEvent}
13710
+ *
13711
+ * @param bundle The data necessary to create a new {@link Amity.InternalEvent}
13712
+ * @returns The newly created {@link Amity.InternalEvent}
13713
+ *
13714
+ * @category Event API
13715
+ * @async
13716
+ */
13717
+ const createRSVP = async (eventId, status) => {
13718
+ const client = getActiveClient();
13719
+ client.log('event/createRSVP', eventId, status);
13720
+ const { data: payload } = await client.http.post(`/api/v1/events/${eventId}/rsvp`, { status });
13721
+ fireEvent('local.rsvp.created', payload);
13722
+ const data = prepareEventResponsePayload(payload);
13723
+ const cachedAt = client.cache && Date.now();
13724
+ if (client.cache)
13725
+ ingestInCache({ eventResponses: [data] }, { cachedAt });
13726
+ return {
13727
+ data,
13728
+ cachedAt,
13729
+ };
13730
+ };
13731
+ /* end_public_function */
13732
+
13733
+ /* begin_public_function
13734
+ id: event.update
13735
+ */
13736
+ /**
13737
+ * ```js
13738
+ * import { event } from '@amityco/ts-sdk'
13739
+ * const response = await event.updateRSVP(eventId, status)
13740
+ * ```
13741
+ *
13742
+ * Updates an {@link Amity.EventResponse}
13743
+ *
13744
+ * @param eventId The ID of the {@link Amity.EventResponse} to edit
13745
+ * @param bundle The data necessary to update an existing {@link Amity.EventResponse}
13746
+ * @returns the updated {@link Amity.EventResponse}
13747
+ *
13748
+ * @category Event API
13749
+ * @async
13750
+ */
13751
+ const updateRSVP = async (eventId, status) => {
13752
+ const client = getActiveClient();
13753
+ client.log('event/updateRSVP', eventId, status);
13754
+ const { data: payload } = await client.http.put(`/api/v1/events/${eventId}/rsvp`, { status });
13755
+ fireEvent('local.rsvp.updated', payload);
13756
+ const data = prepareEventResponsePayload(payload);
13757
+ const cachedAt = client.cache && Date.now();
13758
+ if (client.cache)
13759
+ ingestInCache({ eventResponses: [data] }, { cachedAt });
13760
+ return {
13761
+ data,
13762
+ cachedAt,
13763
+ };
13764
+ };
13765
+ /* end_public_function */
13766
+
13767
+ const prepareEventPayload = (rawPayload) => {
13768
+ return Object.assign(Object.assign({}, rawPayload), { users: rawPayload.users.map(convertRawUserToInternalUser) });
13769
+ };
13770
+
13771
+ const createEventEventSubscriber = (event, callback) => {
13772
+ const client = getActiveClient();
13773
+ const filter = (payload) => {
13774
+ const unpackedPayload = prepareEventPayload(payload);
13775
+ if (!client.cache) {
13776
+ callback(unpackedPayload.events[0]);
13777
+ }
13778
+ else {
13779
+ ingestInCache(unpackedPayload);
13780
+ const event = pullFromCache([
13781
+ 'event',
13782
+ 'get',
13783
+ unpackedPayload.events[0].eventId,
13784
+ ]);
13785
+ callback(event.data);
13786
+ }
13787
+ };
13788
+ return createEventSubscriber(client, event, event, filter);
13789
+ };
13790
+
13791
+ const createEventResponseSubscriber = (event, callback) => {
13792
+ const client = getActiveClient();
13793
+ const filter = (payload) => {
13794
+ const unpackedPayload = prepareEventResponsePayload(payload);
13795
+ if (!client.cache) {
13796
+ callback(unpackedPayload);
13797
+ }
13798
+ else {
13799
+ ingestInCache(unpackedPayload.event[0]);
13800
+ const eventResponse = pullFromCache([
13801
+ 'eventResponse',
13802
+ 'get',
13803
+ payload.eventResponses[0].eventId,
13804
+ ]);
13805
+ callback(eventResponse.data);
13806
+ }
13807
+ };
13808
+ return createEventSubscriber(client, event, event, filter);
13809
+ };
13810
+
13811
+ /* begin_public_function
13812
+ id: event.rsvp.me
13813
+ */
13814
+ /**
13815
+ * ```js
13816
+ * import { event } from '@amityco/ts-sdk'
13817
+ * const myRSVP = await event.getMyRSVP()
13818
+ * ```
13819
+ *
13820
+ * Joins a {@link Amity.EventResponse} object
13821
+ *
13822
+ * @param eventId the {@link Amity.EventResponse} to get RSVP for
13823
+ * @returns A success boolean if the {@link Amity.EventResponse} RSVP was retrieved
13824
+ *
13825
+ * @category Event API
13826
+ * @async
13827
+ */
13828
+ const getMyRSVP = async (eventId) => {
13829
+ const client = getActiveClient();
13830
+ client.log('event/getMyRSVP', eventId);
13831
+ const { data: payload } = await client.http.get(`/api/v1/events/${eventId}/me/rsvp`);
13832
+ const data = prepareEventResponsePayload(payload);
13833
+ const cachedAt = client.cache && Date.now();
13834
+ if (client.cache)
13835
+ ingestInCache({ eventResponses: [data] }, { cachedAt });
13836
+ return {
13837
+ data,
13838
+ cachedAt,
13839
+ };
13840
+ };
13841
+ /* end_public_function */
13842
+ /**
13843
+ * ```js
13844
+ * import { event } from '@amityco/ts-sdk'
13845
+ * const event = event.getMyRSVP.locally(eventId)
13846
+ * ```
13847
+ *
13848
+ * Fetches a {@link Amity.EventResponse} object in cache
13849
+ *
13850
+ * @param eventId the ID of the {@link Amity.EventResponse} to fetch
13851
+ * @returns the associated {@link Amity.EventResponse} object
13852
+ *
13853
+ * @category Event API
13854
+ */
13855
+ getMyRSVP.locally = (eventId) => {
13856
+ const client = getActiveClient();
13857
+ client.log('event/getMyRSVP.locally', eventId);
13858
+ if (!client.cache)
13859
+ return;
13860
+ const cache = pullFromCache(['event', 'getMyRSVP', eventId]);
13861
+ if (!cache)
13862
+ return;
13863
+ return {
13864
+ data: cache.data,
13865
+ cachedAt: cache.cachedAt,
13866
+ };
13867
+ };
13868
+
13869
+ var EventActionsEnum;
13870
+ (function (EventActionsEnum) {
13871
+ EventActionsEnum["OnEventCreated"] = "onEventCreated";
13872
+ EventActionsEnum["OnEventUpdated"] = "onEventUpdated";
13873
+ EventActionsEnum["OnEventDeleted"] = "onEventDeleted";
13874
+ EventActionsEnum["OnRSVPCreated"] = "onRSVPCreated";
13875
+ EventActionsEnum["OnRSVPUpdated"] = "onRSVPUpdated";
13876
+ })(EventActionsEnum || (EventActionsEnum = {}));
13877
+
13878
+ class RSVPPaginationController extends PaginationController {
13879
+ async getRequest(queryParams, token) {
13880
+ const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT, eventId } = queryParams, params = __rest(queryParams, ["limit", "eventId"]);
13881
+ const options = token ? { token } : { limit };
13882
+ const { data: response } = await this.http.get(`/api/v1/events/${eventId}/rsvps`, { params: Object.assign(Object.assign({}, params), { options }) });
13883
+ return response;
13884
+ }
13885
+ }
13886
+
13887
+ class RSVPQueryStreamController extends QueryStreamController {
13888
+ constructor(query, cacheKey, notifyChange, preparePayload) {
13889
+ super(query, cacheKey);
13890
+ this.notifyChange = notifyChange;
13891
+ this.preparePayload = preparePayload;
13892
+ }
13893
+ async saveToMainDB(response) {
13894
+ const processedPayload = this.preparePayload(response);
13895
+ const client = getActiveClient();
13896
+ const cachedAt = client.cache && Date.now();
13897
+ if (client.cache)
13898
+ ingestInCache({ eventResponses: [processedPayload] }, { cachedAt });
13899
+ }
13900
+ appendToQueryStream(response, direction, refresh = false) {
13901
+ var _a, _b;
13902
+ if (refresh) {
13903
+ pushToCache(this.cacheKey, {
13904
+ data: response.eventResponses.map(getResolver('eventResponse')),
13905
+ });
13906
+ }
13907
+ else {
13908
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
13909
+ const events = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
13910
+ pushToCache(this.cacheKey, Object.assign(Object.assign({}, collection), { data: [
13911
+ ...new Set([...events, ...response.eventResponses.map(getResolver('eventResponse'))]),
13912
+ ] }));
13913
+ }
13914
+ }
13915
+ reactor(action) {
13916
+ return (event) => {
13917
+ var _a;
13918
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
13919
+ if (!collection)
13920
+ return;
13921
+ if (action === EventActionsEnum.OnRSVPCreated) {
13922
+ const client = getActiveClient();
13923
+ if (client.userId !== event.userId)
13924
+ return;
13925
+ collection.data = [...new Set([event.eventId, ...collection.data])];
13926
+ }
13927
+ if (action === EventActionsEnum.OnEventDeleted) {
13928
+ collection.data = collection.data.filter(eventId => eventId !== event.eventId);
13929
+ }
13930
+ pushToCache(this.cacheKey, collection);
13931
+ this.notifyChange({ origin: "event" /* Amity.LiveDataOrigin.EVENT */, loading: false });
13932
+ };
13933
+ }
13934
+ subscribeRTE(createSubscriber) {
13935
+ return createSubscriber.map(subscriber => subscriber.fn(this.reactor(subscriber.action)));
13936
+ }
13937
+ }
13938
+
13939
+ /**
13940
+ * ```js
13941
+ * import { EventRepository } from '@amityco/ts-sdk'
13942
+ * const dispose = EventRepository.onEventCreated(event => {
13943
+ * // ...
13944
+ * })
13945
+ * ```
13946
+ *
13947
+ * Fired when a {@link Amity.Event} has been created
13948
+ *
13949
+ * @param callback The function to call when the event was fired
13950
+ * @returns an {@link Amity.Unsubscriber} function to stop listening
13951
+ *
13952
+ * @category Event Events
13953
+ */
13954
+ const onEventCreated = (callback) => createEventEventSubscriber('event.created', callback);
13955
+
13956
+ /**
13957
+ * ```js
13958
+ * import { EventRepository } from '@amityco/ts-sdk'
13959
+ * const dispose = EventRepository.onEventUpdated(event => {
13960
+ * // ...
13961
+ * })
13962
+ * ```
13963
+ *
13964
+ * Fired when a {@link Amity.Event} has been updated
13965
+ *
13966
+ * @param callback The function to call when the event was fired
13967
+ * @returns an {@link Amity.Unsubscriber} function to stop listening
13968
+ *
13969
+ * @category Event Events
13970
+ */
13971
+ const onEventUpdated = (callback) => createEventEventSubscriber('event.updated', callback);
13972
+
13973
+ /**
13974
+ * ```js
13975
+ * import { EventRepository } from '@amityco/ts-sdk'
13976
+ * const dispose = EventRepository.onEventDeleted(event => {
13977
+ * // ...
13978
+ * })
13979
+ * ```
13980
+ *
13981
+ * Fired when a {@link Amity.Event} has been deleted
13982
+ *
13983
+ * @param callback The function to call when the event was fired
13984
+ * @returns an {@link Amity.Unsubscriber} function to stop listening
13985
+ *
13986
+ * @category Event Events
13987
+ */
13988
+ const onEventDeleted = (callback) => createEventEventSubscriber('event.deleted', callback);
13989
+
13990
+ /**
13991
+ * ```js
13992
+ * import { EventRepository } from '@amityco/ts-sdk'
13993
+ * const dispose = EventRepository.onLocalEventCreated(event => {
13994
+ * // ...
13995
+ * })
13996
+ * ```
13997
+ *
13998
+ * Fired when a {@link Amity.Event} has been created
13999
+ *
14000
+ * @param callback The function to call when the event was fired
14001
+ * @returns an {@link Amity.Unsubscriber} function to stop listening
14002
+ *
14003
+ * @category Event Events
14004
+ */
14005
+ const onLocalEventCreated = (callback) => createEventEventSubscriber('local.event.created', callback);
14006
+
14007
+ /**
14008
+ * ```js
14009
+ * import { EventRepository } from '@amityco/ts-sdk'
14010
+ * const dispose = EventRepository.onLocalEventUpdated(event => {
14011
+ * // ...
14012
+ * })
14013
+ * ```
14014
+ *
14015
+ * Fired when a {@link Amity.Event} has been updated
14016
+ *
14017
+ * @param callback The function to call when the event was fired
14018
+ * @returns an {@link Amity.Unsubscriber} function to stop listening
14019
+ *
14020
+ * @category Event Events
14021
+ */
14022
+ const onLocalEventUpdated = (callback) => createEventEventSubscriber('local.event.updated', callback);
14023
+
14024
+ /**
14025
+ * ```js
14026
+ * import { EventRepository } from '@amityco/ts-sdk'
14027
+ * const dispose = EventRepository.onLocalEventDeleted(event => {
14028
+ * // ...
14029
+ * })
14030
+ * ```
14031
+ *
14032
+ * Fired when a {@link Amity.Event} has been deleted
14033
+ *
14034
+ * @param callback The function to call when the event was fired
14035
+ * @returns an {@link Amity.Unsubscriber} function to stop listening
14036
+ *
14037
+ * @category Event Events
14038
+ */
14039
+ const onLocalEventDeleted = (callback) => createEventEventSubscriber('local.event.deleted', callback);
14040
+
14041
+ /**
14042
+ * ```js
14043
+ * import { EventRepository } from '@amityco/ts-sdk'
14044
+ * const dispose = EventRepository.onRSVPCreated(event => {
14045
+ * // ...
14046
+ * })
14047
+ * ```
14048
+ *
14049
+ * Fired when a {@link Amity.Event} has been created
14050
+ *
14051
+ * @param callback The function to call when the event was fired
14052
+ * @returns an {@link Amity.Unsubscriber} function to stop listening
14053
+ *
14054
+ * @category Event Events
14055
+ */
14056
+ const onRSVPCreated = (callback) => createEventResponseSubscriber('event.rsvp.created', callback);
14057
+
14058
+ /**
14059
+ * ```js
14060
+ * import { EventRepository } from '@amityco/ts-sdk'
14061
+ * const dispose = EventRepository.onRSVPUpdated(event => {
14062
+ * // ...
14063
+ * })
14064
+ * ```
14065
+ *
14066
+ * Fired when a {@link Amity.InternalEventResponse} has been updated
14067
+ *
14068
+ * @param callback The function to call when the event was fired
14069
+ * @returns an {@link Amity.Unsubscriber} function to stop listening
14070
+ *
14071
+ * @category Event Events
14072
+ */
14073
+ const onRSVPUpdated = (callback) => createEventResponseSubscriber('event.rsvp.updated', callback);
14074
+
14075
+ /**
14076
+ * ```js
14077
+ * import { EventRepository } from '@amityco/ts-sdk'
14078
+ * const dispose = EventRepository.onLocalRSVPCreated(event => {
14079
+ * // ...
14080
+ * })
14081
+ * ```
14082
+ *
14083
+ * Fired when a {@link Amity.Event} has been created
14084
+ *
14085
+ * @param callback The function to call when the event was fired
14086
+ * @returns an {@link Amity.Unsubscriber} function to stop listening
14087
+ *
14088
+ * @category Event Events
14089
+ */
14090
+ const onLocalRSVPCreated = (callback) => createEventResponseSubscriber('local.rsvp.created', callback);
14091
+
14092
+ /**
14093
+ * ```js
14094
+ * import { EventRepository } from '@amityco/ts-sdk'
14095
+ * const dispose = EventRepository.onLocalEventUpdated(event => {
14096
+ * // ...
14097
+ * })
14098
+ * ```
14099
+ *
14100
+ * Fired when a {@link Amity.Event} has been updated
14101
+ *
14102
+ * @param callback The function to call when the event was fired
14103
+ * @returns an {@link Amity.Unsubscriber} function to stop listening
14104
+ *
14105
+ * @category Event Events
14106
+ */
14107
+ const onLocalRSVPUpdated = (callback) => createEventResponseSubscriber('local.rsvp.updated', callback);
14108
+
14109
+ class RSVPLiveCollectionController extends LiveCollectionController {
14110
+ constructor(query, callback) {
14111
+ const queryStreamId = hash__default["default"](query);
14112
+ const cacheKey = ['eventResponse', 'collection', queryStreamId];
14113
+ const paginationController = new RSVPPaginationController(query);
14114
+ super(paginationController, queryStreamId, cacheKey, callback);
14115
+ this.query = query;
14116
+ this.queryStreamController = new RSVPQueryStreamController(this.query, this.cacheKey, this.notifyChange.bind(this), prepareEventResponsePayload);
14117
+ this.callback = callback.bind(this);
14118
+ this.loadPage({ initial: true });
14119
+ }
14120
+ setup() {
14121
+ var _a;
14122
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
14123
+ if (!collection)
14124
+ pushToCache(this.cacheKey, { data: [], params: this.query });
14125
+ }
14126
+ async persistModel(queryPayload) {
14127
+ await this.queryStreamController.saveToMainDB(queryPayload);
14128
+ }
14129
+ persistQueryStream({ response, direction, refresh, }) {
14130
+ this.queryStreamController.appendToQueryStream(response, direction, refresh);
14131
+ }
14132
+ startSubscription() {
14133
+ return this.queryStreamController.subscribeRTE([
14134
+ { fn: onRSVPCreated, action: EventActionsEnum.OnRSVPCreated },
14135
+ { fn: onRSVPUpdated, action: EventActionsEnum.OnRSVPUpdated },
14136
+ { fn: onLocalRSVPCreated, action: EventActionsEnum.OnRSVPCreated },
14137
+ { fn: onLocalRSVPUpdated, action: EventActionsEnum.OnRSVPUpdated },
14138
+ ]);
14139
+ }
14140
+ notifyChange({ origin, loading, error }) {
14141
+ var _a, _b;
14142
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
14143
+ if (!collection)
14144
+ return;
14145
+ const data = (_b = collection.data
14146
+ .map(eventId => pullFromCache(['eventResponse', 'get', eventId]))
14147
+ .filter(isNonNullable)
14148
+ .map(({ data }) => data)) !== null && _b !== void 0 ? _b : [];
14149
+ if (!this.shouldNotify(data) && origin === "event" /* Amity.LiveDataOrigin.EVENT */)
14150
+ return;
14151
+ this.callback({
14152
+ data,
14153
+ error,
14154
+ loading,
14155
+ hasNextPage: !!this.paginationController.getNextToken(),
14156
+ onNextPage: () => this.loadPage({ direction: "next" /* Amity.LiveCollectionPageDirection.NEXT */ }),
14157
+ });
14158
+ }
14159
+ }
14160
+
14161
+ /**
14162
+ * Get events
14163
+ *
14164
+ * @param params the query parameters
14165
+ * @param callback the callback to be called when the events are updated
14166
+ * @returns events
14167
+ *
14168
+ * @category RSVP Live Collection
14169
+ *
14170
+ */
14171
+ const getRSVPs = (params, callback, config) => {
14172
+ const { log, cache } = getActiveClient();
14173
+ if (!cache)
14174
+ console.log(ENABLE_CACHE_MESSAGE);
14175
+ const timestamp = Date.now();
14176
+ log(`getRSVPs: (tmpid: ${timestamp}) > listen`);
14177
+ const eventLiveCollection = new RSVPLiveCollectionController(params, callback);
14178
+ const disposers = eventLiveCollection.startSubscription();
14179
+ const cacheKey = eventLiveCollection.getCacheKey();
14180
+ disposers.push(() => dropFromCache(cacheKey));
14181
+ return () => {
14182
+ log(`getRSVPs (tmpid: ${timestamp}) > dispose`);
14183
+ disposers.forEach(fn => fn());
14184
+ };
14185
+ };
14186
+
13679
14187
  const eventLinkedObject = (event) => {
13680
14188
  return Object.assign(Object.assign({}, event), { get creator() {
13681
14189
  const cacheData = pullFromCache(['user', 'get', event.userId]);
@@ -13684,13 +14192,33 @@ const eventLinkedObject = (event) => {
13684
14192
  return userLinkedObject(cacheData.data);
13685
14193
  },
13686
14194
  get discussionCommunity() {
13687
- if (!event.communityId)
14195
+ if (!event.discussionCommunityId)
13688
14196
  return;
13689
- const cacheData = pullFromCache(['community', 'get', event.communityId]);
14197
+ const cacheData = pullFromCache([
14198
+ 'discussionCommunity',
14199
+ 'get',
14200
+ event.discussionCommunityId,
14201
+ ]);
13690
14202
  if (!(cacheData === null || cacheData === void 0 ? void 0 : cacheData.data))
13691
14203
  return;
13692
14204
  return communityLinkedObject(cacheData.data);
13693
14205
  },
14206
+ get targetCommunity() {
14207
+ if (!event.originId)
14208
+ return;
14209
+ const cacheData = pullFromCache(['community', 'get', event.originId]);
14210
+ if (!(cacheData === null || cacheData === void 0 ? void 0 : cacheData.data))
14211
+ return;
14212
+ return communityLinkedObject(cacheData.data);
14213
+ },
14214
+ get coverImage() {
14215
+ if (!event.coverImageFileId)
14216
+ return;
14217
+ const cacheData = pullFromCache(['file', 'get', event.coverImageFileId]);
14218
+ if (!(cacheData === null || cacheData === void 0 ? void 0 : cacheData.data))
14219
+ return;
14220
+ return cacheData.data;
14221
+ },
13694
14222
  get liveStream() {
13695
14223
  if (!event.livestreamId)
13696
14224
  return;
@@ -13698,6 +14226,20 @@ const eventLinkedObject = (event) => {
13698
14226
  if (!(cacheData === null || cacheData === void 0 ? void 0 : cacheData.data))
13699
14227
  return;
13700
14228
  return cacheData.data;
14229
+ }, createRSVP: async (status) => {
14230
+ const { data } = await createRSVP(event.eventId, status);
14231
+ return data;
14232
+ }, updateRSVP: async (status) => {
14233
+ const { data } = await updateRSVP(event.eventId, status);
14234
+ return data;
14235
+ }, getMyRSVP: async () => {
14236
+ const { data } = await getMyRSVP(event.eventId);
14237
+ return data;
14238
+ }, getRSVPs: (status, callback) => {
14239
+ return getRSVPs({
14240
+ eventId: event.eventId,
14241
+ status,
14242
+ }, callback);
13701
14243
  } });
13702
14244
  };
13703
14245
 
@@ -30337,30 +30879,6 @@ var index$1 = /*#__PURE__*/Object.freeze({
30337
30879
  getReactions: getReactions
30338
30880
  });
30339
30881
 
30340
- const prepareEventPayload = (rawPayload) => {
30341
- return Object.assign(Object.assign({}, rawPayload), { users: rawPayload.users.map(convertRawUserToInternalUser) });
30342
- };
30343
-
30344
- const createEventEventSubscriber = (event, callback) => {
30345
- const client = getActiveClient();
30346
- const filter = (payload) => {
30347
- const unpackedPayload = prepareEventPayload(payload);
30348
- if (!client.cache) {
30349
- callback(unpackedPayload.events[0]);
30350
- }
30351
- else {
30352
- ingestInCache(unpackedPayload);
30353
- const event = pullFromCache([
30354
- 'event',
30355
- 'get',
30356
- unpackedPayload.events[0].eventId,
30357
- ]);
30358
- callback(event.data);
30359
- }
30360
- };
30361
- return createEventSubscriber(client, event, event, filter);
30362
- };
30363
-
30364
30882
  /* begin_public_function
30365
30883
  id: event.create
30366
30884
  */
@@ -30382,7 +30900,7 @@ const createEvent = async (bundle) => {
30382
30900
  const client = getActiveClient();
30383
30901
  client.log('event/createEvent', bundle);
30384
30902
  const { data: payload } = await client.http.post('/api/v1/events', bundle);
30385
- fireEvent('event.created', payload);
30903
+ fireEvent('local.event.created', payload);
30386
30904
  const preparedPayload = prepareEventPayload(payload);
30387
30905
  const cachedAt = client.cache && Date.now();
30388
30906
  if (client.cache)
@@ -30390,94 +30908,43 @@ const createEvent = async (bundle) => {
30390
30908
  return {
30391
30909
  data: eventLinkedObject(preparedPayload.events[0]),
30392
30910
  cachedAt,
30393
- };
30394
- };
30395
- /* end_public_function */
30396
-
30397
- /* begin_public_function
30398
- id: event.update
30399
- */
30400
- /**
30401
- * ```js
30402
- * import { EventRepository } from '@amityco/ts-sdk'
30403
- * const response = await EventRepository.updateEvent(eventId, bundle)
30404
- * ```
30405
- *
30406
- * Updates an {@link Amity.Event}
30407
- *
30408
- * @param eventId The ID of the {@link Amity.Event} to edit
30409
- * @param bundle The data necessary to update an existing {@link Amity.Event}
30410
- * @returns the updated {@link Amity.Event}
30411
- *
30412
- * @category Event API
30413
- * @async
30414
- */
30415
- const updateEvent = async (eventId, bundle) => {
30416
- const client = getActiveClient();
30417
- client.log('event/updateEvent', eventId, bundle);
30418
- const { data: payload } = await client.http.put(`/api/v1/events/${eventId}`, bundle);
30419
- fireEvent('event.updated', payload);
30420
- const preparedPayload = prepareEventPayload(payload);
30421
- const cachedAt = client.cache && Date.now();
30422
- if (client.cache)
30423
- ingestInCache(preparedPayload, { cachedAt });
30424
- return {
30425
- data: eventLinkedObject(preparedPayload.events.find(event => event.eventId === eventId)),
30426
- cachedAt,
30427
- };
30428
- };
30429
- /* end_public_function */
30430
-
30431
- /**
30432
- * ```js
30433
- * import { EventRepository } from '@amityco/ts-sdk'
30434
- * const dispose = EventRepository.onEventCreated(event => {
30435
- * // ...
30436
- * })
30437
- * ```
30438
- *
30439
- * Fired when a {@link Amity.Event} has been created
30440
- *
30441
- * @param callback The function to call when the event was fired
30442
- * @returns an {@link Amity.Unsubscriber} function to stop listening
30443
- *
30444
- * @category Event Events
30445
- */
30446
- const onEventCreated = (callback) => createEventEventSubscriber('event.created', callback);
30447
-
30448
- /**
30449
- * ```js
30450
- * import { EventRepository } from '@amityco/ts-sdk'
30451
- * const dispose = EventRepository.onEventUpdated(event => {
30452
- * // ...
30453
- * })
30454
- * ```
30455
- *
30456
- * Fired when a {@link Amity.Event} has been updated
30457
- *
30458
- * @param callback The function to call when the event was fired
30459
- * @returns an {@link Amity.Unsubscriber} function to stop listening
30460
- *
30461
- * @category Event Events
30462
- */
30463
- const onEventUpdated = (callback) => createEventEventSubscriber('event.updated', callback);
30911
+ };
30912
+ };
30913
+ /* end_public_function */
30464
30914
 
30915
+ /* begin_public_function
30916
+ id: event.update
30917
+ */
30465
30918
  /**
30466
30919
  * ```js
30467
30920
  * import { EventRepository } from '@amityco/ts-sdk'
30468
- * const dispose = EventRepository.onEventDeleted(event => {
30469
- * // ...
30470
- * })
30921
+ * const response = await EventRepository.updateEvent(eventId, bundle)
30471
30922
  * ```
30472
30923
  *
30473
- * Fired when a {@link Amity.Event} has been deleted
30924
+ * Updates an {@link Amity.Event}
30474
30925
  *
30475
- * @param callback The function to call when the event was fired
30476
- * @returns an {@link Amity.Unsubscriber} function to stop listening
30926
+ * @param eventId The ID of the {@link Amity.Event} to edit
30927
+ * @param bundle The data necessary to update an existing {@link Amity.Event}
30928
+ * @returns the updated {@link Amity.Event}
30477
30929
  *
30478
- * @category Event Events
30930
+ * @category Event API
30931
+ * @async
30479
30932
  */
30480
- const onEventDeleted = (callback) => createEventEventSubscriber('event.deleted', callback);
30933
+ const updateEvent = async (eventId, bundle) => {
30934
+ const client = getActiveClient();
30935
+ client.log('event/updateEvent', eventId, bundle);
30936
+ const { data: payload } = await client.http.put(`/api/v1/events/${eventId}`, bundle);
30937
+ fireEvent('local.event.updated', payload);
30938
+ const preparedPayload = prepareEventPayload(payload);
30939
+ const cachedAt = client.cache && Date.now();
30940
+ if (client.cache)
30941
+ ingestInCache(preparedPayload, { cachedAt });
30942
+ return {
30943
+ data: eventLinkedObject(preparedPayload.events.find(event => event.eventId === eventId)),
30944
+ cachedAt,
30945
+ };
30946
+ };
30947
+ /* end_public_function */
30481
30948
 
30482
30949
  /* begin_public_function
30483
30950
  id: event.get
@@ -30499,7 +30966,7 @@ const onEventDeleted = (callback) => createEventEventSubscriber('event.deleted',
30499
30966
  const getEvent$1 = async (eventId) => {
30500
30967
  const client = getActiveClient();
30501
30968
  client.log('event/getEvent', eventId);
30502
- const { data: payload } = await client.http.get(`/api/v3/events/${eventId}`);
30969
+ const { data: payload } = await client.http.get(`/api/v1/events/${eventId}`);
30503
30970
  const data = prepareEventPayload(payload);
30504
30971
  const cachedAt = client.cache && Date.now();
30505
30972
  if (client.cache)
@@ -30537,6 +31004,40 @@ getEvent$1.locally = (eventId) => {
30537
31004
  };
30538
31005
  };
30539
31006
 
31007
+ /* begin_public_function
31008
+ id: event.delete
31009
+ */
31010
+ /**
31011
+ * ```js
31012
+ * import { EventRepository } from '@amityco/ts-sdk'
31013
+ * const { success } = await EventRepository.deleteEvent(eventId)
31014
+ * ```
31015
+ *
31016
+ * Deletes a {@link Amity.Event}
31017
+ *
31018
+ * @param eventId The {@link Amity.Event} ID to delete
31019
+ *
31020
+ * @category Event API
31021
+ * @async
31022
+ */
31023
+ const deleteEvent = async (eventId) => {
31024
+ const client = getActiveClient();
31025
+ client.log('event/deleteEvent', eventId);
31026
+ const event = await getEvent$1(eventId);
31027
+ await client.http.delete(`/api/v1/events/${eventId}`);
31028
+ const deletedEvent = Object.assign(Object.assign({}, event.data), { isDeleted: true });
31029
+ upsertInCache(['event', 'get', eventId], deletedEvent);
31030
+ fireEvent('local.event.deleted', {
31031
+ users: [],
31032
+ files: [],
31033
+ communities: [],
31034
+ videoStreamings: [],
31035
+ events: [deletedEvent],
31036
+ discussionCommunities: [],
31037
+ });
31038
+ };
31039
+ /* end_public_function */
31040
+
30540
31041
  /* begin_public_function
30541
31042
  id: event.get
30542
31043
  */
@@ -30560,20 +31061,302 @@ getEvent$1.locally = (eventId) => {
30560
31061
  * @category Event Live Object
30561
31062
  */
30562
31063
  const getEvent = (eventId, callback) => {
30563
- return liveObject(eventId, callback, 'eventId', getEvent$1, [onEventCreated, onEventUpdated, onEventDeleted], {
31064
+ return liveObject(eventId, callback, 'eventId', getEvent$1, [onEventUpdated, onEventDeleted, onLocalEventUpdated, onLocalEventDeleted], {
30564
31065
  callbackDataSelector: (data) => (data ? eventLinkedObject(data) : data),
30565
31066
  });
30566
31067
  };
30567
31068
  /* end_public_function */
30568
31069
 
31070
+ class EventPaginationController extends PaginationController {
31071
+ async getRequest(queryParams, token) {
31072
+ const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT } = queryParams, params = __rest(queryParams, ["limit"]);
31073
+ const options = token ? { token } : { limit };
31074
+ const { data: response } = await this.http.get(`/api/v1/events`, { params: Object.assign(Object.assign({}, params), { options }) });
31075
+ return response;
31076
+ }
31077
+ }
31078
+
31079
+ class EventQueryStreamController extends QueryStreamController {
31080
+ constructor(query, cacheKey, notifyChange, preparePayload) {
31081
+ super(query, cacheKey);
31082
+ this.notifyChange = notifyChange;
31083
+ this.preparePayload = preparePayload;
31084
+ }
31085
+ async saveToMainDB(response) {
31086
+ const processedPayload = this.preparePayload(response);
31087
+ const client = getActiveClient();
31088
+ const cachedAt = client.cache && Date.now();
31089
+ if (client.cache)
31090
+ ingestInCache(processedPayload, { cachedAt });
31091
+ }
31092
+ appendToQueryStream(response, direction, refresh = false) {
31093
+ var _a, _b;
31094
+ if (refresh) {
31095
+ pushToCache(this.cacheKey, { data: response.events.map(getResolver('event')) });
31096
+ }
31097
+ else {
31098
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
31099
+ const events = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
31100
+ pushToCache(this.cacheKey, Object.assign(Object.assign({}, collection), { data: [...new Set([...events, ...response.events.map(getResolver('event'))])] }));
31101
+ }
31102
+ }
31103
+ reactor(action) {
31104
+ return (event) => {
31105
+ var _a;
31106
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
31107
+ if (!collection)
31108
+ return;
31109
+ if (action === EventActionsEnum.OnEventCreated) {
31110
+ collection.data = [...new Set([event.eventId, ...collection.data])];
31111
+ }
31112
+ if (action === EventActionsEnum.OnEventDeleted) {
31113
+ collection.data = collection.data.filter(eventId => eventId !== event.eventId);
31114
+ }
31115
+ pushToCache(this.cacheKey, collection);
31116
+ this.notifyChange({ origin: "event" /* Amity.LiveDataOrigin.EVENT */, loading: false });
31117
+ };
31118
+ }
31119
+ subscribeRTE(createSubscriber) {
31120
+ return createSubscriber.map(subscriber => subscriber.fn(this.reactor(subscriber.action)));
31121
+ }
31122
+ }
31123
+
31124
+ class EventLiveCollectionController extends LiveCollectionController {
31125
+ constructor(query, callback) {
31126
+ const queryStreamId = hash__default["default"](query);
31127
+ const cacheKey = ['eventResponse', 'collection', queryStreamId];
31128
+ const paginationController = new EventPaginationController(query);
31129
+ super(paginationController, queryStreamId, cacheKey, callback);
31130
+ this.query = query;
31131
+ this.queryStreamController = new EventQueryStreamController(this.query, this.cacheKey, this.notifyChange.bind(this), prepareEventPayload);
31132
+ this.callback = callback.bind(this);
31133
+ this.loadPage({ initial: true });
31134
+ }
31135
+ setup() {
31136
+ var _a;
31137
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
31138
+ if (!collection)
31139
+ pushToCache(this.cacheKey, { data: [], params: {} });
31140
+ }
31141
+ async persistModel(queryPayload) {
31142
+ await this.queryStreamController.saveToMainDB(queryPayload);
31143
+ }
31144
+ persistQueryStream({ response, direction, refresh, }) {
31145
+ this.queryStreamController.appendToQueryStream(response, direction, refresh);
31146
+ }
31147
+ startSubscription() {
31148
+ return this.queryStreamController.subscribeRTE([
31149
+ { fn: onEventCreated, action: EventActionsEnum.OnEventCreated },
31150
+ { fn: onEventUpdated, action: EventActionsEnum.OnEventUpdated },
31151
+ { fn: onEventDeleted, action: EventActionsEnum.OnEventDeleted },
31152
+ { fn: onLocalEventCreated, action: EventActionsEnum.OnEventCreated },
31153
+ { fn: onLocalEventUpdated, action: EventActionsEnum.OnEventUpdated },
31154
+ { fn: onLocalEventDeleted, action: EventActionsEnum.OnEventDeleted },
31155
+ ]);
31156
+ }
31157
+ notifyChange({ origin, loading, error }) {
31158
+ var _a, _b;
31159
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
31160
+ if (!collection)
31161
+ return;
31162
+ const data = ((_b = collection.data
31163
+ .map(eventId => pullFromCache(['eventRSVPs', 'get', eventId]))
31164
+ .filter(isNonNullable)
31165
+ .map(({ data }) => data)) !== null && _b !== void 0 ? _b : []).map(LinkedObject.event);
31166
+ if (!this.shouldNotify(data) && origin === "event" /* Amity.LiveDataOrigin.EVENT */)
31167
+ return;
31168
+ this.callback({
31169
+ data,
31170
+ error,
31171
+ loading,
31172
+ hasNextPage: !!this.paginationController.getNextToken(),
31173
+ onNextPage: () => this.loadPage({ direction: "next" /* Amity.LiveCollectionPageDirection.NEXT */ }),
31174
+ });
31175
+ }
31176
+ }
31177
+
31178
+ /**
31179
+ * Get events
31180
+ *
31181
+ * @param params the query parameters
31182
+ * @param callback the callback to be called when the events are updated
31183
+ * @returns events
31184
+ *
31185
+ * @category Event Live Collection
31186
+ *
31187
+ */
31188
+ const getEvents = (params, callback, config) => {
31189
+ const { log, cache } = getActiveClient();
31190
+ if (!cache)
31191
+ console.log(ENABLE_CACHE_MESSAGE);
31192
+ const timestamp = Date.now();
31193
+ log(`getEvents: (tmpid: ${timestamp}) > listen`);
31194
+ const eventLiveCollection = new EventLiveCollectionController(params, callback);
31195
+ const disposers = eventLiveCollection.startSubscription();
31196
+ const cacheKey = eventLiveCollection.getCacheKey();
31197
+ disposers.push(() => dropFromCache(cacheKey));
31198
+ return () => {
31199
+ log(`getEvents (tmpid: ${timestamp}) > dispose`);
31200
+ disposers.forEach(fn => fn());
31201
+ };
31202
+ };
31203
+
31204
+ class MyEventPaginationController extends PaginationController {
31205
+ async getRequest(queryParams, token) {
31206
+ const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT } = queryParams, params = __rest(queryParams, ["limit"]);
31207
+ const options = token ? { token } : { limit };
31208
+ const { data: response } = await this.http.get(`/api/v1/events/me/rsvps`, { params: Object.assign(Object.assign({}, params), { options }) });
31209
+ return response;
31210
+ }
31211
+ }
31212
+
31213
+ class MyEventQueryStreamController extends QueryStreamController {
31214
+ constructor(query, cacheKey, notifyChange, preparePayload) {
31215
+ super(query, cacheKey);
31216
+ this.notifyChange = notifyChange;
31217
+ this.preparePayload = preparePayload;
31218
+ }
31219
+ async saveToMainDB(response) {
31220
+ const processedPayload = this.preparePayload(response);
31221
+ const client = getActiveClient();
31222
+ const cachedAt = client.cache && Date.now();
31223
+ if (client.cache)
31224
+ ingestInCache(processedPayload, { cachedAt });
31225
+ }
31226
+ appendToQueryStream(response, direction, refresh = false) {
31227
+ var _a, _b;
31228
+ if (refresh) {
31229
+ pushToCache(this.cacheKey, { data: response.events.map(getResolver('event')) });
31230
+ }
31231
+ else {
31232
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
31233
+ const events = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
31234
+ pushToCache(this.cacheKey, Object.assign(Object.assign({}, collection), { data: [...new Set([...events, ...response.events.map(getResolver('event'))])] }));
31235
+ }
31236
+ }
31237
+ reactor(action) {
31238
+ return (event) => {
31239
+ var _a;
31240
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
31241
+ if (!collection)
31242
+ return;
31243
+ if (action === EventActionsEnum.OnEventCreated) {
31244
+ const client = getActiveClient();
31245
+ if (client.userId !== event.userId)
31246
+ return;
31247
+ collection.data = [...new Set([event.eventId, ...collection.data])];
31248
+ }
31249
+ if (action === EventActionsEnum.OnEventDeleted) {
31250
+ collection.data = collection.data.filter(eventId => eventId !== event.eventId);
31251
+ }
31252
+ pushToCache(this.cacheKey, collection);
31253
+ this.notifyChange({ origin: "event" /* Amity.LiveDataOrigin.EVENT */, loading: false });
31254
+ };
31255
+ }
31256
+ subscribeRTE(createSubscriber) {
31257
+ return createSubscriber.map(subscriber => subscriber.fn(this.reactor(subscriber.action)));
31258
+ }
31259
+ }
31260
+
31261
+ class MyEventLiveCollectionController extends LiveCollectionController {
31262
+ constructor(query, callback) {
31263
+ const queryStreamId = hash__default["default"](query);
31264
+ const cacheKey = ['event', 'collection', queryStreamId];
31265
+ const paginationController = new MyEventPaginationController(query);
31266
+ super(paginationController, queryStreamId, cacheKey, callback);
31267
+ this.query = query;
31268
+ this.queryStreamController = new MyEventQueryStreamController(this.query, this.cacheKey, this.notifyChange.bind(this), prepareEventPayload);
31269
+ this.callback = callback.bind(this);
31270
+ this.loadPage({ initial: true });
31271
+ }
31272
+ setup() {
31273
+ var _a;
31274
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
31275
+ if (!collection)
31276
+ pushToCache(this.cacheKey, { data: [], params: {} });
31277
+ }
31278
+ async persistModel(queryPayload) {
31279
+ await this.queryStreamController.saveToMainDB(queryPayload);
31280
+ }
31281
+ persistQueryStream({ response, direction, refresh, }) {
31282
+ this.queryStreamController.appendToQueryStream(response, direction, refresh);
31283
+ }
31284
+ startSubscription() {
31285
+ return this.queryStreamController.subscribeRTE([
31286
+ { fn: onEventCreated, action: EventActionsEnum.OnEventCreated },
31287
+ { fn: onEventUpdated, action: EventActionsEnum.OnEventUpdated },
31288
+ { fn: onEventDeleted, action: EventActionsEnum.OnEventDeleted },
31289
+ { fn: onLocalEventCreated, action: EventActionsEnum.OnEventCreated },
31290
+ { fn: onLocalEventUpdated, action: EventActionsEnum.OnEventUpdated },
31291
+ { fn: onLocalEventDeleted, action: EventActionsEnum.OnEventDeleted },
31292
+ ]);
31293
+ }
31294
+ notifyChange({ origin, loading, error }) {
31295
+ var _a, _b;
31296
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
31297
+ if (!collection)
31298
+ return;
31299
+ const data = ((_b = collection.data
31300
+ .map(eventId => pullFromCache(['event', 'get', eventId]))
31301
+ .filter(isNonNullable)
31302
+ .map(({ data }) => data)) !== null && _b !== void 0 ? _b : []).map(LinkedObject.event);
31303
+ if (!this.shouldNotify(data) && origin === "event" /* Amity.LiveDataOrigin.EVENT */)
31304
+ return;
31305
+ this.callback({
31306
+ data,
31307
+ error,
31308
+ loading,
31309
+ hasNextPage: !!this.paginationController.getNextToken(),
31310
+ onNextPage: () => this.loadPage({ direction: "next" /* Amity.LiveCollectionPageDirection.NEXT */ }),
31311
+ });
31312
+ }
31313
+ }
31314
+
31315
+ /**
31316
+ * Get my events
31317
+ *
31318
+ * @param params the query parameters
31319
+ * @param callback the callback to be called when the events are updated
31320
+ * @returns events
31321
+ *
31322
+ * @category Event Live Collection
31323
+ *
31324
+ */
31325
+ const getMyEvents = (params, callback, config) => {
31326
+ const { log, cache } = getActiveClient();
31327
+ if (!cache)
31328
+ console.log(ENABLE_CACHE_MESSAGE);
31329
+ const timestamp = Date.now();
31330
+ log(`getMyEvents: (tmpid: ${timestamp}) > listen`);
31331
+ const myEventLiveCollection = new MyEventLiveCollectionController(params, callback);
31332
+ const disposers = myEventLiveCollection.startSubscription();
31333
+ const cacheKey = myEventLiveCollection.getCacheKey();
31334
+ disposers.push(() => dropFromCache(cacheKey));
31335
+ return () => {
31336
+ log(`getMyEvents (tmpid: ${timestamp}) > dispose`);
31337
+ disposers.forEach(fn => fn());
31338
+ };
31339
+ };
31340
+
30569
31341
  var index = /*#__PURE__*/Object.freeze({
30570
31342
  __proto__: null,
30571
31343
  createEvent: createEvent,
30572
31344
  updateEvent: updateEvent,
31345
+ deleteEvent: deleteEvent,
30573
31346
  onEventCreated: onEventCreated,
30574
31347
  onEventUpdated: onEventUpdated,
30575
31348
  onEventDeleted: onEventDeleted,
30576
- getEvent: getEvent
31349
+ onLocalEventCreated: onLocalEventCreated,
31350
+ onLocalEventUpdated: onLocalEventUpdated,
31351
+ onLocalEventDeleted: onLocalEventDeleted,
31352
+ onRSVPCreated: onRSVPCreated,
31353
+ onRSVPUpdated: onRSVPUpdated,
31354
+ onLocalRSVPCreated: onLocalRSVPCreated,
31355
+ onLocalRSVPUpdated: onLocalRSVPUpdated,
31356
+ getEvent: getEvent,
31357
+ getEvents: getEvents,
31358
+ getMyEvents: getMyEvents,
31359
+ getRSVPs: getRSVPs
30577
31360
  });
30578
31361
 
30579
31362
  exports.API_REGIONS = API_REGIONS;