@amityco/ts-sdk 6.14.2-a07f15b.0 → 6.14.2-e0fc421.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.
- package/dist/@types/core/events.d.ts +5 -1
- package/dist/@types/core/events.d.ts.map +1 -1
- package/dist/@types/core/model.d.ts +2 -0
- package/dist/@types/core/model.d.ts.map +1 -1
- package/dist/@types/core/payload.d.ts +14 -0
- package/dist/@types/core/payload.d.ts.map +1 -1
- package/dist/@types/domains/analytics.d.ts +4 -1
- package/dist/@types/domains/analytics.d.ts.map +1 -1
- package/dist/@types/domains/comment.d.ts +1 -1
- package/dist/@types/domains/comment.d.ts.map +1 -1
- package/dist/@types/domains/community.d.ts +4 -1
- package/dist/@types/domains/community.d.ts.map +1 -1
- package/dist/@types/domains/partials.d.ts +8 -0
- package/dist/@types/domains/partials.d.ts.map +1 -1
- package/dist/@types/domains/story.d.ts +112 -0
- package/dist/@types/domains/story.d.ts.map +1 -0
- package/dist/@types/index.d.ts +1 -0
- package/dist/@types/index.d.ts.map +1 -1
- package/dist/analytic/constant.d.ts +1 -0
- package/dist/analytic/constant.d.ts.map +1 -1
- package/dist/analytic/service/analytic/AnalyticsEngine.d.ts +1 -0
- package/dist/analytic/service/analytic/AnalyticsEngine.d.ts.map +1 -1
- package/dist/analytic/service/analytic/AnalyticsEventCapturer.d.ts +5 -0
- package/dist/analytic/service/analytic/AnalyticsEventCapturer.d.ts.map +1 -1
- package/dist/analytic/service/analytic/AnalyticsEventSyncer.d.ts +2 -0
- package/dist/analytic/service/analytic/AnalyticsEventSyncer.d.ts.map +1 -1
- package/dist/communityRepository/api/createCommunity.d.ts +1 -1
- package/dist/communityRepository/api/createCommunity.d.ts.map +1 -1
- package/dist/communityRepository/api/updateCommunity.d.ts +1 -1
- package/dist/communityRepository/api/updateCommunity.d.ts.map +1 -1
- package/dist/communityRepository/utils/payload.d.ts +2 -1
- package/dist/communityRepository/utils/payload.d.ts.map +1 -1
- package/dist/core/events.d.ts +3 -3
- package/dist/core/events.d.ts.map +1 -1
- package/dist/core/model/idResolvers.d.ts.map +1 -1
- package/dist/core/model/index.d.ts.map +1 -1
- package/dist/index.cjs.js +495 -76
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +480 -62
- package/dist/index.umd.js +2 -2
- package/dist/storyRepository/api/createImageStory.d.ts +16 -0
- package/dist/storyRepository/api/createImageStory.d.ts.map +1 -0
- package/dist/storyRepository/api/createVideoStory.d.ts +15 -0
- package/dist/storyRepository/api/createVideoStory.d.ts.map +1 -0
- package/dist/storyRepository/api/hardDeleteStory.d.ts +2 -0
- package/dist/storyRepository/api/hardDeleteStory.d.ts.map +1 -0
- package/dist/storyRepository/api/index.d.ts +5 -0
- package/dist/storyRepository/api/index.d.ts.map +1 -0
- package/dist/storyRepository/api/softDeleteStory.d.ts +2 -0
- package/dist/storyRepository/api/softDeleteStory.d.ts.map +1 -0
- package/dist/storyRepository/events/onStoryCreated.d.ts +2 -0
- package/dist/storyRepository/events/onStoryCreated.d.ts.map +1 -0
- package/dist/storyRepository/events/onStoryDeleted.d.ts +2 -0
- package/dist/storyRepository/events/onStoryDeleted.d.ts.map +1 -0
- package/dist/storyRepository/index.d.ts +3 -0
- package/dist/storyRepository/index.d.ts.map +1 -0
- package/dist/storyRepository/internalApi/createStory.d.ts +2 -0
- package/dist/storyRepository/internalApi/createStory.d.ts.map +1 -0
- package/dist/storyRepository/internalApi/deleteStory.d.ts +2 -0
- package/dist/storyRepository/internalApi/deleteStory.d.ts.map +1 -0
- package/dist/storyRepository/internalApi/getActiveStoriesByTarget.d.ts +2 -0
- package/dist/storyRepository/internalApi/getActiveStoriesByTarget.d.ts.map +1 -0
- package/dist/storyRepository/observers/getActiveStoriesByTarget.d.ts +2 -0
- package/dist/storyRepository/observers/getActiveStoriesByTarget.d.ts.map +1 -0
- package/dist/storyRepository/observers/index.d.ts +2 -0
- package/dist/storyRepository/observers/index.d.ts.map +1 -0
- package/dist/storyRepository/utils/convertRawToStory.d.ts +11 -0
- package/dist/storyRepository/utils/convertRawToStory.d.ts.map +1 -0
- package/dist/storyRepository/utils/convertStoryPayloadToRaw.d.ts +2 -0
- package/dist/storyRepository/utils/convertStoryPayloadToRaw.d.ts.map +1 -0
- package/dist/storyRepository/utils/createOptimisticEvent.d.ts +6 -0
- package/dist/storyRepository/utils/createOptimisticEvent.d.ts.map +1 -0
- package/dist/storyRepository/utils/getStoryCache.d.ts +5 -0
- package/dist/storyRepository/utils/getStoryCache.d.ts.map +1 -0
- package/dist/utils/constants.d.ts +5 -0
- package/dist/utils/constants.d.ts.map +1 -1
- package/dist/utils/linkedObject/index.d.ts +1 -0
- package/dist/utils/linkedObject/index.d.ts.map +1 -1
- package/dist/utils/linkedObject/storyLinkedObject.d.ts +2 -0
- package/dist/utils/linkedObject/storyLinkedObject.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/@types/core/events.ts +7 -1
- package/src/@types/core/model.ts +4 -0
- package/src/@types/core/payload.ts +19 -0
- package/src/@types/domains/analytics.ts +4 -1
- package/src/@types/domains/comment.ts +1 -1
- package/src/@types/domains/community.ts +7 -3
- package/src/@types/domains/partials.ts +10 -0
- package/src/@types/domains/story.ts +133 -0
- package/src/@types/index.ts +1 -3
- package/src/analytic/constant.ts +2 -1
- package/src/analytic/service/analytic/AnalyticsEngine.ts +9 -0
- package/src/analytic/service/analytic/AnalyticsEventCapturer.ts +58 -8
- package/src/analytic/service/analytic/AnalyticsEventSyncer.ts +34 -4
- package/src/communityRepository/api/createCommunity.ts +7 -6
- package/src/communityRepository/api/updateCommunity.ts +4 -3
- package/src/communityRepository/utils/payload.ts +7 -2
- package/src/core/model/idResolvers.ts +1 -0
- package/src/core/model/index.ts +1 -0
- package/src/index.ts +2 -0
- package/src/storyRepository/api/createImageStory.ts +78 -0
- package/src/storyRepository/api/createVideoStory.ts +79 -0
- package/src/storyRepository/api/hardDeleteStory.ts +6 -0
- package/src/storyRepository/api/index.ts +4 -0
- package/src/storyRepository/api/softDeleteStory.ts +6 -0
- package/src/storyRepository/events/onStoryCreated.ts +14 -0
- package/src/storyRepository/events/onStoryDeleted.ts +14 -0
- package/src/storyRepository/index.ts +2 -0
- package/src/storyRepository/internalApi/createStory.ts +22 -0
- package/src/storyRepository/internalApi/deleteStory.ts +35 -0
- package/src/storyRepository/internalApi/getActiveStoriesByTarget.ts +36 -0
- package/src/storyRepository/observers/getActiveStoriesByTarget.ts +104 -0
- package/src/storyRepository/observers/index.ts +1 -0
- package/src/storyRepository/utils/convertRawToStory.ts +13 -0
- package/src/storyRepository/utils/convertStoryPayloadToRaw.ts +43 -0
- package/src/storyRepository/utils/createOptimisticEvent.ts +63 -0
- package/src/storyRepository/utils/getStoryCache.ts +6 -0
- package/src/utils/constants.ts +5 -0
- package/src/utils/linkedObject/index.ts +2 -0
- package/src/utils/linkedObject/storyLinkedObject.ts +28 -0
package/dist/index.cjs.js
CHANGED
|
@@ -25,6 +25,31 @@ var uuid__default = /*#__PURE__*/_interopDefaultLegacy(uuid$1);
|
|
|
25
25
|
var hash__default = /*#__PURE__*/_interopDefaultLegacy(hash);
|
|
26
26
|
var Hls__default = /*#__PURE__*/_interopDefaultLegacy(Hls);
|
|
27
27
|
|
|
28
|
+
const FileType = Object.freeze({
|
|
29
|
+
FILE: 'file',
|
|
30
|
+
IMAGE: 'image',
|
|
31
|
+
VIDEO: 'video',
|
|
32
|
+
});
|
|
33
|
+
const VideoResolution = Object.freeze({
|
|
34
|
+
'1080P': '1080p',
|
|
35
|
+
'720P': '720p',
|
|
36
|
+
'480P': '480p',
|
|
37
|
+
'360P': '360p',
|
|
38
|
+
ORIGINAL: 'original',
|
|
39
|
+
});
|
|
40
|
+
const VideoTranscodingStatus = Object.freeze({
|
|
41
|
+
UPLOADED: 'uploaded',
|
|
42
|
+
TRANSCODING: 'transcoding',
|
|
43
|
+
TRANSCODED: 'transcoded',
|
|
44
|
+
TRANSCODE_FAILED: 'transcodeFailed',
|
|
45
|
+
});
|
|
46
|
+
const VideoSize = Object.freeze({
|
|
47
|
+
LOW: 'low',
|
|
48
|
+
MEDIUM: 'medium',
|
|
49
|
+
HIGH: 'high',
|
|
50
|
+
ORIGINAL: 'original',
|
|
51
|
+
});
|
|
52
|
+
|
|
28
53
|
const CommunityPostSettings = Object.freeze({
|
|
29
54
|
ONLY_ADMIN_CAN_POST: 'ONLY_ADMIN_CAN_POST',
|
|
30
55
|
ADMIN_REVIEW_POST_REQUIRED: 'ADMIN_REVIEW_POST_REQUIRED',
|
|
@@ -54,31 +79,6 @@ const ContentFeedType = Object.freeze({
|
|
|
54
79
|
MESSAGE: 'message',
|
|
55
80
|
});
|
|
56
81
|
|
|
57
|
-
const FileType = Object.freeze({
|
|
58
|
-
FILE: 'file',
|
|
59
|
-
IMAGE: 'image',
|
|
60
|
-
VIDEO: 'video',
|
|
61
|
-
});
|
|
62
|
-
const VideoResolution = Object.freeze({
|
|
63
|
-
'1080P': '1080p',
|
|
64
|
-
'720P': '720p',
|
|
65
|
-
'480P': '480p',
|
|
66
|
-
'360P': '360p',
|
|
67
|
-
ORIGINAL: 'original',
|
|
68
|
-
});
|
|
69
|
-
const VideoTranscodingStatus = Object.freeze({
|
|
70
|
-
UPLOADED: 'uploaded',
|
|
71
|
-
TRANSCODING: 'transcoding',
|
|
72
|
-
TRANSCODED: 'transcoded',
|
|
73
|
-
TRANSCODE_FAILED: 'transcodeFailed',
|
|
74
|
-
});
|
|
75
|
-
const VideoSize = Object.freeze({
|
|
76
|
-
LOW: 'low',
|
|
77
|
-
MEDIUM: 'medium',
|
|
78
|
-
HIGH: 'high',
|
|
79
|
-
ORIGINAL: 'original',
|
|
80
|
-
});
|
|
81
|
-
|
|
82
82
|
const MessageContentType = Object.freeze({
|
|
83
83
|
TEXT: 'text',
|
|
84
84
|
IMAGE: 'image',
|
|
@@ -117,6 +117,9 @@ const UNSYNCED_OBJECT_CACHED_AT_MESSAGE = 'Observing unsynced object is not supp
|
|
|
117
117
|
const UNSYNCED_OBJECT_CACHED_AT_VALUE = -5;
|
|
118
118
|
const SECOND$1 = 1000;
|
|
119
119
|
const MINUTE = 60 * SECOND$1;
|
|
120
|
+
const HOUR = 60 * MINUTE;
|
|
121
|
+
const DAY = 24 * HOUR;
|
|
122
|
+
const YEAR = 365 * DAY;
|
|
120
123
|
const ACCESS_TOKEN_WATCHER_INTERVAL = 10 * MINUTE;
|
|
121
124
|
|
|
122
125
|
// cache constants
|
|
@@ -529,6 +532,7 @@ const idResolvers = {
|
|
|
529
532
|
followInfo: ({ userId }) => userId,
|
|
530
533
|
followCount: ({ userId }) => userId,
|
|
531
534
|
feed: ({ targetId, feedId }) => `${targetId}#${feedId}`,
|
|
535
|
+
story: ({ referenceId }) => referenceId,
|
|
532
536
|
};
|
|
533
537
|
/**
|
|
534
538
|
* Retrieve the id resolver matching a domain name
|
|
@@ -546,6 +550,7 @@ const PAYLOAD2MODEL = {
|
|
|
546
550
|
users: 'user',
|
|
547
551
|
files: 'file',
|
|
548
552
|
roles: 'role',
|
|
553
|
+
stories: 'story',
|
|
549
554
|
channels: 'channel',
|
|
550
555
|
messageFeeds: 'subChannel',
|
|
551
556
|
channelUsers: 'channelUsers',
|
|
@@ -6268,7 +6273,8 @@ const createUserEventSubscriber = (event, callback) => {
|
|
|
6268
6273
|
*/
|
|
6269
6274
|
const onUserDeleted = (callback) => createUserEventSubscriber('user.deleted', callback);
|
|
6270
6275
|
|
|
6271
|
-
const ANALYTIC_CACHE_KEY = ['analytic', '
|
|
6276
|
+
const ANALYTIC_CACHE_KEY = ['analytic', 'normal-priority'];
|
|
6277
|
+
const HIGH_PRIORITY_ANALYTIC_CACHE_KEY = ['analytic', 'high-priority'];
|
|
6272
6278
|
|
|
6273
6279
|
const syncEvent = async (events) => {
|
|
6274
6280
|
const client = getActiveClient();
|
|
@@ -6280,12 +6286,16 @@ const syncEvent = async (events) => {
|
|
|
6280
6286
|
class AnalyticsEventSyncer {
|
|
6281
6287
|
constructor() {
|
|
6282
6288
|
this._timer = undefined;
|
|
6289
|
+
this._high_priority_timer = undefined;
|
|
6283
6290
|
}
|
|
6284
6291
|
start() {
|
|
6285
6292
|
this.syncCapturedEvent();
|
|
6286
6293
|
this._timer = setInterval(() => {
|
|
6287
6294
|
this.syncCapturedEvent();
|
|
6288
6295
|
}, 1 * MINUTE);
|
|
6296
|
+
this._high_priority_timer = setInterval(() => {
|
|
6297
|
+
this.syncHighPriorityCapturedEvent();
|
|
6298
|
+
}, 10 * SECOND$1);
|
|
6289
6299
|
}
|
|
6290
6300
|
stop() {
|
|
6291
6301
|
if (!this._timer)
|
|
@@ -6295,10 +6305,10 @@ class AnalyticsEventSyncer {
|
|
|
6295
6305
|
}
|
|
6296
6306
|
async syncCapturedEvent() {
|
|
6297
6307
|
try {
|
|
6298
|
-
// Must query only objects that
|
|
6308
|
+
// Must query only objects that have same userId with current logged-in user.
|
|
6299
6309
|
// Query captured event with maximum of 1000
|
|
6300
6310
|
// Order by latest first
|
|
6301
|
-
// e.g
|
|
6311
|
+
// e.g., If there are 2000 events we will query 1000-2000 first
|
|
6302
6312
|
const cache = pullFromCache(ANALYTIC_CACHE_KEY);
|
|
6303
6313
|
if (!(cache === null || cache === void 0 ? void 0 : cache.data))
|
|
6304
6314
|
return;
|
|
@@ -6314,6 +6324,27 @@ class AnalyticsEventSyncer {
|
|
|
6314
6324
|
dropFromCache(ANALYTIC_CACHE_KEY);
|
|
6315
6325
|
}
|
|
6316
6326
|
}
|
|
6327
|
+
async syncHighPriorityCapturedEvent() {
|
|
6328
|
+
try {
|
|
6329
|
+
// Must query only objects that have same userId with current logged-in user.
|
|
6330
|
+
// Query captured event with maximum of 1000
|
|
6331
|
+
// Order by latest first
|
|
6332
|
+
// e.g., If there are 2000 events we will query 1000-2000 first
|
|
6333
|
+
const cache = pullFromCache(HIGH_PRIORITY_ANALYTIC_CACHE_KEY);
|
|
6334
|
+
if (!(cache === null || cache === void 0 ? void 0 : cache.data))
|
|
6335
|
+
return;
|
|
6336
|
+
if (cache.data.event.length === 0)
|
|
6337
|
+
return;
|
|
6338
|
+
const capturedEvents = cache.data.event;
|
|
6339
|
+
await syncEvent(capturedEvents);
|
|
6340
|
+
dropFromCache(HIGH_PRIORITY_ANALYTIC_CACHE_KEY);
|
|
6341
|
+
}
|
|
6342
|
+
catch (error) {
|
|
6343
|
+
// stop and destroy all events
|
|
6344
|
+
this.stop();
|
|
6345
|
+
dropFromCache(HIGH_PRIORITY_ANALYTIC_CACHE_KEY);
|
|
6346
|
+
}
|
|
6347
|
+
}
|
|
6317
6348
|
}
|
|
6318
6349
|
|
|
6319
6350
|
class AnalyticsEventCapturer {
|
|
@@ -6321,17 +6352,23 @@ class AnalyticsEventCapturer {
|
|
|
6321
6352
|
this._expireTime = 5 * MINUTE;
|
|
6322
6353
|
this._poolLimit = 1000;
|
|
6323
6354
|
this._recentViewed = {};
|
|
6355
|
+
this._recentHighPriorityViewed = {};
|
|
6324
6356
|
}
|
|
6325
|
-
|
|
6357
|
+
isAbleToEnqueue(itemId, expireTime, isHighPriority = false) {
|
|
6326
6358
|
var _a;
|
|
6327
6359
|
const now = new Date();
|
|
6328
|
-
|
|
6329
|
-
const recentViewedPostDate = (_a = this._recentViewed[postId]) !== null && _a !== void 0 ? _a : new Date(-86400000);
|
|
6360
|
+
const recentViewedPostDate = (_a = (isHighPriority ? this._recentViewed[itemId] : this._recentHighPriorityViewed[itemId])) !== null && _a !== void 0 ? _a : new Date(-86400000);
|
|
6330
6361
|
const timeDiff = now.getTime() - recentViewedPostDate.getTime();
|
|
6331
|
-
if (timeDiff <
|
|
6362
|
+
if (timeDiff < expireTime) {
|
|
6332
6363
|
// just recently view this post, ignore the event.
|
|
6333
|
-
return;
|
|
6364
|
+
return false;
|
|
6334
6365
|
}
|
|
6366
|
+
return true;
|
|
6367
|
+
}
|
|
6368
|
+
markPostAsViewed(postId) {
|
|
6369
|
+
if (!this.isAbleToEnqueue(postId, this._expireTime))
|
|
6370
|
+
return;
|
|
6371
|
+
const now = new Date();
|
|
6335
6372
|
const currentData = { event: [] };
|
|
6336
6373
|
const cache = pullFromCache(ANALYTIC_CACHE_KEY);
|
|
6337
6374
|
if (cache === null || cache === void 0 ? void 0 : cache.data) {
|
|
@@ -6344,13 +6381,39 @@ class AnalyticsEventCapturer {
|
|
|
6344
6381
|
}
|
|
6345
6382
|
currentData.event.push({
|
|
6346
6383
|
contentId: postId,
|
|
6347
|
-
contentType:
|
|
6384
|
+
contentType: "post" /* Amity.AnalyticEventContentType.Post */,
|
|
6348
6385
|
activityType: 'view',
|
|
6349
6386
|
timestamp: now.toISOString(),
|
|
6350
6387
|
});
|
|
6351
6388
|
upsertInCache(ANALYTIC_CACHE_KEY, currentData);
|
|
6352
6389
|
this._recentViewed[postId] = now;
|
|
6353
6390
|
}
|
|
6391
|
+
markStoryAsViewed(storyId, storyExpireAt) {
|
|
6392
|
+
if (!storyExpireAt)
|
|
6393
|
+
return;
|
|
6394
|
+
const now = new Date();
|
|
6395
|
+
const expireTime = new Date(storyExpireAt);
|
|
6396
|
+
if (this.isAbleToEnqueue(storyId, expireTime.getTime()))
|
|
6397
|
+
return;
|
|
6398
|
+
const currentData = { event: [] };
|
|
6399
|
+
const cache = pullFromCache(HIGH_PRIORITY_ANALYTIC_CACHE_KEY);
|
|
6400
|
+
if (cache === null || cache === void 0 ? void 0 : cache.data) {
|
|
6401
|
+
currentData.event = cache.data.event;
|
|
6402
|
+
}
|
|
6403
|
+
// If the pool is full (Max 1000 items), remove the oldest data
|
|
6404
|
+
if (currentData.event.length >= this._poolLimit) {
|
|
6405
|
+
// Remove oldest data
|
|
6406
|
+
currentData.event.shift();
|
|
6407
|
+
}
|
|
6408
|
+
currentData.event.push({
|
|
6409
|
+
contentId: storyId,
|
|
6410
|
+
contentType: "story" /* Amity.AnalyticEventContentType.Story */,
|
|
6411
|
+
activityType: 'view',
|
|
6412
|
+
timestamp: now.toISOString(),
|
|
6413
|
+
});
|
|
6414
|
+
upsertInCache(HIGH_PRIORITY_ANALYTIC_CACHE_KEY, currentData);
|
|
6415
|
+
this._recentHighPriorityViewed[storyId] = now;
|
|
6416
|
+
}
|
|
6354
6417
|
}
|
|
6355
6418
|
|
|
6356
6419
|
class AnalyticsEngine {
|
|
@@ -6366,6 +6429,13 @@ class AnalyticsEngine {
|
|
|
6366
6429
|
this._eventCapturer.markPostAsViewed(postId);
|
|
6367
6430
|
}
|
|
6368
6431
|
}
|
|
6432
|
+
markStoryAsViewed(storyId, storyExpiresAt) {
|
|
6433
|
+
if (this._client.sessionState === "established" /* Amity.SessionStates.ESTABLISHED */ ||
|
|
6434
|
+
this._client.sessionState === "tokenExpired" /* Amity.SessionStates.TOKEN_EXPIRED */ // For case token_expired, we assume token is expired and gonna re-connect soon
|
|
6435
|
+
) {
|
|
6436
|
+
this._eventCapturer.markStoryAsViewed(storyId, storyExpiresAt);
|
|
6437
|
+
}
|
|
6438
|
+
}
|
|
6369
6439
|
established() {
|
|
6370
6440
|
this._eventSyncer.start();
|
|
6371
6441
|
}
|
|
@@ -8165,7 +8235,7 @@ setIntervalTask(async () => {
|
|
|
8165
8235
|
await markerSyncTrigger();
|
|
8166
8236
|
}, SYNC_TRIGGER_INTERVAL_TIME);
|
|
8167
8237
|
|
|
8168
|
-
var index$
|
|
8238
|
+
var index$k = /*#__PURE__*/Object.freeze({
|
|
8169
8239
|
__proto__: null,
|
|
8170
8240
|
getActiveClient: getActiveClient,
|
|
8171
8241
|
getActiveUser: getActiveUser,
|
|
@@ -8335,6 +8405,30 @@ queryBlockedUsers.locally = (query = {}) => {
|
|
|
8335
8405
|
: undefined;
|
|
8336
8406
|
};
|
|
8337
8407
|
|
|
8408
|
+
const storyLinkedObject = (story) => {
|
|
8409
|
+
return Object.assign(Object.assign({}, story), { analytics: {
|
|
8410
|
+
markAsViewed: () => {
|
|
8411
|
+
if (!story.expiresAt)
|
|
8412
|
+
return;
|
|
8413
|
+
if (story.syncState !== 'synced')
|
|
8414
|
+
return;
|
|
8415
|
+
const analyticsEngineInstance = AnalyticsEngine$1.getInstance();
|
|
8416
|
+
analyticsEngineInstance.markStoryAsViewed(story.storyId, story.expiresAt);
|
|
8417
|
+
},
|
|
8418
|
+
}, get videoResolution() {
|
|
8419
|
+
var _a, _b;
|
|
8420
|
+
const cache = pullFromCache([
|
|
8421
|
+
'file',
|
|
8422
|
+
'get',
|
|
8423
|
+
(_b = (_a = story.data) === null || _a === void 0 ? void 0 : _a.videoFileId) === null || _b === void 0 ? void 0 : _b.original,
|
|
8424
|
+
]);
|
|
8425
|
+
if (!cache)
|
|
8426
|
+
return undefined;
|
|
8427
|
+
const { data } = cache;
|
|
8428
|
+
return data.videoUrl;
|
|
8429
|
+
} });
|
|
8430
|
+
};
|
|
8431
|
+
|
|
8338
8432
|
const categoryLinkedObject = (category) => {
|
|
8339
8433
|
return Object.assign(Object.assign({}, category), { get avatar() {
|
|
8340
8434
|
var _a;
|
|
@@ -8466,6 +8560,7 @@ const LinkedObject = {
|
|
|
8466
8560
|
post: postLinkedObject,
|
|
8467
8561
|
user: userLinkedObject,
|
|
8468
8562
|
category: categoryLinkedObject,
|
|
8563
|
+
story: storyLinkedObject,
|
|
8469
8564
|
};
|
|
8470
8565
|
|
|
8471
8566
|
/* eslint-disable no-use-before-define */
|
|
@@ -9455,7 +9550,7 @@ const getMyFollowInfo = (callback) => {
|
|
|
9455
9550
|
};
|
|
9456
9551
|
/* end_public_function */
|
|
9457
9552
|
|
|
9458
|
-
var index$
|
|
9553
|
+
var index$j = /*#__PURE__*/Object.freeze({
|
|
9459
9554
|
__proto__: null,
|
|
9460
9555
|
blockUser: blockUser,
|
|
9461
9556
|
unBlockUser: unBlockUser,
|
|
@@ -10267,9 +10362,9 @@ const getViewedUsers = (params, callback) => {
|
|
|
10267
10362
|
};
|
|
10268
10363
|
};
|
|
10269
10364
|
|
|
10270
|
-
var index$
|
|
10365
|
+
var index$i = /*#__PURE__*/Object.freeze({
|
|
10271
10366
|
__proto__: null,
|
|
10272
|
-
Relationship: index$
|
|
10367
|
+
Relationship: index$j,
|
|
10273
10368
|
getUserByIds: getUserByIds,
|
|
10274
10369
|
updateUser: updateUser,
|
|
10275
10370
|
flagUser: flagUser,
|
|
@@ -10684,7 +10779,7 @@ const observeFile = (fileId, callback) => {
|
|
|
10684
10779
|
};
|
|
10685
10780
|
};
|
|
10686
10781
|
|
|
10687
|
-
var index$
|
|
10782
|
+
var index$h = /*#__PURE__*/Object.freeze({
|
|
10688
10783
|
__proto__: null,
|
|
10689
10784
|
getFile: getFile,
|
|
10690
10785
|
uploadFile: uploadFile,
|
|
@@ -12034,7 +12129,7 @@ const getReactions = (params, callback, config) => {
|
|
|
12034
12129
|
};
|
|
12035
12130
|
/* end_public_function */
|
|
12036
12131
|
|
|
12037
|
-
var index$
|
|
12132
|
+
var index$g = /*#__PURE__*/Object.freeze({
|
|
12038
12133
|
__proto__: null,
|
|
12039
12134
|
addReaction: addReaction,
|
|
12040
12135
|
removeReaction: removeReaction,
|
|
@@ -13585,7 +13680,7 @@ const searchMembers = (params, callback, config) => {
|
|
|
13585
13680
|
};
|
|
13586
13681
|
/* end_public_function */
|
|
13587
13682
|
|
|
13588
|
-
var index$
|
|
13683
|
+
var index$f = /*#__PURE__*/Object.freeze({
|
|
13589
13684
|
__proto__: null,
|
|
13590
13685
|
addMembers: addMembers$1,
|
|
13591
13686
|
removeMembers: removeMembers$1,
|
|
@@ -13728,7 +13823,7 @@ const unbanMembers$1 = async (channelId, userIds) => {
|
|
|
13728
13823
|
};
|
|
13729
13824
|
/* end_public_function */
|
|
13730
13825
|
|
|
13731
|
-
var index$
|
|
13826
|
+
var index$e = /*#__PURE__*/Object.freeze({
|
|
13732
13827
|
__proto__: null,
|
|
13733
13828
|
addRole: addRole,
|
|
13734
13829
|
removeRole: removeRole,
|
|
@@ -13736,10 +13831,10 @@ var index$d = /*#__PURE__*/Object.freeze({
|
|
|
13736
13831
|
unbanMembers: unbanMembers$1
|
|
13737
13832
|
});
|
|
13738
13833
|
|
|
13739
|
-
var index$
|
|
13834
|
+
var index$d = /*#__PURE__*/Object.freeze({
|
|
13740
13835
|
__proto__: null,
|
|
13741
|
-
Membership: index$
|
|
13742
|
-
Moderation: index$
|
|
13836
|
+
Membership: index$f,
|
|
13837
|
+
Moderation: index$e,
|
|
13743
13838
|
getChannelByIds: getChannelByIds,
|
|
13744
13839
|
createChannel: createChannel,
|
|
13745
13840
|
updateChannel: updateChannel,
|
|
@@ -14824,7 +14919,7 @@ const observeMessages = (subChannelId, callback) => {
|
|
|
14824
14919
|
};
|
|
14825
14920
|
};
|
|
14826
14921
|
|
|
14827
|
-
var index$
|
|
14922
|
+
var index$c = /*#__PURE__*/Object.freeze({
|
|
14828
14923
|
__proto__: null,
|
|
14829
14924
|
getMessageByIds: getMessages$1,
|
|
14830
14925
|
createMessage: createMessage,
|
|
@@ -15436,7 +15531,7 @@ const getSubChannels = (params, callback, config) => {
|
|
|
15436
15531
|
};
|
|
15437
15532
|
/* end_public_function */
|
|
15438
15533
|
|
|
15439
|
-
var index$
|
|
15534
|
+
var index$b = /*#__PURE__*/Object.freeze({
|
|
15440
15535
|
__proto__: null,
|
|
15441
15536
|
getSubChannelByIds: getSubChannels$1,
|
|
15442
15537
|
createSubChannel: createSubChannel,
|
|
@@ -15474,8 +15569,10 @@ const prepareCommunityPayload = (rawPayload) => {
|
|
|
15474
15569
|
communityUsers });
|
|
15475
15570
|
};
|
|
15476
15571
|
const prepareCommunityRequest = (params) => {
|
|
15477
|
-
const { postSetting = undefined } = params, restParam = __rest(params, ["postSetting"]);
|
|
15478
|
-
return Object.assign(Object.assign({}, restParam), (postSetting ? CommunityPostSettingMaps[postSetting] : undefined))
|
|
15572
|
+
const { postSetting = undefined, storySetting } = params, restParam = __rest(params, ["postSetting", "storySetting"]);
|
|
15573
|
+
return Object.assign(Object.assign(Object.assign({}, restParam), (postSetting ? CommunityPostSettingMaps[postSetting] : undefined)), {
|
|
15574
|
+
// Convert story setting to the actual value. (Allow by default)
|
|
15575
|
+
allowCommentInStory: (storySetting === null || storySetting === void 0 ? void 0 : storySetting.enableComment) !== false });
|
|
15479
15576
|
};
|
|
15480
15577
|
|
|
15481
15578
|
/**
|
|
@@ -16803,7 +16900,7 @@ const unbanMembers = async (communityId, userIds) => {
|
|
|
16803
16900
|
};
|
|
16804
16901
|
/* end_public_function */
|
|
16805
16902
|
|
|
16806
|
-
var index$
|
|
16903
|
+
var index$a = /*#__PURE__*/Object.freeze({
|
|
16807
16904
|
__proto__: null,
|
|
16808
16905
|
addRoles: addRoles,
|
|
16809
16906
|
removeRoles: removeRoles,
|
|
@@ -17077,7 +17174,7 @@ const getMembers = (params, callback, config) => {
|
|
|
17077
17174
|
};
|
|
17078
17175
|
/* end_public_function */
|
|
17079
17176
|
|
|
17080
|
-
var index$
|
|
17177
|
+
var index$9 = /*#__PURE__*/Object.freeze({
|
|
17081
17178
|
__proto__: null,
|
|
17082
17179
|
addMembers: addMembers,
|
|
17083
17180
|
removeMembers: removeMembers,
|
|
@@ -17094,10 +17191,10 @@ var index$8 = /*#__PURE__*/Object.freeze({
|
|
|
17094
17191
|
onCommunityLeft: onCommunityLeft
|
|
17095
17192
|
});
|
|
17096
17193
|
|
|
17097
|
-
var index$
|
|
17194
|
+
var index$8 = /*#__PURE__*/Object.freeze({
|
|
17098
17195
|
__proto__: null,
|
|
17099
|
-
Moderation: index$
|
|
17100
|
-
Membership: index$
|
|
17196
|
+
Moderation: index$a,
|
|
17197
|
+
Membership: index$9,
|
|
17101
17198
|
getCommunityByIds: getCommunities$1,
|
|
17102
17199
|
createCommunity: createCommunity,
|
|
17103
17200
|
updateCommunity: updateCommunity,
|
|
@@ -17329,7 +17426,7 @@ const getCategories = (params, callback, config) => {
|
|
|
17329
17426
|
};
|
|
17330
17427
|
/* end_public_function */
|
|
17331
17428
|
|
|
17332
|
-
var index$
|
|
17429
|
+
var index$7 = /*#__PURE__*/Object.freeze({
|
|
17333
17430
|
__proto__: null,
|
|
17334
17431
|
getCategory: getCategory,
|
|
17335
17432
|
getCategories: getCategories
|
|
@@ -17539,7 +17636,7 @@ getCustomRankingGlobalFeed.locally = (query) => {
|
|
|
17539
17636
|
: undefined;
|
|
17540
17637
|
};
|
|
17541
17638
|
|
|
17542
|
-
var index$
|
|
17639
|
+
var index$6 = /*#__PURE__*/Object.freeze({
|
|
17543
17640
|
__proto__: null,
|
|
17544
17641
|
queryGlobalFeed: queryGlobalFeed,
|
|
17545
17642
|
getCustomRankingGlobalFeed: getCustomRankingGlobalFeed
|
|
@@ -18302,7 +18399,7 @@ const getPosts = (params, callback, config) => {
|
|
|
18302
18399
|
};
|
|
18303
18400
|
/* end_public_function */
|
|
18304
18401
|
|
|
18305
|
-
var index$
|
|
18402
|
+
var index$5 = /*#__PURE__*/Object.freeze({
|
|
18306
18403
|
__proto__: null,
|
|
18307
18404
|
getPostByIds: getPostByIds,
|
|
18308
18405
|
createPost: createPost,
|
|
@@ -18950,7 +19047,7 @@ const getComments = (params, callback, config) => {
|
|
|
18950
19047
|
};
|
|
18951
19048
|
/* end_public_function */
|
|
18952
19049
|
|
|
18953
|
-
var index$
|
|
19050
|
+
var index$4 = /*#__PURE__*/Object.freeze({
|
|
18954
19051
|
__proto__: null,
|
|
18955
19052
|
getCommentByIds: getCommentByIds,
|
|
18956
19053
|
createComment: createComment,
|
|
@@ -19416,7 +19513,7 @@ const getStreams = (params, callback, config) => {
|
|
|
19416
19513
|
};
|
|
19417
19514
|
/* end_public_function */
|
|
19418
19515
|
|
|
19419
|
-
var index$
|
|
19516
|
+
var index$3 = /*#__PURE__*/Object.freeze({
|
|
19420
19517
|
__proto__: null,
|
|
19421
19518
|
createStream: createStream,
|
|
19422
19519
|
updateStream: updateStream,
|
|
@@ -19747,7 +19844,7 @@ const getPoll = (pollId, callback) => {
|
|
|
19747
19844
|
};
|
|
19748
19845
|
/* end_public_function */
|
|
19749
19846
|
|
|
19750
|
-
var index$
|
|
19847
|
+
var index$2 = /*#__PURE__*/Object.freeze({
|
|
19751
19848
|
__proto__: null,
|
|
19752
19849
|
createPoll: createPoll,
|
|
19753
19850
|
closePoll: closePoll,
|
|
@@ -20119,11 +20216,332 @@ const getPlayer = async (parameters) => {
|
|
|
20119
20216
|
return video;
|
|
20120
20217
|
};
|
|
20121
20218
|
|
|
20122
|
-
var index = /*#__PURE__*/Object.freeze({
|
|
20219
|
+
var index$1 = /*#__PURE__*/Object.freeze({
|
|
20123
20220
|
__proto__: null,
|
|
20124
20221
|
getPlayer: getPlayer
|
|
20125
20222
|
});
|
|
20126
20223
|
|
|
20224
|
+
const convertStoryPayloadToRaw = (payload) => {
|
|
20225
|
+
const client = getActiveClient();
|
|
20226
|
+
const now = new Date();
|
|
20227
|
+
const expiresAt = now.getTime() + YEAR;
|
|
20228
|
+
return {
|
|
20229
|
+
stories: [
|
|
20230
|
+
Object.assign({ createdAt: now.toISOString(), flagCount: 0, hashFlag: null, reactions: {}, reactionsCount: 0, storyId: payload.referenceId, path: '', creatorId: client.userId || '', creatorPublicId: client.userId || '', targetPublicId: payload.targetId, commentsCount: 0, isDeleted: false, hasFlaggedComment: false, mentionedUsers: [], impression: 0, reach: 0, expiresAt: new Date(expiresAt).toISOString(), syncState: "syncing" /* Amity.SyncState.Syncing */ }, payload),
|
|
20231
|
+
],
|
|
20232
|
+
categories: [],
|
|
20233
|
+
communityUsers: [],
|
|
20234
|
+
comments: [],
|
|
20235
|
+
files: [],
|
|
20236
|
+
users: [],
|
|
20237
|
+
communities: [],
|
|
20238
|
+
};
|
|
20239
|
+
};
|
|
20240
|
+
|
|
20241
|
+
const saveOptimisticToCache = (payload) => {
|
|
20242
|
+
const optimisticData = convertStoryPayloadToRaw(payload);
|
|
20243
|
+
ingestInCache(optimisticData);
|
|
20244
|
+
return optimisticData;
|
|
20245
|
+
};
|
|
20246
|
+
const createOptimisticEvent = ({ payload, formData = undefined, isVideo = false, }, callback) => {
|
|
20247
|
+
if (formData) {
|
|
20248
|
+
const fileObject = formData.get('files');
|
|
20249
|
+
const fileData = new FileReader();
|
|
20250
|
+
// @ts-ignore
|
|
20251
|
+
fileData.readAsDataURL(fileObject);
|
|
20252
|
+
fileData.onload = () => {
|
|
20253
|
+
return callback(saveOptimisticToCache(isVideo
|
|
20254
|
+
? Object.assign(Object.assign({}, payload), { data: Object.assign(Object.assign({}, payload.data), { fileId: undefined, videoFileId: { original: undefined }, fileData: fileData === null || fileData === void 0 ? void 0 : fileData.result }) }) : Object.assign(Object.assign({}, payload), { data: Object.assign(Object.assign({}, payload.data), { fileId: undefined, fileData: fileData === null || fileData === void 0 ? void 0 : fileData.result }) })));
|
|
20255
|
+
};
|
|
20256
|
+
}
|
|
20257
|
+
return callback(saveOptimisticToCache(Object.assign(Object.assign({}, payload), { data: Object.assign(Object.assign({}, payload.data), { fileData: null }) })));
|
|
20258
|
+
};
|
|
20259
|
+
|
|
20260
|
+
// Due to we have optimistic logic, we will use referenceId as a id in SDK instead of storyId
|
|
20261
|
+
const convertRawStoryToInternalStory = (rawData) => {
|
|
20262
|
+
const { storyId, referenceId } = rawData;
|
|
20263
|
+
if (referenceId)
|
|
20264
|
+
return Object.assign(Object.assign({}, rawData), { syncState: "synced" /* Amity.SyncState.Synced */ });
|
|
20265
|
+
return Object.assign(Object.assign({}, rawData), { syncState: "synced" /* Amity.SyncState.Synced */, referenceId: storyId });
|
|
20266
|
+
};
|
|
20267
|
+
const convertStoryRawToInternal = (data) => {
|
|
20268
|
+
const { stories } = data;
|
|
20269
|
+
const storiesData = stories.map(convertRawStoryToInternalStory);
|
|
20270
|
+
return Object.assign(Object.assign({}, data), { stories: storiesData });
|
|
20271
|
+
};
|
|
20272
|
+
|
|
20273
|
+
const createStory = async (payload) => {
|
|
20274
|
+
const client = getActiveClient();
|
|
20275
|
+
client.log('post/createStory', payload);
|
|
20276
|
+
const response = await client.http.post('/api/v4/stories', payload);
|
|
20277
|
+
const convertedResponse = convertStoryRawToInternal(response.data);
|
|
20278
|
+
if (client.cache)
|
|
20279
|
+
ingestInCache(convertedResponse);
|
|
20280
|
+
const cachedAt = client.cache && Date.now();
|
|
20281
|
+
return {
|
|
20282
|
+
data: response.data.stories.length > 0 ? response.data.stories[0] : undefined,
|
|
20283
|
+
cachedAt,
|
|
20284
|
+
};
|
|
20285
|
+
};
|
|
20286
|
+
|
|
20287
|
+
/**
|
|
20288
|
+
* ```js
|
|
20289
|
+
* import { StoryRepository } from '@amityco/ts-sdk'
|
|
20290
|
+
* StoryRepository.createImageStory('community', 'communityId', formData, metadata, items)
|
|
20291
|
+
* ```
|
|
20292
|
+
*
|
|
20293
|
+
* Create a new image story
|
|
20294
|
+
* @param targetType The type of the target
|
|
20295
|
+
* @param targetId The id of the target
|
|
20296
|
+
* @param formData The form data
|
|
20297
|
+
* @param metadata The metadata
|
|
20298
|
+
* @param items The story items
|
|
20299
|
+
* @returns The created story
|
|
20300
|
+
*/
|
|
20301
|
+
const createImageStory = async (targetType, targetId, formData, metadata, items) => {
|
|
20302
|
+
if (!formData.getAll('files').length) {
|
|
20303
|
+
throw new Error('The formData object must have a `files` key.');
|
|
20304
|
+
}
|
|
20305
|
+
let payload = {
|
|
20306
|
+
data: {
|
|
20307
|
+
text: '',
|
|
20308
|
+
fileId: undefined,
|
|
20309
|
+
fileData: null,
|
|
20310
|
+
},
|
|
20311
|
+
referenceId: uuid(),
|
|
20312
|
+
dataType: "image" /* Amity.StoryDataType.Image */,
|
|
20313
|
+
items,
|
|
20314
|
+
targetType,
|
|
20315
|
+
targetId,
|
|
20316
|
+
metadata,
|
|
20317
|
+
};
|
|
20318
|
+
// Fire optimistic event
|
|
20319
|
+
createOptimisticEvent({ payload, formData }, optimisticData => {
|
|
20320
|
+
fireEvent('story.created', optimisticData);
|
|
20321
|
+
});
|
|
20322
|
+
const { data } = await uploadImage(formData);
|
|
20323
|
+
// @TODO: Need to implement retrying logic in a future
|
|
20324
|
+
if (data.length === 0)
|
|
20325
|
+
throw new Error('Failed to upload image');
|
|
20326
|
+
const { fileId } = data[0];
|
|
20327
|
+
payload = Object.assign(Object.assign({}, payload), { data: Object.assign(Object.assign({}, payload.data), { fileId }) });
|
|
20328
|
+
// Fire optimistic event - update fileId
|
|
20329
|
+
createOptimisticEvent({ payload }, optimisticData => {
|
|
20330
|
+
fireEvent('story.created', optimisticData);
|
|
20331
|
+
});
|
|
20332
|
+
const result = await createStory(payload);
|
|
20333
|
+
if (!result.data)
|
|
20334
|
+
return result;
|
|
20335
|
+
return Object.assign(Object.assign({}, result), { data: LinkedObject.story(result.data) });
|
|
20336
|
+
};
|
|
20337
|
+
|
|
20338
|
+
/**
|
|
20339
|
+
* ```js
|
|
20340
|
+
* import { StoryRepository } from '@amityco/ts-sdk'
|
|
20341
|
+
* StoryRepository.createVideoStory('community', 'communityId', formData, metadata, items)
|
|
20342
|
+
* ```
|
|
20343
|
+
*
|
|
20344
|
+
* Create a new video story
|
|
20345
|
+
* @param targetType
|
|
20346
|
+
* @param targetId
|
|
20347
|
+
* @param formData
|
|
20348
|
+
* @param metadata
|
|
20349
|
+
* @param items
|
|
20350
|
+
*/
|
|
20351
|
+
const createVideoStory = async (targetType, targetId, formData, metadata, items) => {
|
|
20352
|
+
if (!formData.getAll('files').length)
|
|
20353
|
+
throw new Error('The formData object must have a `files` key.');
|
|
20354
|
+
let payload = {
|
|
20355
|
+
data: {
|
|
20356
|
+
text: '',
|
|
20357
|
+
fileId: undefined,
|
|
20358
|
+
fileData: null,
|
|
20359
|
+
},
|
|
20360
|
+
referenceId: uuid(),
|
|
20361
|
+
dataType: "video" /* Amity.StoryDataType.Video */,
|
|
20362
|
+
items,
|
|
20363
|
+
targetType,
|
|
20364
|
+
targetId,
|
|
20365
|
+
metadata,
|
|
20366
|
+
};
|
|
20367
|
+
// Fire optimistic event
|
|
20368
|
+
createOptimisticEvent({ payload, formData, isVideo: true }, optimisticData => {
|
|
20369
|
+
fireEvent('story.created', optimisticData);
|
|
20370
|
+
});
|
|
20371
|
+
const { data } = await uploadVideo(formData, ContentFeedType.STORY);
|
|
20372
|
+
// @TODO: Need to implement retrying logic in a future
|
|
20373
|
+
if (data.length === 0)
|
|
20374
|
+
throw new Error('Failed to upload video');
|
|
20375
|
+
const { fileId } = data[0];
|
|
20376
|
+
payload = Object.assign(Object.assign({}, payload), { data: Object.assign(Object.assign({}, payload.data), { fileId, videoFileId: { original: fileId } }) });
|
|
20377
|
+
// Fire optimistic event - update fileId
|
|
20378
|
+
createOptimisticEvent({ payload, formData, isVideo: true }, optimisticData => {
|
|
20379
|
+
fireEvent('story.created', optimisticData);
|
|
20380
|
+
});
|
|
20381
|
+
const result = await createStory(payload);
|
|
20382
|
+
if (!result.data)
|
|
20383
|
+
return result;
|
|
20384
|
+
return Object.assign(Object.assign({}, result), { data: LinkedObject.story(result.data) });
|
|
20385
|
+
};
|
|
20386
|
+
|
|
20387
|
+
const getStoryCache = (storyId) => {
|
|
20388
|
+
if (!storyId)
|
|
20389
|
+
return { data: undefined, cachedAt: undefined };
|
|
20390
|
+
return pullFromCache(['story', 'get', storyId]);
|
|
20391
|
+
};
|
|
20392
|
+
|
|
20393
|
+
const deleteStory = async (storyId, permanent = false) => {
|
|
20394
|
+
const client = getActiveClient();
|
|
20395
|
+
client.log('story/deleteStory', storyId);
|
|
20396
|
+
let cached;
|
|
20397
|
+
if (client.cache) {
|
|
20398
|
+
cached = getStoryCache(storyId);
|
|
20399
|
+
if (cached === null || cached === void 0 ? void 0 : cached.data) {
|
|
20400
|
+
const { data } = cached;
|
|
20401
|
+
fireEvent('story.deleted', {
|
|
20402
|
+
categories: [],
|
|
20403
|
+
comments: [],
|
|
20404
|
+
communities: [],
|
|
20405
|
+
communityUsers: [],
|
|
20406
|
+
files: [],
|
|
20407
|
+
users: [],
|
|
20408
|
+
stories: [Object.assign(Object.assign({}, data), { isDeleted: true })],
|
|
20409
|
+
});
|
|
20410
|
+
}
|
|
20411
|
+
}
|
|
20412
|
+
const response = await client.http.delete(`/api/v4/stories/${storyId}`, {
|
|
20413
|
+
params: { permanent },
|
|
20414
|
+
});
|
|
20415
|
+
return response.data.success;
|
|
20416
|
+
};
|
|
20417
|
+
|
|
20418
|
+
const hardDeleteStory = async (storyId) => {
|
|
20419
|
+
const result = await deleteStory(storyId, true);
|
|
20420
|
+
return result;
|
|
20421
|
+
};
|
|
20422
|
+
|
|
20423
|
+
const softDeleteStory = async (storyId) => {
|
|
20424
|
+
const result = await deleteStory(storyId, false);
|
|
20425
|
+
return result;
|
|
20426
|
+
};
|
|
20427
|
+
|
|
20428
|
+
const getActiveStoriesByTarget$1 = async (targetType, targetId, option) => {
|
|
20429
|
+
const client = getActiveClient();
|
|
20430
|
+
client.log('story/getActiveStoriesByTarget');
|
|
20431
|
+
const cachedAt = client.cache && Date.now();
|
|
20432
|
+
const response = await client.http.get('/api/v4/stories', {
|
|
20433
|
+
params: {
|
|
20434
|
+
targetType,
|
|
20435
|
+
targetId,
|
|
20436
|
+
options: {
|
|
20437
|
+
sortBy: (option === null || option === void 0 ? void 0 : option.sortBy) || 'createdAt',
|
|
20438
|
+
orderBy: (option === null || option === void 0 ? void 0 : option.orderBy) || 'desc',
|
|
20439
|
+
},
|
|
20440
|
+
},
|
|
20441
|
+
});
|
|
20442
|
+
const convertedData = convertStoryRawToInternal(response.data);
|
|
20443
|
+
if (client.cache) {
|
|
20444
|
+
ingestInCache(convertedData);
|
|
20445
|
+
}
|
|
20446
|
+
return {
|
|
20447
|
+
data: convertedData.stories,
|
|
20448
|
+
cachedAt,
|
|
20449
|
+
paging: { next: undefined, previous: undefined }, // Disable pagination for this API
|
|
20450
|
+
};
|
|
20451
|
+
};
|
|
20452
|
+
|
|
20453
|
+
const onStoryCreated = (callback) => {
|
|
20454
|
+
const client = getActiveClient();
|
|
20455
|
+
const filter = async (payload) => {
|
|
20456
|
+
ingestInCache(payload);
|
|
20457
|
+
callback(payload.stories);
|
|
20458
|
+
};
|
|
20459
|
+
return createEventSubscriber(client, 'onStoryCreated', 'story.created', filter);
|
|
20460
|
+
};
|
|
20461
|
+
|
|
20462
|
+
const onStoryDeleted = (callback) => {
|
|
20463
|
+
const client = getActiveClient();
|
|
20464
|
+
const filter = async (payload) => {
|
|
20465
|
+
ingestInCache(payload);
|
|
20466
|
+
callback(payload.stories);
|
|
20467
|
+
};
|
|
20468
|
+
return createEventSubscriber(client, 'onStoryDeleted', 'story.deleted', filter);
|
|
20469
|
+
};
|
|
20470
|
+
|
|
20471
|
+
const getActiveStoriesByTarget = (params, callback) => {
|
|
20472
|
+
const { log, cache } = getActiveClient();
|
|
20473
|
+
const disposers = [];
|
|
20474
|
+
const cacheKey = ['story-target', 'collection', params];
|
|
20475
|
+
const timestamp = Date.now();
|
|
20476
|
+
log(`getActiveStoriesByTarget(tmpid: ${timestamp}) > listen`);
|
|
20477
|
+
if (!cache) {
|
|
20478
|
+
console.log(ENABLE_CACHE_MESSAGE);
|
|
20479
|
+
}
|
|
20480
|
+
const responder = (snapshot) => {
|
|
20481
|
+
var _a;
|
|
20482
|
+
const stories = snapshot.data
|
|
20483
|
+
.map(referenceId => {
|
|
20484
|
+
const story = getStoryCache(referenceId);
|
|
20485
|
+
if (!(story === null || story === void 0 ? void 0 : story.data))
|
|
20486
|
+
return undefined;
|
|
20487
|
+
return LinkedObject.story(story.data);
|
|
20488
|
+
})
|
|
20489
|
+
.filter(Boolean)
|
|
20490
|
+
// Remove all deleted stories
|
|
20491
|
+
.filter(item => {
|
|
20492
|
+
if (!item)
|
|
20493
|
+
return false;
|
|
20494
|
+
return !item.isDeleted;
|
|
20495
|
+
});
|
|
20496
|
+
callback({
|
|
20497
|
+
onNextPage: () => false,
|
|
20498
|
+
data: stories,
|
|
20499
|
+
hasNextPage: !!((_a = snapshot.params) === null || _a === void 0 ? void 0 : _a.page),
|
|
20500
|
+
loading: snapshot.loading || false,
|
|
20501
|
+
});
|
|
20502
|
+
};
|
|
20503
|
+
const processNewData = (result, initial = false, loading = false, error = false) => {
|
|
20504
|
+
const cached = pullFromCache(cacheKey);
|
|
20505
|
+
const data = {
|
|
20506
|
+
loading,
|
|
20507
|
+
error,
|
|
20508
|
+
params: { page: undefined },
|
|
20509
|
+
data: (cached === null || cached === void 0 ? void 0 : cached.data) || [],
|
|
20510
|
+
};
|
|
20511
|
+
if (result) {
|
|
20512
|
+
data.data = initial
|
|
20513
|
+
? result.map(getResolver('story'))
|
|
20514
|
+
: [...new Set([...data.data, ...result.map(getResolver('story'))])];
|
|
20515
|
+
}
|
|
20516
|
+
pushToCache(cacheKey, data.data);
|
|
20517
|
+
responder(data);
|
|
20518
|
+
};
|
|
20519
|
+
const realtimeRouter = (event) => (story) => {
|
|
20520
|
+
processNewData(story);
|
|
20521
|
+
};
|
|
20522
|
+
const onFetch = (initial) => {
|
|
20523
|
+
const query = createQuery(getActiveStoriesByTarget$1, params.targetType, params.targetId, params.options);
|
|
20524
|
+
runQuery(query, ({ data: result, error, loading }) => {
|
|
20525
|
+
processNewData(result, initial, loading, error);
|
|
20526
|
+
});
|
|
20527
|
+
};
|
|
20528
|
+
onFetch(true);
|
|
20529
|
+
disposers.push(onStoryCreated(realtimeRouter()), onStoryDeleted(realtimeRouter()), () => dropFromCache(cacheKey));
|
|
20530
|
+
return () => {
|
|
20531
|
+
log(`getActiveStoriesByTarget(tmpid: ${timestamp}) > dispose`);
|
|
20532
|
+
disposers.forEach(fn => fn());
|
|
20533
|
+
};
|
|
20534
|
+
};
|
|
20535
|
+
|
|
20536
|
+
var index = /*#__PURE__*/Object.freeze({
|
|
20537
|
+
__proto__: null,
|
|
20538
|
+
createImageStory: createImageStory,
|
|
20539
|
+
createVideoStory: createVideoStory,
|
|
20540
|
+
hardDeleteStory: hardDeleteStory,
|
|
20541
|
+
softDeleteStory: softDeleteStory,
|
|
20542
|
+
getActiveStoriesByTarget: getActiveStoriesByTarget
|
|
20543
|
+
});
|
|
20544
|
+
|
|
20127
20545
|
/**
|
|
20128
20546
|
* Retrieves accessToken info to use in Beta services
|
|
20129
20547
|
*
|
|
@@ -20147,28 +20565,29 @@ const createUserToken = async (apiKey, apiRegion, params) => {
|
|
|
20147
20565
|
};
|
|
20148
20566
|
|
|
20149
20567
|
exports.API_REGIONS = API_REGIONS;
|
|
20150
|
-
exports.CategoryRepository = index$
|
|
20151
|
-
exports.ChannelRepository = index$
|
|
20152
|
-
exports.Client = index$
|
|
20153
|
-
exports.CommentRepository = index$
|
|
20568
|
+
exports.CategoryRepository = index$7;
|
|
20569
|
+
exports.ChannelRepository = index$d;
|
|
20570
|
+
exports.Client = index$k;
|
|
20571
|
+
exports.CommentRepository = index$4;
|
|
20154
20572
|
exports.CommunityPostSettingMaps = CommunityPostSettingMaps;
|
|
20155
20573
|
exports.CommunityPostSettings = CommunityPostSettings;
|
|
20156
|
-
exports.CommunityRepository = index$
|
|
20574
|
+
exports.CommunityRepository = index$8;
|
|
20157
20575
|
exports.ContentFeedType = ContentFeedType;
|
|
20158
20576
|
exports.DefaultCommunityPostSetting = DefaultCommunityPostSetting;
|
|
20159
|
-
exports.FeedRepository = index$
|
|
20160
|
-
exports.FileRepository = index$
|
|
20577
|
+
exports.FeedRepository = index$6;
|
|
20578
|
+
exports.FileRepository = index$h;
|
|
20161
20579
|
exports.FileType = FileType;
|
|
20162
|
-
exports.LiveStreamPlayer = index;
|
|
20580
|
+
exports.LiveStreamPlayer = index$1;
|
|
20163
20581
|
exports.MessageContentType = MessageContentType;
|
|
20164
|
-
exports.MessageRepository = index$
|
|
20165
|
-
exports.PollRepository = index$
|
|
20582
|
+
exports.MessageRepository = index$c;
|
|
20583
|
+
exports.PollRepository = index$2;
|
|
20166
20584
|
exports.PostContentType = PostContentType;
|
|
20167
|
-
exports.PostRepository = index$
|
|
20168
|
-
exports.ReactionRepository = index$
|
|
20169
|
-
exports.
|
|
20170
|
-
exports.
|
|
20171
|
-
exports.
|
|
20585
|
+
exports.PostRepository = index$5;
|
|
20586
|
+
exports.ReactionRepository = index$g;
|
|
20587
|
+
exports.StoryRepository = index;
|
|
20588
|
+
exports.StreamRepository = index$3;
|
|
20589
|
+
exports.SubChannelRepository = index$b;
|
|
20590
|
+
exports.UserRepository = index$i;
|
|
20172
20591
|
exports.VERSION = VERSION;
|
|
20173
20592
|
exports.VideoResolution = VideoResolution;
|
|
20174
20593
|
exports.VideoSize = VideoSize;
|