@amityco/ts-sdk 7.7.1-f6f69f8.0 → 7.7.1-fbab8668.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/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/core/payload.d.ts +3 -8
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/core/payload.d.ts.map +1 -1
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/core/payload.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/hashtag.d.ts +11 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/hashtag.d.ts.map +1 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/hashtag.js +2 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/hashtag.js.map +1 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/post.d.ts +12 -1
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/post.d.ts.map +1 -1
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/post.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/index.d.ts +1 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/index.d.ts.map +1 -1
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/index.js +1 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/index.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/channelRepository/events/onChannelSetMuted.d.ts.map +1 -1
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/channelRepository/events/onChannelSetMuted.js +8 -6
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/channelRepository/events/onChannelSetMuted.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/createPost.d.ts +1 -1
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/createPost.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/editPost.d.ts +1 -1
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/editPost.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/index.d.ts +1 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/index.d.ts.map +1 -1
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/index.js +1 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/index.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/searchPostsByHashtag.d.ts +16 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/searchPostsByHashtag.d.ts.map +1 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/searchPostsByHashtag.js +63 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/searchPostsByHashtag.js.map +1 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.d.ts +14 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.d.ts.map +1 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.js +135 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.js.map +1 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.d.ts +5 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.d.ts.map +1 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.js +27 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.js.map +1 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.d.ts +15 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.d.ts.map +1 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.js +71 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.js.map +1 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag.d.ts +22 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag.d.ts.map +1 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag.js +45 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag.js.map +1 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/index.d.ts +1 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/index.d.ts.map +1 -1
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/index.js +1 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/index.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/streamRepository/events/onStreamViewerBanned.d.ts.map +1 -1
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/streamRepository/events/onStreamViewerBanned.js +8 -5
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/streamRepository/events/onStreamViewerBanned.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/streamRepository/events/onStreamViewerUnbanned.d.ts.map +1 -1
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/streamRepository/events/onStreamViewerUnbanned.js +6 -3
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/streamRepository/events/onStreamViewerUnbanned.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/tsconfig.tsbuildinfo +1 -1
- package/dist/@types/core/payload.d.ts +3 -8
- package/dist/@types/core/payload.d.ts.map +1 -1
- package/dist/@types/domains/hashtag.d.ts +11 -0
- package/dist/@types/domains/hashtag.d.ts.map +1 -0
- package/dist/@types/domains/post.d.ts +12 -1
- package/dist/@types/domains/post.d.ts.map +1 -1
- package/dist/@types/index.d.ts +1 -0
- package/dist/@types/index.d.ts.map +1 -1
- package/dist/channelRepository/events/onChannelSetMuted.d.ts.map +1 -1
- package/dist/index.cjs.js +326 -15
- package/dist/index.esm.js +326 -15
- package/dist/index.umd.js +1 -1
- package/dist/postRepository/api/createPost.d.ts +1 -1
- package/dist/postRepository/api/editPost.d.ts +1 -1
- package/dist/postRepository/api/index.d.ts +1 -0
- package/dist/postRepository/api/index.d.ts.map +1 -1
- package/dist/postRepository/api/searchPostsByHashtag.d.ts +16 -0
- package/dist/postRepository/api/searchPostsByHashtag.d.ts.map +1 -0
- package/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.d.ts +14 -0
- package/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.d.ts.map +1 -0
- package/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.d.ts +5 -0
- package/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.d.ts.map +1 -0
- package/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.d.ts +15 -0
- package/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.d.ts.map +1 -0
- package/dist/postRepository/observers/getPostsByHashtag.d.ts +22 -0
- package/dist/postRepository/observers/getPostsByHashtag.d.ts.map +1 -0
- package/dist/postRepository/observers/index.d.ts +1 -0
- package/dist/postRepository/observers/index.d.ts.map +1 -1
- package/dist/streamRepository/events/onStreamViewerBanned.d.ts.map +1 -1
- package/dist/streamRepository/events/onStreamViewerUnbanned.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/@types/core/payload.ts +3 -4
- package/src/@types/domains/hashtag.ts +11 -0
- package/src/@types/domains/post.ts +13 -1
- package/src/@types/index.ts +1 -0
- package/src/channelRepository/events/onChannelSetMuted.ts +8 -6
- package/src/postRepository/api/createPost.ts +1 -1
- package/src/postRepository/api/editPost.ts +1 -1
- package/src/postRepository/api/index.ts +2 -0
- package/src/postRepository/api/searchPostsByHashtag.ts +77 -0
- package/src/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.ts +198 -0
- package/src/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.ts +47 -0
- package/src/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.ts +102 -0
- package/src/postRepository/observers/getPostsByHashtag.ts +56 -0
- package/src/postRepository/observers/index.ts +1 -0
- package/src/streamRepository/events/onStreamViewerBanned.ts +8 -5
- package/src/streamRepository/events/onStreamViewerUnbanned.ts +6 -4
- package/tsconfig.tsbuildinfo +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -22453,17 +22453,19 @@ const dispose$7 = (cb) => {
|
|
|
22453
22453
|
const onChannelSetMuted = (callback) => {
|
|
22454
22454
|
if (callbacks$7.length === 0) {
|
|
22455
22455
|
const client = getActiveClient();
|
|
22456
|
-
const filter = async (
|
|
22456
|
+
const filter = async (payloads) => {
|
|
22457
22457
|
var _a;
|
|
22458
|
-
|
|
22459
|
-
|
|
22460
|
-
|
|
22461
|
-
|
|
22458
|
+
payloads.forEach(payload => {
|
|
22459
|
+
upsertInCache(['channel', 'get', payload.channelId], {
|
|
22460
|
+
// If muteTimeout > now => user is muted
|
|
22461
|
+
// Otherwise => user is unmuted
|
|
22462
|
+
isMuted: Date.parse(payload.muteTimeout) > Date.now(),
|
|
22463
|
+
});
|
|
22462
22464
|
});
|
|
22463
22465
|
const channel = (_a = pullFromCache([
|
|
22464
22466
|
'channel',
|
|
22465
22467
|
'get',
|
|
22466
|
-
|
|
22468
|
+
payloads[0].channelId,
|
|
22467
22469
|
])) === null || _a === void 0 ? void 0 : _a.data;
|
|
22468
22470
|
if (channel) {
|
|
22469
22471
|
callbacks$7.forEach(cb => cb(channel));
|
|
@@ -33826,20 +33828,23 @@ const onStreamViewerBanned = (callback) => {
|
|
|
33826
33828
|
const client = getActiveClient();
|
|
33827
33829
|
const filter = (payloads) => {
|
|
33828
33830
|
var _a;
|
|
33829
|
-
|
|
33830
|
-
list.forEach(payload => {
|
|
33831
|
+
payloads.forEach(streamBanned => {
|
|
33831
33832
|
var _a;
|
|
33832
|
-
mergeInCache(['stream', 'get',
|
|
33833
|
+
mergeInCache(['stream', 'get', streamBanned.streamId], { watcherUrl: null });
|
|
33833
33834
|
// Update isDeleted = true in banned user's messages
|
|
33834
33835
|
const messageCache = (_a = queryCache(['message', 'get'])) === null || _a === void 0 ? void 0 : _a.filter(
|
|
33835
33836
|
// Check if creator id and user id are internal or external id
|
|
33836
|
-
({ data }) => data.creatorId ===
|
|
33837
|
+
({ data }) => data.creatorId === streamBanned.userId);
|
|
33837
33838
|
// Update isDeleted for each relavant messages
|
|
33838
33839
|
messageCache === null || messageCache === void 0 ? void 0 : messageCache.forEach(message => {
|
|
33839
33840
|
mergeInCache(message.key, { isDeleted: true });
|
|
33840
33841
|
});
|
|
33841
33842
|
});
|
|
33842
|
-
const stream = (_a = pullFromCache([
|
|
33843
|
+
const stream = (_a = pullFromCache([
|
|
33844
|
+
'stream',
|
|
33845
|
+
'get',
|
|
33846
|
+
payloads[0].streamId,
|
|
33847
|
+
])) === null || _a === void 0 ? void 0 : _a.data;
|
|
33843
33848
|
if (!stream)
|
|
33844
33849
|
return;
|
|
33845
33850
|
callback(stream);
|
|
@@ -39758,6 +39763,61 @@ const createClipPost = async (bundle) => {
|
|
|
39758
39763
|
};
|
|
39759
39764
|
/* end_public_function */
|
|
39760
39765
|
|
|
39766
|
+
/**
|
|
39767
|
+
* ```js
|
|
39768
|
+
* import { searchPostsByHashtag } from '@amityco/ts-sdk'
|
|
39769
|
+
* const { data: posts, prevPage, nextPage } = await searchPostsByHashtag({ hashtags: ['amity'], limit: 10 });
|
|
39770
|
+
* ```
|
|
39771
|
+
*
|
|
39772
|
+
* Queries a paginable list of {@link Amity.Post} objects
|
|
39773
|
+
*
|
|
39774
|
+
* @param query The query parameters
|
|
39775
|
+
* @returns posts
|
|
39776
|
+
*
|
|
39777
|
+
* @category Post API
|
|
39778
|
+
* @async
|
|
39779
|
+
*/
|
|
39780
|
+
const searchPostsByHashtag = async (query) => {
|
|
39781
|
+
const client = getActiveClient();
|
|
39782
|
+
client.log('post/queryByHashtag', query);
|
|
39783
|
+
const { page, limit = 10, includeDeleted } = query, params = __rest(query, ["page", "limit", "includeDeleted"]);
|
|
39784
|
+
const { dataTypes, matchingOnlyParentPost } = params;
|
|
39785
|
+
const options = (() => {
|
|
39786
|
+
if (page)
|
|
39787
|
+
return { token: page };
|
|
39788
|
+
if (limit)
|
|
39789
|
+
return { limit };
|
|
39790
|
+
return undefined;
|
|
39791
|
+
})();
|
|
39792
|
+
// API-FIX: parameters should be querystring. (1)
|
|
39793
|
+
// API-FIX: backend should answer Amity.Response (2)
|
|
39794
|
+
// const { data } = await client.http.get<Amity.Response<Amity.PagedResponse<Amity.PostPayload>>>(
|
|
39795
|
+
const { data } = await client.http.get(`/api/v5/posts`, {
|
|
39796
|
+
params: Object.assign(Object.assign({}, params), { isDeleted: inferIsDeleted(includeDeleted),
|
|
39797
|
+
/*
|
|
39798
|
+
* when creating post like image, file, video BE will create 2 posts
|
|
39799
|
+
* 1. parent post to store text with dataType=text
|
|
39800
|
+
* 2. child post to store dataTypes post data
|
|
39801
|
+
*
|
|
39802
|
+
* By default, BE queries only parent post
|
|
39803
|
+
*/
|
|
39804
|
+
matchingOnlyParentPost: matchingOnlyParentPost !== null && matchingOnlyParentPost !== void 0 ? matchingOnlyParentPost : !(dataTypes === null || dataTypes === void 0 ? void 0 : dataTypes.length), options }),
|
|
39805
|
+
});
|
|
39806
|
+
// API-FIX: backend should answer Amity.Response (2)
|
|
39807
|
+
// const { paging, posts } = unwrapPayload(data)
|
|
39808
|
+
// unpacking
|
|
39809
|
+
const { paging } = data, payload = __rest(data, ["paging"]);
|
|
39810
|
+
const paperedPayload = prepareMembershipPayload(payload, 'communityUsers');
|
|
39811
|
+
const { posts } = payload;
|
|
39812
|
+
const cachedAt = client.cache && Date.now();
|
|
39813
|
+
if (client.cache) {
|
|
39814
|
+
ingestInCache(paperedPayload, { cachedAt });
|
|
39815
|
+
const cacheKey = ['post', 'query', Object.assign(Object.assign({}, params), { options })];
|
|
39816
|
+
pushToCache(cacheKey, { posts: posts.map(getResolver('post')), paging });
|
|
39817
|
+
}
|
|
39818
|
+
return { data: posts.map(LinkedObject.post), cachedAt, paging };
|
|
39819
|
+
};
|
|
39820
|
+
|
|
39761
39821
|
/* begin_public_function
|
|
39762
39822
|
id: comment.get_by_ids
|
|
39763
39823
|
*/
|
|
@@ -41645,6 +41705,252 @@ const semanticSearchPosts = (params, callback, config) => {
|
|
|
41645
41705
|
};
|
|
41646
41706
|
};
|
|
41647
41707
|
|
|
41708
|
+
class SearchPostPaginationController extends PaginationController {
|
|
41709
|
+
async getRequest(queryParams, token) {
|
|
41710
|
+
const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT, includeDeleted, matchingOnlyParentPost, hashtags } = queryParams, params = __rest(queryParams, ["limit", "includeDeleted", "matchingOnlyParentPost", "hashtags"]);
|
|
41711
|
+
const { dataTypes } = params;
|
|
41712
|
+
const baseOptions = {
|
|
41713
|
+
type: params.sortBy || queryParams.limit ? 'pagination' : undefined,
|
|
41714
|
+
};
|
|
41715
|
+
const options = token ? Object.assign(Object.assign({}, baseOptions), { token }) : Object.assign(Object.assign({}, baseOptions), { limit });
|
|
41716
|
+
const { data: queryResponse } = await this.http.get(`/api/v1/search/posts`, {
|
|
41717
|
+
params: Object.assign(Object.assign({}, params), { isDeleted: inferIsDeleted(includeDeleted), hashtags,
|
|
41718
|
+
/*
|
|
41719
|
+
* when creating post like image, file, video BE will create 2 posts
|
|
41720
|
+
* 1. parent post to store text with dataType=text
|
|
41721
|
+
* 2. child post to store dataTypes post data
|
|
41722
|
+
*
|
|
41723
|
+
* By default, BE queries only parent post
|
|
41724
|
+
*/
|
|
41725
|
+
matchingOnlyParentPost: matchingOnlyParentPost !== null && matchingOnlyParentPost !== void 0 ? matchingOnlyParentPost : !(dataTypes === null || dataTypes === void 0 ? void 0 : dataTypes.length), options }),
|
|
41726
|
+
});
|
|
41727
|
+
return queryResponse;
|
|
41728
|
+
}
|
|
41729
|
+
}
|
|
41730
|
+
|
|
41731
|
+
class SearchPostQueryStreamController extends QueryStreamController {
|
|
41732
|
+
constructor(query, cacheKey, notifyChange, preparePayload) {
|
|
41733
|
+
super(query, cacheKey);
|
|
41734
|
+
this.notifyChange = notifyChange;
|
|
41735
|
+
this.preparePayload = preparePayload;
|
|
41736
|
+
}
|
|
41737
|
+
async saveToMainDB(response) {
|
|
41738
|
+
const processedPayload = await this.preparePayload(response);
|
|
41739
|
+
const client = getActiveClient();
|
|
41740
|
+
const cachedAt = client.cache && Date.now();
|
|
41741
|
+
if (client.cache) {
|
|
41742
|
+
ingestInCache(processedPayload, { cachedAt });
|
|
41743
|
+
}
|
|
41744
|
+
}
|
|
41745
|
+
appendToQueryStream(response, direction, refresh = false) {
|
|
41746
|
+
var _a, _b;
|
|
41747
|
+
if (refresh) {
|
|
41748
|
+
pushToCache(this.cacheKey, {
|
|
41749
|
+
data: response.posts.map(getResolver('post')),
|
|
41750
|
+
});
|
|
41751
|
+
}
|
|
41752
|
+
else {
|
|
41753
|
+
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
41754
|
+
const posts = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
|
|
41755
|
+
pushToCache(this.cacheKey, Object.assign(Object.assign({}, collection), { data: [...new Set([...posts, ...response.posts.map(getResolver('post'))])] }));
|
|
41756
|
+
}
|
|
41757
|
+
}
|
|
41758
|
+
reactor(action) {
|
|
41759
|
+
return (post) => {
|
|
41760
|
+
var _a, _b;
|
|
41761
|
+
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
41762
|
+
if (!collection)
|
|
41763
|
+
return;
|
|
41764
|
+
if (post.parentPostId && post.isDeleted) {
|
|
41765
|
+
const parentPost = (_b = pullFromCache([
|
|
41766
|
+
'post',
|
|
41767
|
+
'get',
|
|
41768
|
+
post.parentPostId,
|
|
41769
|
+
])) === null || _b === void 0 ? void 0 : _b.data;
|
|
41770
|
+
if (!parentPost || (parentPost === null || parentPost === void 0 ? void 0 : parentPost.targetId) !== this.query.targetId)
|
|
41771
|
+
return;
|
|
41772
|
+
parentPost.children = parentPost.children.filter(childId => childId !== post.postId);
|
|
41773
|
+
pushToCache(['post', 'get', parentPost.postId], parentPost);
|
|
41774
|
+
}
|
|
41775
|
+
else {
|
|
41776
|
+
if (this.query.targetId !== post.targetId)
|
|
41777
|
+
return;
|
|
41778
|
+
if (this.query.targetType !== post.targetType)
|
|
41779
|
+
return;
|
|
41780
|
+
}
|
|
41781
|
+
if (action === EnumPostActions.OnPostDeclined) {
|
|
41782
|
+
collection.data = collection.data.filter(postId => postId !== post.postId);
|
|
41783
|
+
}
|
|
41784
|
+
if (action === EnumPostActions.OnPostCreated || action === EnumPostActions.OnPostApproved) {
|
|
41785
|
+
collection.data = [...new Set([post.postId, ...collection.data])];
|
|
41786
|
+
}
|
|
41787
|
+
pushToCache(this.cacheKey, collection);
|
|
41788
|
+
this.notifyChange({ origin: "event" /* Amity.LiveDataOrigin.EVENT */, loading: false });
|
|
41789
|
+
};
|
|
41790
|
+
}
|
|
41791
|
+
subscribeRTE(createSubscriber) {
|
|
41792
|
+
return createSubscriber.map(subscriber => subscriber.fn(this.reactor(subscriber.action)));
|
|
41793
|
+
}
|
|
41794
|
+
}
|
|
41795
|
+
|
|
41796
|
+
class SearchPostLiveCollectionController extends LiveCollectionController {
|
|
41797
|
+
constructor(query, callback) {
|
|
41798
|
+
const queryStreamId = hash(query);
|
|
41799
|
+
const cacheKey = ['posts', 'collection', queryStreamId];
|
|
41800
|
+
const paginationController = new SearchPostPaginationController(query);
|
|
41801
|
+
super(paginationController, queryStreamId, cacheKey, callback);
|
|
41802
|
+
this.query = query;
|
|
41803
|
+
this.queryStreamController = new SearchPostQueryStreamController(this.query, this.cacheKey, this.notifyChange.bind(this), preparePostPayload);
|
|
41804
|
+
this.callback = callback.bind(this);
|
|
41805
|
+
this.loadPage({ initial: true });
|
|
41806
|
+
}
|
|
41807
|
+
setup() {
|
|
41808
|
+
var _a;
|
|
41809
|
+
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
41810
|
+
if (!collection) {
|
|
41811
|
+
pushToCache(this.cacheKey, {
|
|
41812
|
+
data: [],
|
|
41813
|
+
params: {},
|
|
41814
|
+
});
|
|
41815
|
+
}
|
|
41816
|
+
}
|
|
41817
|
+
async persistModel(queryPayload) {
|
|
41818
|
+
await this.queryStreamController.saveToMainDB(queryPayload);
|
|
41819
|
+
}
|
|
41820
|
+
persistQueryStream({ response, direction, refresh, }) {
|
|
41821
|
+
this.queryStreamController.appendToQueryStream(response, direction, refresh);
|
|
41822
|
+
}
|
|
41823
|
+
startSubscription() {
|
|
41824
|
+
return this.queryStreamController.subscribeRTE([
|
|
41825
|
+
{ fn: onPostCreated, action: EnumPostActions.OnPostCreated },
|
|
41826
|
+
{ fn: onPostUpdated, action: EnumPostActions.OnPostUpdated },
|
|
41827
|
+
{ fn: onPostUpdatedLocal, action: EnumPostActions.OnPostUpdated },
|
|
41828
|
+
{ fn: onPostDeleted, action: EnumPostActions.OnPostDeleted },
|
|
41829
|
+
{ fn: onPostFlagged, action: EnumPostActions.OnPostFlagged },
|
|
41830
|
+
{ fn: onPostUnflagged, action: EnumPostActions.OnPostUnflagged },
|
|
41831
|
+
{ fn: onPostApproved, action: EnumPostActions.OnPostApproved },
|
|
41832
|
+
{ fn: onPostDeclined, action: EnumPostActions.OnPostDeclined },
|
|
41833
|
+
{ fn: onPostReactionAdded, action: EnumPostActions.OnPostReactionAdded },
|
|
41834
|
+
{ fn: onPostReactionRemoved, action: EnumPostActions.OnPostReactionRemoved },
|
|
41835
|
+
{ fn: onLocalPostReactionAdded, action: EnumPostActions.OnPostReactionAdded },
|
|
41836
|
+
{ fn: onLocalPostReactionRemoved, action: EnumPostActions.OnPostReactionRemoved },
|
|
41837
|
+
{ fn: onLocalPostDeleted, action: EnumPostActions.OnPostDeleted },
|
|
41838
|
+
{
|
|
41839
|
+
fn: convertEventPayload((callback) => {
|
|
41840
|
+
return onCommentCreated(async (comment) => {
|
|
41841
|
+
var _a;
|
|
41842
|
+
const currentCollection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
41843
|
+
if (!currentCollection || currentCollection.data.includes(comment.referenceId))
|
|
41844
|
+
return;
|
|
41845
|
+
await getPost(comment.referenceId);
|
|
41846
|
+
callback(comment);
|
|
41847
|
+
});
|
|
41848
|
+
}, 'referenceId', 'post'),
|
|
41849
|
+
action: EnumPostActions.OnPostUpdated,
|
|
41850
|
+
},
|
|
41851
|
+
{
|
|
41852
|
+
fn: convertEventPayload((callback) => {
|
|
41853
|
+
return onCommentDeleted(async (comment) => {
|
|
41854
|
+
var _a;
|
|
41855
|
+
const currentCollection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
41856
|
+
if (!currentCollection || currentCollection.data.includes(comment.referenceId))
|
|
41857
|
+
return;
|
|
41858
|
+
await getPost(comment.referenceId);
|
|
41859
|
+
callback(comment);
|
|
41860
|
+
});
|
|
41861
|
+
}, 'referenceId', 'post'),
|
|
41862
|
+
action: EnumPostActions.OnPostUpdated,
|
|
41863
|
+
},
|
|
41864
|
+
]);
|
|
41865
|
+
}
|
|
41866
|
+
notifyChange({ origin, loading, error }) {
|
|
41867
|
+
var _a, _b;
|
|
41868
|
+
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
41869
|
+
if (!collection)
|
|
41870
|
+
return;
|
|
41871
|
+
const data = this.applyFilter((_b = collection.data
|
|
41872
|
+
.map(id => pullFromCache(['post', 'get', id]))
|
|
41873
|
+
.filter(isNonNullable)
|
|
41874
|
+
.map(({ data }) => data)) !== null && _b !== void 0 ? _b : []).map(LinkedObject.post);
|
|
41875
|
+
if (!this.shouldNotify(data) && origin === 'event')
|
|
41876
|
+
return;
|
|
41877
|
+
this.callback({
|
|
41878
|
+
onNextPage: () => this.loadPage({ direction: "next" /* Amity.LiveCollectionPageDirection.NEXT */ }),
|
|
41879
|
+
data,
|
|
41880
|
+
hasNextPage: !!this.paginationController.getNextToken(),
|
|
41881
|
+
loading,
|
|
41882
|
+
error,
|
|
41883
|
+
});
|
|
41884
|
+
}
|
|
41885
|
+
applyFilter(data) {
|
|
41886
|
+
var _a;
|
|
41887
|
+
let posts = data;
|
|
41888
|
+
if (!this.query.includeDeleted) {
|
|
41889
|
+
posts = filterByPropEquality(posts, 'isDeleted', false);
|
|
41890
|
+
}
|
|
41891
|
+
if (this.query.tags) {
|
|
41892
|
+
posts = posts.filter(p => { var _a; return (_a = p.tags) === null || _a === void 0 ? void 0 : _a.some(t => { var _a; return (_a = this.query.tags) === null || _a === void 0 ? void 0 : _a.includes(t); }); });
|
|
41893
|
+
}
|
|
41894
|
+
if (this.query.targetType === 'community' && this.query.feedType) {
|
|
41895
|
+
posts = filterByFeedType(posts, this.query.feedType);
|
|
41896
|
+
}
|
|
41897
|
+
if ((_a = this.query.dataTypes) === null || _a === void 0 ? void 0 : _a.length) {
|
|
41898
|
+
posts = filterByPostDataTypes(posts, this.query.dataTypes);
|
|
41899
|
+
}
|
|
41900
|
+
switch (this.query.sortBy) {
|
|
41901
|
+
case 'firstCreated':
|
|
41902
|
+
posts = posts.sort(sortByFirstCreated);
|
|
41903
|
+
break;
|
|
41904
|
+
case 'lastCreated':
|
|
41905
|
+
default:
|
|
41906
|
+
posts = posts.sort(sortByLastCreated);
|
|
41907
|
+
break;
|
|
41908
|
+
}
|
|
41909
|
+
return posts;
|
|
41910
|
+
}
|
|
41911
|
+
}
|
|
41912
|
+
|
|
41913
|
+
/* begin_public_function
|
|
41914
|
+
id: post.query
|
|
41915
|
+
*/
|
|
41916
|
+
/**
|
|
41917
|
+
* ```js
|
|
41918
|
+
* import { PostRepository } from '@amityco/ts-sdk'
|
|
41919
|
+
*
|
|
41920
|
+
* let posts = []
|
|
41921
|
+
* const unsub = PostRepository.searchPostsByHashtag({
|
|
41922
|
+
* hashtags: ['amity'],
|
|
41923
|
+
* limit: 10,
|
|
41924
|
+
* }, response => merge(posts, response.data))
|
|
41925
|
+
* ```
|
|
41926
|
+
*
|
|
41927
|
+
* Observe all mutations on a list of {@link Amity.Post} for a given target object
|
|
41928
|
+
*
|
|
41929
|
+
* @param params.hashtags the hashtags to search for
|
|
41930
|
+
* @param callback the function to call when new data are available
|
|
41931
|
+
* @param config
|
|
41932
|
+
* @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the messages
|
|
41933
|
+
*
|
|
41934
|
+
* @category Posts Live Collection
|
|
41935
|
+
*/
|
|
41936
|
+
const getPostsByHashtag = (params, callback, config) => {
|
|
41937
|
+
const { log, cache } = getActiveClient();
|
|
41938
|
+
if (!cache) {
|
|
41939
|
+
console.log(ENABLE_CACHE_MESSAGE);
|
|
41940
|
+
}
|
|
41941
|
+
const timestamp = Date.now();
|
|
41942
|
+
log(`searchPostsByHashtag(tmpid: ${timestamp}) > listen`);
|
|
41943
|
+
const postsLiveCollection = new SearchPostLiveCollectionController(params, callback);
|
|
41944
|
+
const disposers = postsLiveCollection.startSubscription();
|
|
41945
|
+
const cacheKey = postsLiveCollection.getCacheKey();
|
|
41946
|
+
disposers.push(() => dropFromCache(cacheKey));
|
|
41947
|
+
return () => {
|
|
41948
|
+
log(`searchPostsByHashtag(tmpid: ${timestamp}) > dispose`);
|
|
41949
|
+
disposers.forEach(fn => fn());
|
|
41950
|
+
};
|
|
41951
|
+
};
|
|
41952
|
+
/* end_public_function */
|
|
41953
|
+
|
|
41648
41954
|
var index$8 = /*#__PURE__*/Object.freeze({
|
|
41649
41955
|
__proto__: null,
|
|
41650
41956
|
getPostByIds: getPostByIds,
|
|
@@ -41659,6 +41965,7 @@ var index$8 = /*#__PURE__*/Object.freeze({
|
|
|
41659
41965
|
unflagPost: unflagPost,
|
|
41660
41966
|
isPostFlaggedByMe: isPostFlaggedByMe,
|
|
41661
41967
|
createClipPost: createClipPost,
|
|
41968
|
+
searchPostsByHashtag: searchPostsByHashtag,
|
|
41662
41969
|
onPostCreated: onPostCreated,
|
|
41663
41970
|
onPostUpdated: onPostUpdated,
|
|
41664
41971
|
onPostDeleted: onPostDeleted,
|
|
@@ -41672,7 +41979,8 @@ var index$8 = /*#__PURE__*/Object.freeze({
|
|
|
41672
41979
|
getPosts: getPosts,
|
|
41673
41980
|
getPinnedPosts: getPinnedPosts,
|
|
41674
41981
|
getGlobalPinnedPosts: getGlobalPinnedPosts,
|
|
41675
|
-
semanticSearchPosts: semanticSearchPosts
|
|
41982
|
+
semanticSearchPosts: semanticSearchPosts,
|
|
41983
|
+
getPostsByHashtag: getPostsByHashtag
|
|
41676
41984
|
});
|
|
41677
41985
|
|
|
41678
41986
|
/* begin_public_function
|
|
@@ -42037,9 +42345,12 @@ const onStreamViewerUnbanned = (callback) => {
|
|
|
42037
42345
|
const filter = async (payloads) => {
|
|
42038
42346
|
var _a;
|
|
42039
42347
|
// Get new stream object to restore stream watcherUrl in cache
|
|
42040
|
-
|
|
42041
|
-
|
|
42042
|
-
|
|
42348
|
+
await Promise.all(payloads.map(({ streamId }) => getStream(streamId)));
|
|
42349
|
+
const stream = (_a = pullFromCache([
|
|
42350
|
+
'stream',
|
|
42351
|
+
'get',
|
|
42352
|
+
payloads[0].streamId,
|
|
42353
|
+
])) === null || _a === void 0 ? void 0 : _a.data;
|
|
42043
42354
|
if (!stream)
|
|
42044
42355
|
return;
|
|
42045
42356
|
callback(stream);
|