@amityco/ts-sdk 7.11.1-8ca038e4.0 → 7.11.1-b8fc6951.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 (52) hide show
  1. package/dist/@types/core/transport.d.ts +3 -0
  2. package/dist/@types/core/transport.d.ts.map +1 -1
  3. package/dist/@types/domains/community.d.ts +8 -1
  4. package/dist/@types/domains/community.d.ts.map +1 -1
  5. package/dist/@types/domains/event.d.ts +9 -0
  6. package/dist/@types/domains/event.d.ts.map +1 -1
  7. package/dist/@types/domains/partials.d.ts +2 -2
  8. package/dist/@types/domains/partials.d.ts.map +1 -1
  9. package/dist/core/model/idResolvers.d.ts.map +1 -1
  10. package/dist/core/model/index.d.ts.map +1 -1
  11. package/dist/eventRepository/api/deleteEvent.d.ts +15 -0
  12. package/dist/eventRepository/api/deleteEvent.d.ts.map +1 -0
  13. package/dist/eventRepository/api/index.d.ts +1 -0
  14. package/dist/eventRepository/api/index.d.ts.map +1 -1
  15. package/dist/eventRepository/events/enums.d.ts +6 -0
  16. package/dist/eventRepository/events/enums.d.ts.map +1 -0
  17. package/dist/eventRepository/events/index.d.ts +4 -0
  18. package/dist/eventRepository/events/index.d.ts.map +1 -0
  19. package/dist/eventRepository/events/onEventCreated.d.ts +17 -0
  20. package/dist/eventRepository/events/onEventCreated.d.ts.map +1 -0
  21. package/dist/eventRepository/events/onEventDeleted.d.ts +17 -0
  22. package/dist/eventRepository/events/onEventDeleted.d.ts.map +1 -0
  23. package/dist/eventRepository/events/onEventUpdated.d.ts +17 -0
  24. package/dist/eventRepository/events/onEventUpdated.d.ts.map +1 -0
  25. package/dist/eventRepository/index.d.ts +2 -0
  26. package/dist/eventRepository/index.d.ts.map +1 -1
  27. package/dist/eventRepository/internalApi/getEvent.d.ts +32 -0
  28. package/dist/eventRepository/internalApi/getEvent.d.ts.map +1 -0
  29. package/dist/eventRepository/internalApi/index.d.ts +2 -0
  30. package/dist/eventRepository/internalApi/index.d.ts.map +1 -0
  31. package/dist/eventRepository/observers/getEvent.d.ts +21 -0
  32. package/dist/eventRepository/observers/getEvent.d.ts.map +1 -0
  33. package/dist/eventRepository/observers/getEvents/LiveCollectionController.d.ts +13 -0
  34. package/dist/eventRepository/observers/getEvents/LiveCollectionController.d.ts.map +1 -0
  35. package/dist/eventRepository/observers/getEvents/PaginationController.d.ts +5 -0
  36. package/dist/eventRepository/observers/getEvents/PaginationController.d.ts.map +1 -0
  37. package/dist/eventRepository/observers/getEvents/QueryStreamController.d.ts +15 -0
  38. package/dist/eventRepository/observers/getEvents/QueryStreamController.d.ts.map +1 -0
  39. package/dist/eventRepository/observers/getEvents.d.ts +12 -0
  40. package/dist/eventRepository/observers/getEvents.d.ts.map +1 -0
  41. package/dist/eventRepository/observers/index.d.ts +3 -0
  42. package/dist/eventRepository/observers/index.d.ts.map +1 -0
  43. package/dist/eventRepository/utils/createEventEventSubscriber.d.ts +2 -0
  44. package/dist/eventRepository/utils/createEventEventSubscriber.d.ts.map +1 -0
  45. package/dist/eventRepository/utils/index.d.ts +1 -0
  46. package/dist/eventRepository/utils/index.d.ts.map +1 -1
  47. package/dist/index.cjs.js +346 -3
  48. package/dist/index.esm.js +346 -3
  49. package/dist/index.umd.js +3 -3
  50. package/dist/messagePreview/utils/getChannelMessagePreviewWithUser.d.ts +1 -1
  51. package/dist/utils/linkedObject/eventLinkObject.d.ts.map +1 -1
  52. package/package.json +1 -1
package/dist/index.cjs.js CHANGED
@@ -658,6 +658,7 @@ const idResolvers = {
658
658
  notificationTraySeen: ({ userId }) => userId,
659
659
  invitation: ({ _id }) => _id,
660
660
  joinRequest: ({ joinRequestId }) => joinRequestId,
661
+ event: ({ eventId }) => eventId,
661
662
  };
662
663
  /**
663
664
  * Retrieve the id resolver matching a domain name
@@ -713,6 +714,8 @@ const PAYLOAD2MODEL = {
713
714
  notificationTrayItems: 'notificationTrayItem',
714
715
  invitations: 'invitation',
715
716
  joinRequests: 'joinRequest',
717
+ events: 'event',
718
+ discussionCommunities: 'community',
716
719
  };
717
720
  /** hidden */
718
721
  const isOutdated = (prevData, nextData) => {
@@ -13684,9 +13687,13 @@ const eventLinkedObject = (event) => {
13684
13687
  return userLinkedObject(cacheData.data);
13685
13688
  },
13686
13689
  get discussionCommunity() {
13687
- if (!event.communityId)
13690
+ if (!event.discussionCommunityId)
13688
13691
  return;
13689
- const cacheData = pullFromCache(['community', 'get', event.communityId]);
13692
+ const cacheData = pullFromCache([
13693
+ 'community',
13694
+ 'get',
13695
+ event.discussionCommunityId,
13696
+ ]);
13690
13697
  if (!(cacheData === null || cacheData === void 0 ? void 0 : cacheData.data))
13691
13698
  return;
13692
13699
  return communityLinkedObject(cacheData.data);
@@ -30341,6 +30348,26 @@ const prepareEventPayload = (rawPayload) => {
30341
30348
  return Object.assign(Object.assign({}, rawPayload), { users: rawPayload.users.map(convertRawUserToInternalUser) });
30342
30349
  };
30343
30350
 
30351
+ const createEventEventSubscriber = (event, callback) => {
30352
+ const client = getActiveClient();
30353
+ const filter = (payload) => {
30354
+ const unpackedPayload = prepareEventPayload(payload);
30355
+ if (!client.cache) {
30356
+ callback(unpackedPayload.events[0]);
30357
+ }
30358
+ else {
30359
+ ingestInCache(unpackedPayload);
30360
+ const event = pullFromCache([
30361
+ 'event',
30362
+ 'get',
30363
+ unpackedPayload.events[0].eventId,
30364
+ ]);
30365
+ callback(event.data);
30366
+ }
30367
+ };
30368
+ return createEventSubscriber(client, event, event, filter);
30369
+ };
30370
+
30344
30371
  /* begin_public_function
30345
30372
  id: event.create
30346
30373
  */
@@ -30408,10 +30435,326 @@ const updateEvent = async (eventId, bundle) => {
30408
30435
  };
30409
30436
  /* end_public_function */
30410
30437
 
30438
+ /* begin_public_function
30439
+ id: event.get
30440
+ */
30441
+ /**
30442
+ * ```js
30443
+ * import { EventRepository } from '@amityco/ts-sdk'
30444
+ * const event = await EventRepository.getEvent(eventId)
30445
+ * ```
30446
+ *
30447
+ * Fetches a {@link Amity.Event} object
30448
+ *
30449
+ * @param eventId the ID of the {@link Amity.Event} to fetch
30450
+ * @returns the associated {@link Amity.Event} object
30451
+ *
30452
+ * @category Event API
30453
+ * @async
30454
+ */
30455
+ const getEvent$1 = async (eventId) => {
30456
+ const client = getActiveClient();
30457
+ client.log('event/getEvent', eventId);
30458
+ const { data: payload } = await client.http.get(`/api/v3/events/${eventId}`);
30459
+ const data = prepareEventPayload(payload);
30460
+ const cachedAt = client.cache && Date.now();
30461
+ if (client.cache)
30462
+ ingestInCache(data, { cachedAt });
30463
+ return {
30464
+ data: data.events.find(event => event.eventId === eventId),
30465
+ cachedAt,
30466
+ };
30467
+ };
30468
+ /* end_public_function */
30469
+ /**
30470
+ * ```js
30471
+ * import { EventRepository } from '@amityco/ts-sdk'
30472
+ * const event = EventRepository.getEvent.locally(eventId)
30473
+ * ```
30474
+ *
30475
+ * Fetches a {@link Amity.Event} object in cache
30476
+ *
30477
+ * @param eventId the ID of the {@link Amity.Event} to fetch
30478
+ * @returns the associated {@link Amity.Event} object
30479
+ *
30480
+ * @category Event API
30481
+ */
30482
+ getEvent$1.locally = (eventId) => {
30483
+ const client = getActiveClient();
30484
+ client.log('event/getEvent.locally', eventId);
30485
+ if (!client.cache)
30486
+ return;
30487
+ const cache = pullFromCache(['event', 'get', eventId]);
30488
+ if (!cache)
30489
+ return;
30490
+ return {
30491
+ data: cache.data,
30492
+ cachedAt: cache.cachedAt,
30493
+ };
30494
+ };
30495
+
30496
+ /* begin_public_function
30497
+ id: event.delete
30498
+ */
30499
+ /**
30500
+ * ```js
30501
+ * import { EventRepository } from '@amityco/ts-sdk'
30502
+ * const { success } = await EventRepository.deleteEvent(eventId)
30503
+ * ```
30504
+ *
30505
+ * Deletes a {@link Amity.Event}
30506
+ *
30507
+ * @param eventId The {@link Amity.Event} ID to delete
30508
+ *
30509
+ * @category Event API
30510
+ * @async
30511
+ */
30512
+ const deleteEvent = async (eventId) => {
30513
+ const client = getActiveClient();
30514
+ client.log('event/deleteEvent', eventId);
30515
+ const event = await getEvent$1(eventId);
30516
+ await client.http.delete(`/api/v3/events/${eventId}`);
30517
+ const deletedEvent = Object.assign(Object.assign({}, event.data), { isDeleted: true });
30518
+ upsertInCache(['event', 'get', eventId], deletedEvent);
30519
+ fireEvent('event.deleted', {
30520
+ users: [],
30521
+ files: [],
30522
+ communities: [],
30523
+ videoStreamings: [],
30524
+ events: [deletedEvent],
30525
+ discussionCommunities: [],
30526
+ });
30527
+ };
30528
+ /* end_public_function */
30529
+
30530
+ /**
30531
+ * ```js
30532
+ * import { EventRepository } from '@amityco/ts-sdk'
30533
+ * const dispose = EventRepository.onEventCreated(event => {
30534
+ * // ...
30535
+ * })
30536
+ * ```
30537
+ *
30538
+ * Fired when a {@link Amity.Event} has been created
30539
+ *
30540
+ * @param callback The function to call when the event was fired
30541
+ * @returns an {@link Amity.Unsubscriber} function to stop listening
30542
+ *
30543
+ * @category Event Events
30544
+ */
30545
+ const onEventCreated = (callback) => createEventEventSubscriber('event.created', callback);
30546
+
30547
+ /**
30548
+ * ```js
30549
+ * import { EventRepository } from '@amityco/ts-sdk'
30550
+ * const dispose = EventRepository.onEventUpdated(event => {
30551
+ * // ...
30552
+ * })
30553
+ * ```
30554
+ *
30555
+ * Fired when a {@link Amity.Event} has been updated
30556
+ *
30557
+ * @param callback The function to call when the event was fired
30558
+ * @returns an {@link Amity.Unsubscriber} function to stop listening
30559
+ *
30560
+ * @category Event Events
30561
+ */
30562
+ const onEventUpdated = (callback) => createEventEventSubscriber('event.updated', callback);
30563
+
30564
+ /**
30565
+ * ```js
30566
+ * import { EventRepository } from '@amityco/ts-sdk'
30567
+ * const dispose = EventRepository.onEventDeleted(event => {
30568
+ * // ...
30569
+ * })
30570
+ * ```
30571
+ *
30572
+ * Fired when a {@link Amity.Event} has been deleted
30573
+ *
30574
+ * @param callback The function to call when the event was fired
30575
+ * @returns an {@link Amity.Unsubscriber} function to stop listening
30576
+ *
30577
+ * @category Event Events
30578
+ */
30579
+ const onEventDeleted = (callback) => createEventEventSubscriber('event.deleted', callback);
30580
+
30581
+ /* begin_public_function
30582
+ id: event.get
30583
+ */
30584
+ /**
30585
+ * ```js
30586
+ * import { EventRepository } from '@amityco/ts-sdk';
30587
+ *
30588
+ * let event;
30589
+ *
30590
+ * const unsubscribe = EventRepository.getEvent(eventId, response => {
30591
+ * event = response.data;
30592
+ * });
30593
+ * ```
30594
+ *
30595
+ * Observe all mutation on a given {@link Amity.Event}
30596
+ *
30597
+ * @param eventId the ID of the event to observe
30598
+ * @param callback the function to call when new snapshot of event are available
30599
+ * @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the event
30600
+ *
30601
+ * @category Event Live Object
30602
+ */
30603
+ const getEvent = (eventId, callback) => {
30604
+ return liveObject(eventId, callback, 'eventId', getEvent$1, [onEventCreated, onEventUpdated, onEventDeleted], {
30605
+ callbackDataSelector: (data) => (data ? eventLinkedObject(data) : data),
30606
+ });
30607
+ };
30608
+ /* end_public_function */
30609
+
30610
+ var EventActionsEnum;
30611
+ (function (EventActionsEnum) {
30612
+ EventActionsEnum["OnEventCreated"] = "onEventCreated";
30613
+ EventActionsEnum["OnEventUpdated"] = "onEventUpdated";
30614
+ EventActionsEnum["OnEventDeleted"] = "onEventDeleted";
30615
+ })(EventActionsEnum || (EventActionsEnum = {}));
30616
+
30617
+ class EventPaginationController extends PaginationController {
30618
+ async getRequest(queryParams, token) {
30619
+ const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT } = queryParams, params = __rest(queryParams, ["limit"]);
30620
+ const options = token ? { token } : { limit };
30621
+ const { data: response } = await this.http.get(`/api/v1/events`, { params: Object.assign(Object.assign({}, params), { options }) });
30622
+ return response;
30623
+ }
30624
+ }
30625
+
30626
+ class EventQueryStreamController extends QueryStreamController {
30627
+ constructor(query, cacheKey, notifyChange, preparePayload) {
30628
+ super(query, cacheKey);
30629
+ this.notifyChange = notifyChange;
30630
+ this.preparePayload = preparePayload;
30631
+ }
30632
+ async saveToMainDB(response) {
30633
+ const processedPayload = this.preparePayload(response);
30634
+ const client = getActiveClient();
30635
+ const cachedAt = client.cache && Date.now();
30636
+ if (client.cache)
30637
+ ingestInCache(processedPayload, { cachedAt });
30638
+ }
30639
+ appendToQueryStream(response, direction, refresh = false) {
30640
+ var _a, _b;
30641
+ if (refresh) {
30642
+ pushToCache(this.cacheKey, { data: response.events.map(getResolver('event')) });
30643
+ }
30644
+ else {
30645
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
30646
+ const events = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
30647
+ pushToCache(this.cacheKey, Object.assign(Object.assign({}, collection), { data: [...new Set([...events, ...response.events.map(getResolver('event'))])] }));
30648
+ }
30649
+ }
30650
+ reactor(action) {
30651
+ return (event) => {
30652
+ var _a;
30653
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
30654
+ if (!collection)
30655
+ return;
30656
+ if (action === EventActionsEnum.OnEventCreated) {
30657
+ collection.data = [...new Set([event.eventId, ...collection.data])];
30658
+ }
30659
+ if (action === EventActionsEnum.OnEventDeleted) {
30660
+ collection.data = collection.data.filter(eventId => eventId !== event.eventId);
30661
+ }
30662
+ pushToCache(this.cacheKey, collection);
30663
+ this.notifyChange({ origin: "event" /* Amity.LiveDataOrigin.EVENT */, loading: false });
30664
+ };
30665
+ }
30666
+ subscribeRTE(createSubscriber) {
30667
+ return createSubscriber.map(subscriber => subscriber.fn(this.reactor(subscriber.action)));
30668
+ }
30669
+ }
30670
+
30671
+ class EventLiveCollectionController extends LiveCollectionController {
30672
+ constructor(query, callback) {
30673
+ const queryStreamId = hash__default["default"](query);
30674
+ const cacheKey = ['event', 'collection', queryStreamId];
30675
+ const paginationController = new EventPaginationController(query);
30676
+ super(paginationController, queryStreamId, cacheKey, callback);
30677
+ this.query = query;
30678
+ this.queryStreamController = new EventQueryStreamController(this.query, this.cacheKey, this.notifyChange.bind(this), prepareEventPayload);
30679
+ this.callback = callback.bind(this);
30680
+ this.loadPage({ initial: true });
30681
+ }
30682
+ setup() {
30683
+ var _a;
30684
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
30685
+ if (!collection)
30686
+ pushToCache(this.cacheKey, { data: [], params: {} });
30687
+ }
30688
+ async persistModel(queryPayload) {
30689
+ await this.queryStreamController.saveToMainDB(queryPayload);
30690
+ }
30691
+ persistQueryStream({ response, direction, refresh, }) {
30692
+ this.queryStreamController.appendToQueryStream(response, direction, refresh);
30693
+ }
30694
+ startSubscription() {
30695
+ return this.queryStreamController.subscribeRTE([
30696
+ { fn: onEventCreated, action: EventActionsEnum.OnEventCreated },
30697
+ { fn: onEventUpdated, action: EventActionsEnum.OnEventUpdated },
30698
+ { fn: onEventDeleted, action: EventActionsEnum.OnEventDeleted },
30699
+ ]);
30700
+ }
30701
+ notifyChange({ origin, loading, error }) {
30702
+ var _a, _b;
30703
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
30704
+ if (!collection)
30705
+ return;
30706
+ const data = ((_b = collection.data
30707
+ .map(eventId => pullFromCache(['event', 'get', eventId]))
30708
+ .filter(isNonNullable)
30709
+ .map(({ data }) => data)) !== null && _b !== void 0 ? _b : []).map(LinkedObject.event);
30710
+ if (!this.shouldNotify(data) && origin === 'event')
30711
+ return;
30712
+ this.callback({
30713
+ data,
30714
+ error,
30715
+ loading,
30716
+ hasNextPage: !!this.paginationController.getNextToken(),
30717
+ onNextPage: () => this.loadPage({ direction: "next" /* Amity.LiveCollectionPageDirection.NEXT */ }),
30718
+ });
30719
+ }
30720
+ }
30721
+
30722
+ /**
30723
+ * Get events
30724
+ *
30725
+ * @param params the query parameters
30726
+ * @param callback the callback to be called when the events are updated
30727
+ * @returns events
30728
+ *
30729
+ * @category Event Live Collection
30730
+ *
30731
+ */
30732
+ const getEvents = (params, callback, config) => {
30733
+ const { log, cache } = getActiveClient();
30734
+ if (!cache)
30735
+ console.log(ENABLE_CACHE_MESSAGE);
30736
+ const timestamp = Date.now();
30737
+ log(`getEvents: (tmpid: ${timestamp}) > listen`);
30738
+ const eventLiveCollection = new EventLiveCollectionController(params, callback);
30739
+ const disposers = eventLiveCollection.startSubscription();
30740
+ const cacheKey = eventLiveCollection.getCacheKey();
30741
+ disposers.push(() => dropFromCache(cacheKey));
30742
+ return () => {
30743
+ log(`getEvents (tmpid: ${timestamp}) > dispose`);
30744
+ disposers.forEach(fn => fn());
30745
+ };
30746
+ };
30747
+
30411
30748
  var index = /*#__PURE__*/Object.freeze({
30412
30749
  __proto__: null,
30413
30750
  createEvent: createEvent,
30414
- updateEvent: updateEvent
30751
+ updateEvent: updateEvent,
30752
+ deleteEvent: deleteEvent,
30753
+ onEventCreated: onEventCreated,
30754
+ onEventUpdated: onEventUpdated,
30755
+ onEventDeleted: onEventDeleted,
30756
+ getEvent: getEvent,
30757
+ getEvents: getEvents
30415
30758
  });
30416
30759
 
30417
30760
  exports.API_REGIONS = API_REGIONS;