@amityco/ts-sdk 7.7.1-3f344102.0 → 7.7.1-4843378b.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 +1 -2
- 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 +8 -3
- 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/getPostsByHashtag.d.ts +16 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/getPostsByHashtag.d.ts.map +1 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/getPostsByHashtag.js +62 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/getPostsByHashtag.js.map +1 -0
- 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/observers/getPosts/PostPaginationController.d.ts.map +1 -1
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPosts/PostPaginationController.js +2 -3
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPosts/PostPaginationController.js.map +1 -1
- 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 +126 -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 +26 -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 +65 -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/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/postRepository/observers/searchPostsByHashtag.d.ts +22 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/searchPostsByHashtag.d.ts.map +1 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/searchPostsByHashtag.js +45 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/searchPostsByHashtag.js.map +1 -0
- package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/tsconfig.tsbuildinfo +1 -1
- package/dist/@types/core/payload.d.ts +1 -2
- 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 +8 -3
- 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 +299 -9
- package/dist/index.esm.js +299 -9
- package/dist/index.umd.js +4 -4
- package/dist/postRepository/api/createPost.d.ts +1 -1
- package/dist/postRepository/api/editPost.d.ts +1 -1
- package/dist/postRepository/api/getPostsByHashtag.d.ts +16 -0
- package/dist/postRepository/api/getPostsByHashtag.d.ts.map +1 -0
- package/dist/postRepository/api/index.d.ts +1 -0
- package/dist/postRepository/api/index.d.ts.map +1 -1
- package/dist/postRepository/observers/getPosts/PostPaginationController.d.ts.map +1 -1
- 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/index.d.ts +1 -0
- package/dist/postRepository/observers/index.d.ts.map +1 -1
- package/dist/postRepository/observers/searchPostsByHashtag.d.ts +22 -0
- package/dist/postRepository/observers/searchPostsByHashtag.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/@types/core/payload.ts +1 -2
- package/src/@types/domains/hashtag.ts +11 -0
- package/src/@types/domains/post.ts +12 -3
- 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/getPostsByHashtag.ts +77 -0
- package/src/postRepository/api/index.ts +2 -0
- package/src/postRepository/observers/getPosts/PostPaginationController.ts +0 -3
- package/src/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.ts +186 -0
- package/src/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.ts +45 -0
- package/src/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.ts +99 -0
- package/src/postRepository/observers/index.ts +1 -0
- package/src/postRepository/observers/searchPostsByHashtag.ts +56 -0
- 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));
|
|
@@ -39761,6 +39763,61 @@ const createClipPost = async (bundle) => {
|
|
|
39761
39763
|
};
|
|
39762
39764
|
/* end_public_function */
|
|
39763
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 getPostsByHashtag = async (query) => {
|
|
39781
|
+
const client = getActiveClient();
|
|
39782
|
+
client.log('post/queryByHashtag', query);
|
|
39783
|
+
const { page, limit = 10 } = query, params = __rest(query, ["page", "limit"]);
|
|
39784
|
+
const { dataTypes, matchingOnlyParentPost, hashtags } = 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), { hashtags,
|
|
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
|
+
|
|
39764
39821
|
/* begin_public_function
|
|
39765
39822
|
id: comment.get_by_ids
|
|
39766
39823
|
*/
|
|
@@ -40843,14 +40900,14 @@ const getPost$1 = (postId, callback) => {
|
|
|
40843
40900
|
|
|
40844
40901
|
class PostPaginationController extends PaginationController {
|
|
40845
40902
|
async getRequest(queryParams, token) {
|
|
40846
|
-
const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT,
|
|
40903
|
+
const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT, matchingOnlyParentPost } = queryParams, params = __rest(queryParams, ["limit", "matchingOnlyParentPost"]);
|
|
40847
40904
|
const { dataTypes } = params;
|
|
40848
40905
|
const baseOptions = {
|
|
40849
40906
|
type: params.sortBy || queryParams.limit ? 'pagination' : undefined,
|
|
40850
40907
|
};
|
|
40851
40908
|
const options = token ? Object.assign(Object.assign({}, baseOptions), { token }) : Object.assign(Object.assign({}, baseOptions), { limit });
|
|
40852
40909
|
const { data: queryResponse } = await this.http.get(`/api/v5/posts`, {
|
|
40853
|
-
params: Object.assign(Object.assign({}, params), {
|
|
40910
|
+
params: Object.assign(Object.assign({}, params), {
|
|
40854
40911
|
/*
|
|
40855
40912
|
* when creating post like image, file, video BE will create 2 posts
|
|
40856
40913
|
* 1. parent post to store text with dataType=text
|
|
@@ -41648,6 +41705,237 @@ const semanticSearchPosts = (params, callback, config) => {
|
|
|
41648
41705
|
};
|
|
41649
41706
|
};
|
|
41650
41707
|
|
|
41708
|
+
class SearchPostPaginationController extends PaginationController {
|
|
41709
|
+
async getRequest(queryParams, token) {
|
|
41710
|
+
const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT, matchingOnlyParentPost, hashtags } = queryParams, params = __rest(queryParams, ["limit", "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), { 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)
|
|
41771
|
+
return;
|
|
41772
|
+
parentPost.children = parentPost.children.filter(childId => childId !== post.postId);
|
|
41773
|
+
pushToCache(['post', 'get', parentPost.postId], parentPost);
|
|
41774
|
+
}
|
|
41775
|
+
if (action === EnumPostActions.OnPostDeclined) {
|
|
41776
|
+
collection.data = collection.data.filter(postId => postId !== post.postId);
|
|
41777
|
+
}
|
|
41778
|
+
if (action === EnumPostActions.OnPostCreated || action === EnumPostActions.OnPostApproved) {
|
|
41779
|
+
collection.data = [...new Set([post.postId, ...collection.data])];
|
|
41780
|
+
}
|
|
41781
|
+
pushToCache(this.cacheKey, collection);
|
|
41782
|
+
this.notifyChange({ origin: "event" /* Amity.LiveDataOrigin.EVENT */, loading: false });
|
|
41783
|
+
};
|
|
41784
|
+
}
|
|
41785
|
+
subscribeRTE(createSubscriber) {
|
|
41786
|
+
return createSubscriber.map(subscriber => subscriber.fn(this.reactor(subscriber.action)));
|
|
41787
|
+
}
|
|
41788
|
+
}
|
|
41789
|
+
|
|
41790
|
+
class SearchPostLiveCollectionController extends LiveCollectionController {
|
|
41791
|
+
constructor(query, callback) {
|
|
41792
|
+
const queryStreamId = hash(query);
|
|
41793
|
+
const cacheKey = ['posts', 'collection', queryStreamId];
|
|
41794
|
+
const paginationController = new SearchPostPaginationController(query);
|
|
41795
|
+
super(paginationController, queryStreamId, cacheKey, callback);
|
|
41796
|
+
this.query = query;
|
|
41797
|
+
this.queryStreamController = new SearchPostQueryStreamController(this.query, this.cacheKey, this.notifyChange.bind(this), preparePostPayload);
|
|
41798
|
+
this.callback = callback.bind(this);
|
|
41799
|
+
this.loadPage({ initial: true });
|
|
41800
|
+
}
|
|
41801
|
+
setup() {
|
|
41802
|
+
var _a;
|
|
41803
|
+
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
41804
|
+
if (!collection) {
|
|
41805
|
+
pushToCache(this.cacheKey, {
|
|
41806
|
+
data: [],
|
|
41807
|
+
params: {},
|
|
41808
|
+
});
|
|
41809
|
+
}
|
|
41810
|
+
}
|
|
41811
|
+
async persistModel(queryPayload) {
|
|
41812
|
+
await this.queryStreamController.saveToMainDB(queryPayload);
|
|
41813
|
+
}
|
|
41814
|
+
persistQueryStream({ response, direction, refresh, }) {
|
|
41815
|
+
this.queryStreamController.appendToQueryStream(response, direction, refresh);
|
|
41816
|
+
}
|
|
41817
|
+
startSubscription() {
|
|
41818
|
+
return this.queryStreamController.subscribeRTE([
|
|
41819
|
+
{ fn: onPostCreated, action: EnumPostActions.OnPostCreated },
|
|
41820
|
+
{ fn: onPostUpdated, action: EnumPostActions.OnPostUpdated },
|
|
41821
|
+
{ fn: onPostUpdatedLocal, action: EnumPostActions.OnPostUpdated },
|
|
41822
|
+
{ fn: onPostDeleted, action: EnumPostActions.OnPostDeleted },
|
|
41823
|
+
{ fn: onPostFlagged, action: EnumPostActions.OnPostFlagged },
|
|
41824
|
+
{ fn: onPostUnflagged, action: EnumPostActions.OnPostUnflagged },
|
|
41825
|
+
{ fn: onPostApproved, action: EnumPostActions.OnPostApproved },
|
|
41826
|
+
{ fn: onPostDeclined, action: EnumPostActions.OnPostDeclined },
|
|
41827
|
+
{ fn: onPostReactionAdded, action: EnumPostActions.OnPostReactionAdded },
|
|
41828
|
+
{ fn: onPostReactionRemoved, action: EnumPostActions.OnPostReactionRemoved },
|
|
41829
|
+
{ fn: onLocalPostReactionAdded, action: EnumPostActions.OnPostReactionAdded },
|
|
41830
|
+
{ fn: onLocalPostReactionRemoved, action: EnumPostActions.OnPostReactionRemoved },
|
|
41831
|
+
{ fn: onLocalPostDeleted, action: EnumPostActions.OnPostDeleted },
|
|
41832
|
+
{
|
|
41833
|
+
fn: convertEventPayload((callback) => {
|
|
41834
|
+
return onCommentCreated(async (comment) => {
|
|
41835
|
+
var _a;
|
|
41836
|
+
const currentCollection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
41837
|
+
if (!currentCollection || currentCollection.data.includes(comment.referenceId))
|
|
41838
|
+
return;
|
|
41839
|
+
await getPost(comment.referenceId);
|
|
41840
|
+
callback(comment);
|
|
41841
|
+
});
|
|
41842
|
+
}, 'referenceId', 'post'),
|
|
41843
|
+
action: EnumPostActions.OnPostUpdated,
|
|
41844
|
+
},
|
|
41845
|
+
{
|
|
41846
|
+
fn: convertEventPayload((callback) => {
|
|
41847
|
+
return onCommentDeleted(async (comment) => {
|
|
41848
|
+
var _a;
|
|
41849
|
+
const currentCollection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
41850
|
+
if (!currentCollection || currentCollection.data.includes(comment.referenceId))
|
|
41851
|
+
return;
|
|
41852
|
+
await getPost(comment.referenceId);
|
|
41853
|
+
callback(comment);
|
|
41854
|
+
});
|
|
41855
|
+
}, 'referenceId', 'post'),
|
|
41856
|
+
action: EnumPostActions.OnPostUpdated,
|
|
41857
|
+
},
|
|
41858
|
+
]);
|
|
41859
|
+
}
|
|
41860
|
+
notifyChange({ origin, loading, error }) {
|
|
41861
|
+
var _a, _b;
|
|
41862
|
+
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
41863
|
+
if (!collection)
|
|
41864
|
+
return;
|
|
41865
|
+
const data = this.applyFilter((_b = collection.data
|
|
41866
|
+
.map(id => pullFromCache(['post', 'get', id]))
|
|
41867
|
+
.filter(isNonNullable)
|
|
41868
|
+
.map(({ data }) => data)) !== null && _b !== void 0 ? _b : []).map(LinkedObject.post);
|
|
41869
|
+
if (!this.shouldNotify(data) && origin === 'event')
|
|
41870
|
+
return;
|
|
41871
|
+
this.callback({
|
|
41872
|
+
onNextPage: () => this.loadPage({ direction: "next" /* Amity.LiveCollectionPageDirection.NEXT */ }),
|
|
41873
|
+
data,
|
|
41874
|
+
hasNextPage: !!this.paginationController.getNextToken(),
|
|
41875
|
+
loading,
|
|
41876
|
+
error,
|
|
41877
|
+
});
|
|
41878
|
+
}
|
|
41879
|
+
applyFilter(data) {
|
|
41880
|
+
var _a;
|
|
41881
|
+
let posts = data;
|
|
41882
|
+
if ((_a = this.query.dataTypes) === null || _a === void 0 ? void 0 : _a.length) {
|
|
41883
|
+
posts = filterByPostDataTypes(posts, this.query.dataTypes);
|
|
41884
|
+
}
|
|
41885
|
+
switch (this.query.sortBy) {
|
|
41886
|
+
case 'firstCreated':
|
|
41887
|
+
posts = posts.sort(sortByFirstCreated);
|
|
41888
|
+
break;
|
|
41889
|
+
case 'lastCreated':
|
|
41890
|
+
default:
|
|
41891
|
+
posts = posts.sort(sortByLastCreated);
|
|
41892
|
+
break;
|
|
41893
|
+
}
|
|
41894
|
+
return posts;
|
|
41895
|
+
}
|
|
41896
|
+
}
|
|
41897
|
+
|
|
41898
|
+
/* begin_public_function
|
|
41899
|
+
id: post.query
|
|
41900
|
+
*/
|
|
41901
|
+
/**
|
|
41902
|
+
* ```js
|
|
41903
|
+
* import { PostRepository } from '@amityco/ts-sdk'
|
|
41904
|
+
*
|
|
41905
|
+
* let posts = []
|
|
41906
|
+
* const unsub = PostRepository.searchPostsByHashtag({
|
|
41907
|
+
* hashtags: ['amity'],
|
|
41908
|
+
* limit: 10,
|
|
41909
|
+
* }, response => merge(posts, response.data))
|
|
41910
|
+
* ```
|
|
41911
|
+
*
|
|
41912
|
+
* Observe all mutations on a list of {@link Amity.Post} for a given target object
|
|
41913
|
+
*
|
|
41914
|
+
* @param params.hashtags the hashtags to search for
|
|
41915
|
+
* @param callback the function to call when new data are available
|
|
41916
|
+
* @param config
|
|
41917
|
+
* @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the messages
|
|
41918
|
+
*
|
|
41919
|
+
* @category Posts Live Collection
|
|
41920
|
+
*/
|
|
41921
|
+
const searchPostsByHashtag = (params, callback, config) => {
|
|
41922
|
+
const { log, cache } = getActiveClient();
|
|
41923
|
+
if (!cache) {
|
|
41924
|
+
console.log(ENABLE_CACHE_MESSAGE);
|
|
41925
|
+
}
|
|
41926
|
+
const timestamp = Date.now();
|
|
41927
|
+
log(`searchPostsByHashtag(tmpid: ${timestamp}) > listen`);
|
|
41928
|
+
const postsLiveCollection = new SearchPostLiveCollectionController(params, callback);
|
|
41929
|
+
const disposers = postsLiveCollection.startSubscription();
|
|
41930
|
+
const cacheKey = postsLiveCollection.getCacheKey();
|
|
41931
|
+
disposers.push(() => dropFromCache(cacheKey));
|
|
41932
|
+
return () => {
|
|
41933
|
+
log(`searchPostsByHashtag(tmpid: ${timestamp}) > dispose`);
|
|
41934
|
+
disposers.forEach(fn => fn());
|
|
41935
|
+
};
|
|
41936
|
+
};
|
|
41937
|
+
/* end_public_function */
|
|
41938
|
+
|
|
41651
41939
|
var index$8 = /*#__PURE__*/Object.freeze({
|
|
41652
41940
|
__proto__: null,
|
|
41653
41941
|
getPostByIds: getPostByIds,
|
|
@@ -41662,6 +41950,7 @@ var index$8 = /*#__PURE__*/Object.freeze({
|
|
|
41662
41950
|
unflagPost: unflagPost,
|
|
41663
41951
|
isPostFlaggedByMe: isPostFlaggedByMe,
|
|
41664
41952
|
createClipPost: createClipPost,
|
|
41953
|
+
getPostsByHashtag: getPostsByHashtag,
|
|
41665
41954
|
onPostCreated: onPostCreated,
|
|
41666
41955
|
onPostUpdated: onPostUpdated,
|
|
41667
41956
|
onPostDeleted: onPostDeleted,
|
|
@@ -41675,7 +41964,8 @@ var index$8 = /*#__PURE__*/Object.freeze({
|
|
|
41675
41964
|
getPosts: getPosts,
|
|
41676
41965
|
getPinnedPosts: getPinnedPosts,
|
|
41677
41966
|
getGlobalPinnedPosts: getGlobalPinnedPosts,
|
|
41678
|
-
semanticSearchPosts: semanticSearchPosts
|
|
41967
|
+
semanticSearchPosts: semanticSearchPosts,
|
|
41968
|
+
searchPostsByHashtag: searchPostsByHashtag
|
|
41679
41969
|
});
|
|
41680
41970
|
|
|
41681
41971
|
/* begin_public_function
|