@amityco/ts-sdk 7.6.1-bba8c29.0 → 7.6.1-ce05a481.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/payload.d.ts +1 -1
- package/dist/@types/core/payload.d.ts.map +1 -1
- package/dist/@types/domains/content.d.ts +8 -2
- package/dist/@types/domains/content.d.ts.map +1 -1
- package/dist/@types/domains/feed.d.ts +6 -1
- package/dist/@types/domains/feed.d.ts.map +1 -1
- package/dist/@types/domains/file.d.ts +3 -1
- package/dist/@types/domains/file.d.ts.map +1 -1
- package/dist/@types/domains/post.d.ts +3 -0
- package/dist/@types/domains/post.d.ts.map +1 -1
- package/dist/communityRepository/api/getCommunity.d.ts +1 -1
- package/dist/communityRepository/api/getCommunity.d.ts.map +1 -1
- package/dist/core/model/index.d.ts.map +1 -1
- package/dist/feedRepository/api/getCustomRankingGlobalFeed.d.ts +1 -1
- package/dist/feedRepository/api/getCustomRankingGlobalFeed.d.ts.map +1 -1
- package/dist/feedRepository/api/queryGlobalFeed.d.ts.map +1 -1
- package/dist/feedRepository/index.d.ts +1 -1
- package/dist/feedRepository/index.d.ts.map +1 -1
- package/dist/feedRepository/observers/getCustomRankingGlobalFeed/LiveCollectionController.d.ts +13 -0
- package/dist/feedRepository/observers/getCustomRankingGlobalFeed/LiveCollectionController.d.ts.map +1 -0
- package/dist/feedRepository/observers/getCustomRankingGlobalFeed/PaginationController.d.ts +5 -0
- package/dist/feedRepository/observers/getCustomRankingGlobalFeed/PaginationController.d.ts.map +1 -0
- package/dist/feedRepository/observers/getCustomRankingGlobalFeed/QueryStreamController.d.ts +15 -0
- package/dist/feedRepository/observers/getCustomRankingGlobalFeed/QueryStreamController.d.ts.map +1 -0
- package/dist/feedRepository/observers/getCustomRankingGlobalFeed.d.ts +23 -0
- package/dist/feedRepository/observers/getCustomRankingGlobalFeed.d.ts.map +1 -0
- package/dist/feedRepository/observers/getGlobalFeed/LiveCollectionController.d.ts +13 -0
- package/dist/feedRepository/observers/getGlobalFeed/LiveCollectionController.d.ts.map +1 -0
- package/dist/feedRepository/observers/getGlobalFeed/PaginationController.d.ts +5 -0
- package/dist/feedRepository/observers/getGlobalFeed/PaginationController.d.ts.map +1 -0
- package/dist/feedRepository/observers/getGlobalFeed/QueryStreamController.d.ts +15 -0
- package/dist/feedRepository/observers/getGlobalFeed/QueryStreamController.d.ts.map +1 -0
- package/dist/feedRepository/observers/getGlobalFeed.d.ts +22 -0
- package/dist/feedRepository/observers/getGlobalFeed.d.ts.map +1 -0
- package/dist/feedRepository/observers/index.d.ts +3 -0
- package/dist/feedRepository/observers/index.d.ts.map +1 -0
- package/dist/feedRepository/observers/utils.d.ts +6 -0
- package/dist/feedRepository/observers/utils.d.ts.map +1 -0
- package/dist/fileRepository/api/index.d.ts +1 -0
- package/dist/fileRepository/api/index.d.ts.map +1 -1
- package/dist/fileRepository/api/uploadClip.d.ts +17 -0
- package/dist/fileRepository/api/uploadClip.d.ts.map +1 -0
- package/dist/index.cjs.js +1565 -1195
- package/dist/index.esm.js +1657 -1287
- package/dist/index.umd.js +2 -2
- package/dist/messagePreview/utils/getSubChannelMessagePreviewWithUser.d.ts +1 -1
- package/dist/postRepository/api/createClipPost.d.ts +32 -0
- package/dist/postRepository/api/createClipPost.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/events/utils.d.ts.map +1 -1
- package/dist/postRepository/observers/getGlobalPinnedPosts/GlobalPinnedPostLiveCollectionController.d.ts.map +1 -1
- package/dist/postRepository/observers/getPinnedPosts/PinnedPostLiveCollectionController.d.ts.map +1 -1
- package/dist/postRepository/observers/getPinnedPosts/PinnedPostQueryStreamController.d.ts +6 -0
- package/dist/postRepository/observers/getPinnedPosts/PinnedPostQueryStreamController.d.ts.map +1 -1
- package/dist/postRepository/observers/getPosts/PostLiveCollectionController.d.ts.map +1 -1
- package/dist/postRepository/observers/utils.d.ts +13 -0
- package/dist/postRepository/observers/utils.d.ts.map +1 -0
- package/dist/reactionRepository/api/addReaction.d.ts.map +1 -1
- package/dist/reactionRepository/api/removeReaction.d.ts.map +1 -1
- package/dist/utils/linkedObject/postLinkedObject.d.ts.map +1 -1
- package/dist/utils/postTypePredicate.d.ts +1 -0
- package/dist/utils/postTypePredicate.d.ts.map +1 -1
- package/dist/utils/tests/dummy/comment.d.ts +1 -1
- package/package.json +1 -1
- package/src/@types/core/payload.ts +1 -1
- package/src/@types/domains/content.ts +10 -0
- package/src/@types/domains/feed.ts +18 -1
- package/src/@types/domains/file.ts +5 -0
- package/src/@types/domains/post.ts +4 -0
- package/src/commentRepository/api/deleteComment.ts +6 -6
- package/src/communityRepository/api/getCommunity.ts +0 -9
- package/src/core/model/index.ts +2 -1
- package/src/feedRepository/api/getCustomRankingGlobalFeed.ts +1 -1
- package/src/feedRepository/api/queryGlobalFeed.ts +3 -1
- package/src/feedRepository/index.ts +1 -1
- package/src/feedRepository/observers/getCustomRankingGlobalFeed/LiveCollectionController.ts +95 -0
- package/src/feedRepository/observers/getCustomRankingGlobalFeed/PaginationController.ts +25 -0
- package/src/feedRepository/observers/getCustomRankingGlobalFeed/QueryStreamController.ts +101 -0
- package/src/feedRepository/observers/getCustomRankingGlobalFeed.ts +57 -0
- package/src/feedRepository/observers/getGlobalFeed/LiveCollectionController.ts +91 -0
- package/src/feedRepository/observers/getGlobalFeed/PaginationController.ts +23 -0
- package/src/feedRepository/observers/getGlobalFeed/QueryStreamController.ts +99 -0
- package/src/feedRepository/observers/getGlobalFeed.ts +56 -0
- package/src/feedRepository/observers/index.ts +2 -0
- package/src/feedRepository/observers/utils.ts +85 -0
- package/src/fileRepository/api/index.ts +1 -0
- package/src/fileRepository/api/uploadClip.ts +71 -0
- package/src/postRepository/api/createClipPost.ts +62 -0
- package/src/postRepository/api/index.ts +2 -0
- package/src/postRepository/api/queryPosts.ts +1 -1
- package/src/postRepository/events/utils.ts +35 -1
- package/src/postRepository/observers/getGlobalPinnedPosts/GlobalPinnedPostLiveCollectionController.ts +5 -0
- package/src/postRepository/observers/getPinnedPosts/PinnedPostLiveCollectionController.ts +7 -1
- package/src/postRepository/observers/getPinnedPosts/PinnedPostQueryStreamController.ts +27 -0
- package/src/postRepository/observers/getPosts/PostLiveCollectionController.ts +2 -74
- package/src/postRepository/observers/getPosts/PostPaginationController.ts +1 -1
- package/src/postRepository/observers/utils.ts +97 -0
- package/src/reactionRepository/api/addReaction.ts +1 -0
- package/src/reactionRepository/api/removeReaction.ts +1 -0
- package/src/utils/linkedObject/postLinkedObject.ts +15 -5
- package/src/utils/postTypePredicate.ts +9 -0
|
@@ -3,7 +3,7 @@ export declare const getSubChannelMessagePreviewWithUser: (subChannel: Amity.Sub
|
|
|
3
3
|
user: Amity.InternalUser | undefined;
|
|
4
4
|
messagePreviewId: string;
|
|
5
5
|
subChannelName: string;
|
|
6
|
-
data?: string | Amity.ContentDataText | Amity.ContentDataFile | Amity.ContentDataImage | Amity.ContentDataVideo | Amity.ContentDataPoll | Amity.ContentDataStream | Record<string, unknown> | undefined;
|
|
6
|
+
data?: string | Amity.ContentDataText | Amity.ContentDataFile | Amity.ContentDataImage | Amity.ContentDataVideo | Amity.ContentDataPoll | Amity.ContentDataStream | Amity.ContentDataClip | Record<string, unknown> | undefined;
|
|
7
7
|
dataType?: any;
|
|
8
8
|
channelId: string;
|
|
9
9
|
subChannelId: string;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ```js
|
|
3
|
+
* import { PostRepository } from '@amityco/ts-sdk'
|
|
4
|
+
* const created = await PostRepository.createClipPost({
|
|
5
|
+
* targetType: 'user',
|
|
6
|
+
* targetId: 'foobar',
|
|
7
|
+
* dataType: 'clip',
|
|
8
|
+
* data: { text: 'hello world' },
|
|
9
|
+
* attachments: [{ type: 'clip', fileId: 'fileId123', displayMode: 'fill', isMuted: false }]
|
|
10
|
+
* }))
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* Creates an {@link Amity.Post}
|
|
14
|
+
*
|
|
15
|
+
* @param bundle The data necessary to create a new {@link Amity.Post}
|
|
16
|
+
* @returns The newly created {@link Amity.Post}
|
|
17
|
+
*
|
|
18
|
+
* @category Post API
|
|
19
|
+
* @async
|
|
20
|
+
*/
|
|
21
|
+
export declare const createClipPost: <T extends string>(bundle: Pick<Amity.Post<T>, "targetType" | "targetId"> & Partial<Pick<Amity.Post<T>, "metadata" | "tags" | "mentionees">> & {
|
|
22
|
+
data: {
|
|
23
|
+
[k: string]: any;
|
|
24
|
+
};
|
|
25
|
+
attachments: {
|
|
26
|
+
type: T;
|
|
27
|
+
fileId: Amity.File['fileId'];
|
|
28
|
+
displayMode?: Amity.ClipDisplayMode | undefined;
|
|
29
|
+
isMuted?: boolean | undefined;
|
|
30
|
+
}[];
|
|
31
|
+
}) => Promise<Amity.Cached<Amity.Post>>;
|
|
32
|
+
//# sourceMappingURL=createClipPost.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createClipPost.d.ts","sourceRoot":"","sources":["../../../src/postRepository/api/createClipPost.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,cAAc;;;;;;gBAMX,UAAU,CAAC,QAAQ,CAAC;;;;MAKjC,QAAQ,MAAM,MAAM,CAAC,MAAM,IAAI,CAAC,CAmBlC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/postRepository/api/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAE/B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAE3B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AAEjC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAE9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/postRepository/api/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAE/B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAE3B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AAEjC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAE9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AAEpC,cAAc,kBAAkB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/postRepository/events/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/postRepository/events/utils.ts"],"names":[],"mappings":"AAmCA,eAAO,MAAM,yBAAyB,UAC7B,MAAM,MAAM,cAAc,YACvB,MAAM,QAAQ,CAAC,MAAM,YAAY,CAAC,uBAwE7C,CAAC;AAEF,eAAO,MAAM,8BAA8B,UAClC,MAAM,KAAK,MAAM,eAAe,EAAE,wBAAwB,GAAG,2BAA2B,CAAC,YACtF,MAAM,QAAQ,CAAC,MAAM,YAAY,CAAC,uBAkC7C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GlobalPinnedPostLiveCollectionController.d.ts","sourceRoot":"","sources":["../../../../src/postRepository/observers/getGlobalPinnedPosts/GlobalPinnedPostLiveCollectionController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oCAAoC,EAAE,MAAM,wCAAwC,CAAC;AAE9F,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;
|
|
1
|
+
{"version":3,"file":"GlobalPinnedPostLiveCollectionController.d.ts","sourceRoot":"","sources":["../../../../src/postRepository/observers/getGlobalPinnedPosts/GlobalPinnedPostLiveCollectionController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oCAAoC,EAAE,MAAM,wCAAwC,CAAC;AAE9F,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAQ1F,qBAAa,wCAAyC,SAAQ,wBAAwB,CACpF,YAAY,EACZ,KAAK,CAAC,8BAA8B,EACpC,KAAK,CAAC,UAAU,EAChB,oCAAoC,CACrC;IACC,OAAO,CAAC,qBAAqB,CAAwC;IAErE,OAAO,CAAC,KAAK,CAAuC;gBAGlD,KAAK,EAAE,KAAK,CAAC,8BAA8B,EAC3C,QAAQ,EAAE,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC,UAAU,CAAC;IAoB1D,SAAS,CAAC,KAAK;cAUC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,UAAU;IAIrF,SAAS,CAAC,kBAAkB,CAAC,EAC3B,QAAQ,EACR,SAAS,EACT,OAAO,GACR,EAAE,KAAK,CAAC,sCAAsC,CAAC,YAAY,CAAC;IAK7D,iBAAiB;IAcjB,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,0BAA0B;CAmB1E"}
|
package/dist/postRepository/observers/getPinnedPosts/PinnedPostLiveCollectionController.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PinnedPostLiveCollectionController.d.ts","sourceRoot":"","sources":["../../../../src/postRepository/observers/getPinnedPosts/PinnedPostLiveCollectionController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAElF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;
|
|
1
|
+
{"version":3,"file":"PinnedPostLiveCollectionController.d.ts","sourceRoot":"","sources":["../../../../src/postRepository/observers/getPinnedPosts/PinnedPostLiveCollectionController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAElF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAM1F,qBAAa,kCAAmC,SAAQ,wBAAwB,CAC9E,YAAY,EACZ,KAAK,CAAC,wBAAwB,EAC9B,KAAK,CAAC,UAAU,EAChB,8BAA8B,CAC/B;IACC,OAAO,CAAC,qBAAqB,CAAkC;IAE/D,OAAO,CAAC,KAAK,CAAiC;gBAG5C,KAAK,EAAE,KAAK,CAAC,wBAAwB,EACrC,QAAQ,EAAE,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC,UAAU,CAAC;IAoB1D,SAAS,CAAC,KAAK;cAUC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,UAAU;IAIrF,SAAS,CAAC,kBAAkB,CAAC,EAC3B,QAAQ,EACR,SAAS,EACT,OAAO,GACR,EAAE,KAAK,CAAC,sCAAsC,CAAC,YAAY,CAAC;IAK7D,iBAAiB;IASjB,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,0BAA0B;IAsBzE,OAAO,CAAC,WAAW;CAapB"}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import { QueryStreamController } from '~/core/liveCollection/QueryStreamController';
|
|
2
|
+
import { EnumPostActions } from '../enums';
|
|
2
3
|
export declare class PinnedPostQueryStreamController extends QueryStreamController<Amity.PinnedPostPayload, Amity.PinnedPostLiveCollection> {
|
|
3
4
|
private notifyChange;
|
|
4
5
|
private preparePayload;
|
|
5
6
|
constructor(query: Amity.PinnedPostLiveCollection, cacheKey: string[], notifyChange: (params: Amity.LiveCollectionNotifyParams) => void, preparePayload: (response: Amity.PinnedPostPayload) => Amity.ProcessedPostPayload);
|
|
6
7
|
saveToMainDB(response: Amity.PinnedPostPayload): Promise<void>;
|
|
7
8
|
appendToQueryStream(response: Amity.PinnedPostPayload & Partial<Amity.Pagination>, direction: Amity.LiveCollectionPageDirection, refresh?: boolean): void;
|
|
9
|
+
reactor(action: EnumPostActions): (post: Amity.InternalPost) => void;
|
|
10
|
+
subscribeRTE(createSubscriber: {
|
|
11
|
+
fn: (reactor: (post: Amity.InternalPost) => void) => Amity.Unsubscriber;
|
|
12
|
+
action: EnumPostActions;
|
|
13
|
+
}[]): Amity.Unsubscriber[];
|
|
8
14
|
}
|
|
9
15
|
//# sourceMappingURL=PinnedPostQueryStreamController.d.ts.map
|
package/dist/postRepository/observers/getPinnedPosts/PinnedPostQueryStreamController.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PinnedPostQueryStreamController.d.ts","sourceRoot":"","sources":["../../../../src/postRepository/observers/getPinnedPosts/PinnedPostQueryStreamController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;
|
|
1
|
+
{"version":3,"file":"PinnedPostQueryStreamController.d.ts","sourceRoot":"","sources":["../../../../src/postRepository/observers/getPinnedPosts/PinnedPostQueryStreamController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AAMpF,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,qBAAa,+BAAgC,SAAQ,qBAAqB,CACxE,KAAK,CAAC,iBAAiB,EACvB,KAAK,CAAC,wBAAwB,CAC/B;IACC,OAAO,CAAC,YAAY,CAAqD;IAEzE,OAAO,CAAC,cAAc,CAAoE;gBAGxF,KAAK,EAAE,KAAK,CAAC,wBAAwB,EACrC,QAAQ,EAAE,MAAM,EAAE,EAClB,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,0BAA0B,KAAK,IAAI,EAChE,cAAc,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,iBAAiB,KAAK,KAAK,CAAC,oBAAoB;IAQ7E,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,iBAAiB;IAcpD,mBAAmB,CACjB,QAAQ,EAAE,KAAK,CAAC,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,EAC7D,SAAS,EAAE,KAAK,CAAC,2BAA2B,EAC5C,OAAO,UAAQ;IAuBjB,OAAO,CAAC,MAAM,EAAE,eAAe,UACf,MAAM,YAAY;IAgBlC,YAAY,CACV,gBAAgB,EAAE;QAChB,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,KAAK,IAAI,KAAK,KAAK,CAAC,YAAY,CAAC;QACxE,MAAM,EAAE,eAAe,CAAC;KACzB,EAAE;CAIN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostLiveCollectionController.d.ts","sourceRoot":"","sources":["../../../../src/postRepository/observers/getPosts/PostLiveCollectionController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;
|
|
1
|
+
{"version":3,"file":"PostLiveCollectionController.d.ts","sourceRoot":"","sources":["../../../../src/postRepository/observers/getPosts/PostLiveCollectionController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAa1F,qBAAa,4BAA6B,SAAQ,wBAAwB,CACxE,MAAM,EACN,KAAK,CAAC,kBAAkB,EACxB,KAAK,CAAC,IAAI,EACV,wBAAwB,CACzB;IACC,OAAO,CAAC,qBAAqB,CAA4B;IAEzD,OAAO,CAAC,KAAK,CAA2B;gBAE5B,KAAK,EAAE,KAAK,CAAC,kBAAkB,EAAE,QAAQ,EAAE,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC;IAmB/F,SAAS,CAAC,KAAK;cAUC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU;IAI/E,SAAS,CAAC,kBAAkB,CAAC,EAC3B,QAAQ,EACR,SAAS,EACT,OAAO,GACR,EAAE,KAAK,CAAC,sCAAsC,CAAC,MAAM,CAAC;IAIvD,iBAAiB;IAIjB,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,0BAA0B;IAsBzE,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE;CA+BvC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { EnumPostActions } from '~/postRepository/observers/enums';
|
|
2
|
+
export declare const generateCommentSubscriptions: ({ cacheKey, resolveId, }: {
|
|
3
|
+
cacheKey: Amity.CacheKey;
|
|
4
|
+
resolveId?: ((id: string) => string) | undefined;
|
|
5
|
+
}) => {
|
|
6
|
+
fn: (callback: Amity.Listener<Amity.InternalPost<any>>) => Amity.Unsubscriber;
|
|
7
|
+
action: EnumPostActions;
|
|
8
|
+
}[];
|
|
9
|
+
export declare const getPostSubscription: (cacheKey: Amity.CacheKey) => {
|
|
10
|
+
fn: (callback: Amity.Listener<Amity.InternalPost<any>>) => Amity.Unsubscriber;
|
|
11
|
+
action: EnumPostActions;
|
|
12
|
+
}[];
|
|
13
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/postRepository/observers/utils.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAgCnE,eAAO,MAAM,4BAA4B;;sBAKtB,MAAM,KAAK,MAAM;;;;GAsBnC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;GAiB/B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addReaction.d.ts","sourceRoot":"","sources":["../../../src/reactionRepository/api/addReaction.ts"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;;;KAeK;AACL,eAAO,MAAM,WAAW;oBACP,MAAM,QAAQ,CAAC,eAAe,CAAC,eACjC,MAAM,QAAQ,CAAC,aAAa,CAAC,gBAC5B,MAAM,eAAe,CAAC,cAAc,CAAC,GAClD,QAAQ,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"addReaction.d.ts","sourceRoot":"","sources":["../../../src/reactionRepository/api/addReaction.ts"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;;;KAeK;AACL,eAAO,MAAM,WAAW;oBACP,MAAM,QAAQ,CAAC,eAAe,CAAC,eACjC,MAAM,QAAQ,CAAC,aAAa,CAAC,gBAC5B,MAAM,eAAe,CAAC,cAAc,CAAC,GAClD,QAAQ,OAAO,CAAC;IAoFnB;;;;;;;;;;;;;;SAcK;kCAEY,MAAM,aAAa,eACrB,MAAM,QAAQ,CAAC,aAAa,CAAC,gBAC5B,MAAM,eAAe,CAAC,cAAc,CAAC,GAClD,OAAO,GAAG,SAAS;CAtBrB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"removeReaction.d.ts","sourceRoot":"","sources":["../../../src/reactionRepository/api/removeReaction.ts"],"names":[],"mappings":"AAaA;;;;;;;;;;;;;;;KAeK;AACL,eAAO,MAAM,cAAc;oBACV,MAAM,QAAQ,CAAC,eAAe,CAAC,eACjC,MAAM,QAAQ,CAAC,aAAa,CAAC,gBAC5B,MAAM,eAAe,CAAC,cAAc,CAAC,GAClD,QAAQ,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"removeReaction.d.ts","sourceRoot":"","sources":["../../../src/reactionRepository/api/removeReaction.ts"],"names":[],"mappings":"AAaA;;;;;;;;;;;;;;;KAeK;AACL,eAAO,MAAM,cAAc;oBACV,MAAM,QAAQ,CAAC,eAAe,CAAC,eACjC,MAAM,QAAQ,CAAC,aAAa,CAAC,gBAC5B,MAAM,eAAe,CAAC,cAAc,CAAC,GAClD,QAAQ,OAAO,CAAC;IAuFnB;;;;;;;;;;;;;;SAcK;kCAEY,MAAM,aAAa,eACrB,MAAM,QAAQ,CAAC,aAAa,CAAC,gBAC5B,MAAM,eAAe,CAAC,cAAc,CAAC,GAClD,OAAO,GAAG,SAAS;CAtBrB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postLinkedObject.d.ts","sourceRoot":"","sources":["../../../src/utils/linkedObject/postLinkedObject.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"postLinkedObject.d.ts","sourceRoot":"","sources":["../../../src/utils/linkedObject/postLinkedObject.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,gBAAgB,SAAU,MAAM,YAAY,KAAG,MAAM,IAiEjE,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export declare function isAmityImagePost(post: Amity.InternalPost): post is Amity.Post<'image'>;
|
|
2
2
|
export declare function isAmityFilePost(post: Amity.InternalPost): post is Amity.Post<'file'>;
|
|
3
3
|
export declare function isAmityVideoPost(post: Amity.InternalPost): post is Amity.Post<'video'>;
|
|
4
|
+
export declare function isAmityClipPost(post: Amity.InternalPost): post is Amity.Post<'clip'>;
|
|
4
5
|
//# sourceMappingURL=postTypePredicate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postTypePredicate.d.ts","sourceRoot":"","sources":["../../src/utils/postTypePredicate.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAOtF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAOpF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAQtF"}
|
|
1
|
+
{"version":3,"file":"postTypePredicate.d.ts","sourceRoot":"","sources":["../../src/utils/postTypePredicate.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAOtF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAOpF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAQtF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAOpF"}
|
|
@@ -23,7 +23,7 @@ export declare const generateComment: (params?: Partial<Amity.InternalComment>)
|
|
|
23
23
|
referenceType: Amity.CommentReferenceType;
|
|
24
24
|
dataType?: any;
|
|
25
25
|
dataTypes?: any[] | undefined;
|
|
26
|
-
data?: string | Record<string, unknown> | Amity.ContentDataText | Amity.ContentDataFile | Amity.ContentDataImage | Amity.ContentDataVideo | Amity.ContentDataPoll | Amity.ContentDataStream | undefined;
|
|
26
|
+
data?: string | Record<string, unknown> | Amity.ContentDataText | Amity.ContentDataFile | Amity.ContentDataImage | Amity.ContentDataVideo | Amity.ContentDataPoll | Amity.ContentDataStream | Amity.ContentDataClip | undefined;
|
|
27
27
|
metadata?: Record<string, any> | undefined;
|
|
28
28
|
flagCount: number;
|
|
29
29
|
hashFlag: {
|
package/package.json
CHANGED
|
@@ -78,7 +78,7 @@ declare global {
|
|
|
78
78
|
metadata: Amity.MetadataFor<T>;
|
|
79
79
|
};
|
|
80
80
|
accessType: Amity.FileAccessType;
|
|
81
|
-
} & (T extends 'video' ? Amity.VideoFileExtraPayload : unknown) &
|
|
81
|
+
} & (T extends 'video' | 'clip' ? Amity.VideoFileExtraPayload : unknown) &
|
|
82
82
|
Amity.Timestamps &
|
|
83
83
|
Amity.SoftDelete;
|
|
84
84
|
|
|
@@ -32,6 +32,7 @@ declare global {
|
|
|
32
32
|
| 'poll'
|
|
33
33
|
| 'json'
|
|
34
34
|
| 'liveStream'
|
|
35
|
+
| 'clip'
|
|
35
36
|
| string;
|
|
36
37
|
|
|
37
38
|
type ContentFeedType = ValueOf<typeof ContentFeedType>;
|
|
@@ -62,6 +63,13 @@ declare global {
|
|
|
62
63
|
};
|
|
63
64
|
};
|
|
64
65
|
|
|
66
|
+
type ContentDataClip = {
|
|
67
|
+
thumbnailFileId: Amity.File<'image'>['fileId'];
|
|
68
|
+
fileId: Amity.File<'clip'>['fileId'];
|
|
69
|
+
isMuted?: boolean;
|
|
70
|
+
displayMode?: Amity.ClipDisplayMode;
|
|
71
|
+
};
|
|
72
|
+
|
|
65
73
|
type ContentDataPoll = {
|
|
66
74
|
pollId: Amity.Poll['pollId'];
|
|
67
75
|
};
|
|
@@ -82,6 +90,8 @@ declare global {
|
|
|
82
90
|
? ContentDataPoll
|
|
83
91
|
: T extends 'liveStream'
|
|
84
92
|
? ContentDataStream
|
|
93
|
+
: T extends 'clip'
|
|
94
|
+
? ContentDataClip
|
|
85
95
|
: T extends 'json'
|
|
86
96
|
? Record<string, unknown>
|
|
87
97
|
: T extends string
|
|
@@ -11,8 +11,25 @@ declare global {
|
|
|
11
11
|
} & Amity.Timestamps;
|
|
12
12
|
|
|
13
13
|
type QueryGlobalFeed = {
|
|
14
|
-
|
|
14
|
+
dataTypes?: ('video' | 'image' | 'file' | 'liveStream' | 'clip')[];
|
|
15
15
|
queryToken?: string;
|
|
16
|
+
resolveParent?: boolean;
|
|
16
17
|
};
|
|
18
|
+
|
|
19
|
+
type CustomRankingGlobalFeedLiveCollection = Amity.LiveCollectionParams<
|
|
20
|
+
Omit<QueryGlobalFeed, 'resolveParent' | 'queryToken'>
|
|
21
|
+
>;
|
|
22
|
+
|
|
23
|
+
type CustomRankingGlobalFeedLiveCollectionCache = Amity.LiveCollectionCache<
|
|
24
|
+
Amity.InternalPost['postId'],
|
|
25
|
+
QueryGlobalFeed
|
|
26
|
+
>;
|
|
27
|
+
|
|
28
|
+
type GlobalFeedLiveCollection = Amity.LiveCollectionParams<Omit<QueryGlobalFeed, 'queryToken'>>;
|
|
29
|
+
|
|
30
|
+
type GlobalFeedLiveCollectionCache = Amity.LiveCollectionCache<
|
|
31
|
+
Amity.InternalPost['postId'],
|
|
32
|
+
QueryGlobalFeed
|
|
33
|
+
>;
|
|
17
34
|
}
|
|
18
35
|
}
|
|
@@ -2,6 +2,7 @@ export const FileType = Object.freeze({
|
|
|
2
2
|
FILE: 'file',
|
|
3
3
|
IMAGE: 'image',
|
|
4
4
|
VIDEO: 'video',
|
|
5
|
+
CLIP: 'clip',
|
|
5
6
|
});
|
|
6
7
|
|
|
7
8
|
export const VideoResolution = Object.freeze({
|
|
@@ -55,12 +56,16 @@ declare global {
|
|
|
55
56
|
|
|
56
57
|
type VideoMetadata = Record<string, never>;
|
|
57
58
|
|
|
59
|
+
type ClipMetadata = Record<string, never>;
|
|
60
|
+
|
|
58
61
|
type MetadataFor<T extends FileType> = T extends 'file'
|
|
59
62
|
? FileMetadata
|
|
60
63
|
: T extends 'image'
|
|
61
64
|
? ImageMetadata
|
|
62
65
|
: T extends 'video'
|
|
63
66
|
? VideoMetadata
|
|
67
|
+
: T extends 'clip'
|
|
68
|
+
? ClipMetadata
|
|
64
69
|
: never;
|
|
65
70
|
|
|
66
71
|
type File<T extends FileType = any> = Amity.FilePayload<T>;
|
|
@@ -5,6 +5,7 @@ export const PostContentType = Object.freeze({
|
|
|
5
5
|
VIDEO: 'video',
|
|
6
6
|
LIVESTREAM: 'liveStream',
|
|
7
7
|
POLL: 'poll',
|
|
8
|
+
CLIP: 'clip',
|
|
8
9
|
});
|
|
9
10
|
|
|
10
11
|
declare global {
|
|
@@ -82,10 +83,13 @@ declare global {
|
|
|
82
83
|
getVideoInfo: () => Amity.File<'video'> | undefined;
|
|
83
84
|
getVideoThumbnailInfo: () => Amity.File<'image'> | undefined;
|
|
84
85
|
getFileInfo: () => Amity.File<'file'> | undefined;
|
|
86
|
+
getClipInfo: () => Amity.File<'clip'> | undefined;
|
|
85
87
|
};
|
|
86
88
|
|
|
87
89
|
type Post<T extends PostContentType = any> = Amity.InternalPost<T> & Amity.PostLinkObject;
|
|
88
90
|
|
|
91
|
+
type ClipDisplayMode = 'fill' | 'fit';
|
|
92
|
+
|
|
89
93
|
type QueryPosts = {
|
|
90
94
|
targetId: string;
|
|
91
95
|
targetType: Amity.InternalPost['targetType'];
|
|
@@ -49,6 +49,12 @@ export const deleteComment = async (
|
|
|
49
49
|
// to support hard deletion
|
|
50
50
|
const deleted = { ...comment.data, isDeleted: true };
|
|
51
51
|
|
|
52
|
+
if (permanent) {
|
|
53
|
+
scheduleTask(() => pushToTombstone('comment', commentId));
|
|
54
|
+
} else {
|
|
55
|
+
upsertInCache(['comment', 'get', commentId], { isDeleted: true });
|
|
56
|
+
}
|
|
57
|
+
|
|
52
58
|
if (comment.data.referenceType === 'story') {
|
|
53
59
|
const story = await getStoryByStoryId(comment.data.referenceId);
|
|
54
60
|
|
|
@@ -96,12 +102,6 @@ export const deleteComment = async (
|
|
|
96
102
|
communityUsers: [],
|
|
97
103
|
});
|
|
98
104
|
|
|
99
|
-
if (permanent) {
|
|
100
|
-
scheduleTask(() => pushToTombstone('comment', commentId));
|
|
101
|
-
} else {
|
|
102
|
-
upsertInCache(['comment', 'get', commentId], { isDeleted: true });
|
|
103
|
-
}
|
|
104
|
-
|
|
105
105
|
return deleted;
|
|
106
106
|
};
|
|
107
107
|
/* end_public_function */
|
|
@@ -5,7 +5,6 @@ import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
|
5
5
|
|
|
6
6
|
import { saveCommunityUsers } from '~/communityRepository/utils/saveCommunityUsers';
|
|
7
7
|
import { prepareCommunityPayload } from '../utils';
|
|
8
|
-
import { LinkedObject } from '~/utils/linkedObject';
|
|
9
8
|
|
|
10
9
|
/**
|
|
11
10
|
* ```js
|
|
@@ -23,8 +22,6 @@ import { LinkedObject } from '~/utils/linkedObject';
|
|
|
23
22
|
*/
|
|
24
23
|
export const getCommunity = async (
|
|
25
24
|
communityId: Amity.Community['communityId'],
|
|
26
|
-
type?: Amity.JoinRequestType,
|
|
27
|
-
includeDiscoverablePrivateCommunity?: boolean,
|
|
28
25
|
): Promise<Amity.Cached<Amity.InternalCommunity>> => {
|
|
29
26
|
const client = getActiveClient();
|
|
30
27
|
client.log('community/getCommunity', communityId);
|
|
@@ -32,12 +29,6 @@ export const getCommunity = async (
|
|
|
32
29
|
// API-FIX: endpoint should not be /list, parameters should be querystring.
|
|
33
30
|
const { data: payload } = await client.http.get<Amity.CommunityPayload>(
|
|
34
31
|
`/api/v3/communities/${communityId}`,
|
|
35
|
-
{
|
|
36
|
-
params: {
|
|
37
|
-
type: 'communityJoinRequest',
|
|
38
|
-
includeDiscoverablePrivateCommunity: includeDiscoverablePrivateCommunity ?? true,
|
|
39
|
-
},
|
|
40
|
-
},
|
|
41
32
|
);
|
|
42
33
|
|
|
43
34
|
const data = prepareCommunityPayload(payload);
|
package/src/core/model/index.ts
CHANGED
|
@@ -61,7 +61,8 @@ export const PAYLOAD2MODEL: Record<string, Amity.Domain> = {
|
|
|
61
61
|
|
|
62
62
|
/** hidden */
|
|
63
63
|
export const isOutdated = <T extends Amity.UpdatedAt>(prevData: T, nextData: T): boolean => {
|
|
64
|
-
|
|
64
|
+
// Check if the new value is outdated.
|
|
65
|
+
if ('updatedAt' in nextData && 'updatedAt' in prevData) {
|
|
65
66
|
return new Date(nextData.updatedAt!) < new Date(prevData.updatedAt!);
|
|
66
67
|
}
|
|
67
68
|
|
|
@@ -23,7 +23,7 @@ import { LinkedObject } from '~/utils/linkedObject';
|
|
|
23
23
|
* @async
|
|
24
24
|
* */
|
|
25
25
|
export const getCustomRankingGlobalFeed = async (query?: {
|
|
26
|
-
dataTypes?: ('video' | 'image' | 'file' | 'liveStream')[];
|
|
26
|
+
dataTypes?: ('video' | 'image' | 'file' | 'liveStream' | 'clip')[];
|
|
27
27
|
limit?: number;
|
|
28
28
|
queryToken?: string;
|
|
29
29
|
}): Promise<
|
|
@@ -32,7 +32,7 @@ export const queryGlobalFeed = async (
|
|
|
32
32
|
const client = getActiveClient();
|
|
33
33
|
client.log('feed/queryGlobalFeed', query);
|
|
34
34
|
|
|
35
|
-
const { queryToken, ...params } = query ?? {};
|
|
35
|
+
const { queryToken, dataTypes, resolveParent, ...params } = query ?? {};
|
|
36
36
|
|
|
37
37
|
const options = (() => {
|
|
38
38
|
if (queryToken) return { token: queryToken };
|
|
@@ -44,6 +44,8 @@ export const queryGlobalFeed = async (
|
|
|
44
44
|
{
|
|
45
45
|
params: {
|
|
46
46
|
...params,
|
|
47
|
+
dataTypes,
|
|
48
|
+
resolveParent: resolveParent ?? true,
|
|
47
49
|
options,
|
|
48
50
|
},
|
|
49
51
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export { getCustomRankingGlobalFeed, getGlobalFeed } from './observers';
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import hash from 'object-hash';
|
|
2
|
+
import { pullFromCache, pushToCache } from '~/cache/api';
|
|
3
|
+
import { CustomRankingGlobalFeedPaginationController } from './PaginationController';
|
|
4
|
+
import { CustomRankingGlobalFeedQueryStreamController } from './QueryStreamController';
|
|
5
|
+
import { LiveCollectionController } from '~/core/liveCollection/LiveCollectionController';
|
|
6
|
+
import { isNonNullable } from '~/utils';
|
|
7
|
+
import { LinkedObject } from '~/utils/linkedObject';
|
|
8
|
+
import { preparePostPayload } from '~/postRepository/utils/payload';
|
|
9
|
+
import { getGlobalFeedSubscriptions } from '../utils';
|
|
10
|
+
|
|
11
|
+
export class CustomRankingGlobalFeedLiveCollectionController extends LiveCollectionController<
|
|
12
|
+
'post',
|
|
13
|
+
Amity.CustomRankingGlobalFeedLiveCollection,
|
|
14
|
+
Amity.Post,
|
|
15
|
+
CustomRankingGlobalFeedPaginationController
|
|
16
|
+
> {
|
|
17
|
+
private queryStreamController: CustomRankingGlobalFeedQueryStreamController;
|
|
18
|
+
|
|
19
|
+
private query: Amity.CustomRankingGlobalFeedLiveCollection;
|
|
20
|
+
|
|
21
|
+
constructor(
|
|
22
|
+
query: Amity.CustomRankingGlobalFeedLiveCollection,
|
|
23
|
+
callback: Amity.LiveCollectionCallback<Amity.Post>,
|
|
24
|
+
) {
|
|
25
|
+
const queryStreamId = hash(query);
|
|
26
|
+
const cacheKey = ['customRankingGlobalFeed', 'collection', queryStreamId];
|
|
27
|
+
const paginationController = new CustomRankingGlobalFeedPaginationController(query);
|
|
28
|
+
|
|
29
|
+
super(paginationController, queryStreamId, cacheKey, callback);
|
|
30
|
+
|
|
31
|
+
this.query = query;
|
|
32
|
+
this.queryStreamController = new CustomRankingGlobalFeedQueryStreamController(
|
|
33
|
+
this.query,
|
|
34
|
+
this.cacheKey,
|
|
35
|
+
this.notifyChange.bind(this),
|
|
36
|
+
preparePostPayload,
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
this.callback = callback.bind(this);
|
|
40
|
+
this.loadPage({ initial: true });
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
protected setup() {
|
|
44
|
+
const collection = pullFromCache<Amity.CustomRankingGlobalFeedLiveCollectionCache>(
|
|
45
|
+
this.cacheKey,
|
|
46
|
+
)?.data;
|
|
47
|
+
|
|
48
|
+
if (!collection) {
|
|
49
|
+
pushToCache(this.cacheKey, {
|
|
50
|
+
data: [],
|
|
51
|
+
params: {},
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
protected async persistModel(queryPayload: Amity.PostPayload & Amity.Pagination) {
|
|
57
|
+
await this.queryStreamController.saveToMainDB(queryPayload);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
protected persistQueryStream({
|
|
61
|
+
response,
|
|
62
|
+
direction,
|
|
63
|
+
refresh,
|
|
64
|
+
}: Amity.LiveCollectionPersistQueryStreamParams<'post'>) {
|
|
65
|
+
this.queryStreamController.appendToQueryStream(response, direction, refresh);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
startSubscription() {
|
|
69
|
+
return this.queryStreamController.subscribeRTE(getGlobalFeedSubscriptions(this.cacheKey));
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
notifyChange({ origin, loading, error }: Amity.LiveCollectionNotifyParams) {
|
|
73
|
+
const collection = pullFromCache<Amity.CustomRankingGlobalFeedLiveCollectionCache>(
|
|
74
|
+
this.cacheKey,
|
|
75
|
+
)?.data;
|
|
76
|
+
if (!collection) return;
|
|
77
|
+
|
|
78
|
+
const data = (
|
|
79
|
+
collection.data
|
|
80
|
+
.map(id => pullFromCache<Amity.InternalPost>(['post', 'get', id])!)
|
|
81
|
+
.filter(isNonNullable)
|
|
82
|
+
.map(({ data }) => data) ?? []
|
|
83
|
+
).map(LinkedObject.post);
|
|
84
|
+
|
|
85
|
+
if (!this.shouldNotify(data) && origin === 'event') return;
|
|
86
|
+
|
|
87
|
+
this.callback({
|
|
88
|
+
onNextPage: () => this.loadPage({ direction: Amity.LiveCollectionPageDirection.NEXT }),
|
|
89
|
+
data,
|
|
90
|
+
hasNextPage: !!this.paginationController.getNextToken(),
|
|
91
|
+
loading,
|
|
92
|
+
error,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { PaginationController } from '~/core/liveCollection/PaginationController';
|
|
2
|
+
|
|
3
|
+
export class CustomRankingGlobalFeedPaginationController extends PaginationController<
|
|
4
|
+
'post',
|
|
5
|
+
Amity.CustomRankingGlobalFeedLiveCollection
|
|
6
|
+
> {
|
|
7
|
+
async getRequest(
|
|
8
|
+
queryParams: Amity.CustomRankingGlobalFeedLiveCollection,
|
|
9
|
+
token: string | undefined,
|
|
10
|
+
) {
|
|
11
|
+
const { limit, ...params } = queryParams;
|
|
12
|
+
const options = token ? { token } : { limit };
|
|
13
|
+
|
|
14
|
+
const { data: queryResponse } = await this.http.get<Amity.PostPayload & Amity.Pagination>(
|
|
15
|
+
`/api/v5/me/global-feeds`,
|
|
16
|
+
{
|
|
17
|
+
params: {
|
|
18
|
+
...params,
|
|
19
|
+
options,
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
);
|
|
23
|
+
return queryResponse;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { QueryStreamController } from '~/core/liveCollection/QueryStreamController';
|
|
2
|
+
import { pullFromCache, pushToCache } from '~/cache/api';
|
|
3
|
+
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
4
|
+
import { getResolver } from '~/core/model';
|
|
5
|
+
import { getActiveClient } from '~/client';
|
|
6
|
+
import { EnumPostActions } from '~/postRepository/observers/enums';
|
|
7
|
+
|
|
8
|
+
export class CustomRankingGlobalFeedQueryStreamController extends QueryStreamController<
|
|
9
|
+
Amity.PostPayload,
|
|
10
|
+
Amity.CustomRankingGlobalFeedLiveCollection
|
|
11
|
+
> {
|
|
12
|
+
private notifyChange: (params: Amity.LiveCollectionNotifyParams) => void;
|
|
13
|
+
|
|
14
|
+
private preparePayload: (response: Amity.PostPayload) => Amity.ProcessedPostPayload;
|
|
15
|
+
|
|
16
|
+
constructor(
|
|
17
|
+
query: Amity.CustomRankingGlobalFeedLiveCollection,
|
|
18
|
+
cacheKey: string[],
|
|
19
|
+
notifyChange: (params: Amity.LiveCollectionNotifyParams) => void,
|
|
20
|
+
preparePayload: (response: Amity.PostPayload) => Amity.ProcessedPostPayload,
|
|
21
|
+
) {
|
|
22
|
+
super(query, cacheKey);
|
|
23
|
+
this.notifyChange = notifyChange;
|
|
24
|
+
this.preparePayload = preparePayload;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
async saveToMainDB(response: Amity.PostPayload) {
|
|
28
|
+
const processedPayload = await this.preparePayload(response);
|
|
29
|
+
|
|
30
|
+
const client = getActiveClient();
|
|
31
|
+
const cachedAt = client.cache && Date.now();
|
|
32
|
+
|
|
33
|
+
if (client.cache) {
|
|
34
|
+
ingestInCache(processedPayload, { cachedAt });
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
appendToQueryStream(
|
|
39
|
+
response: Amity.PostPayload & Partial<Amity.Pagination>,
|
|
40
|
+
direction: Amity.LiveCollectionPageDirection,
|
|
41
|
+
refresh = false,
|
|
42
|
+
) {
|
|
43
|
+
if (refresh) {
|
|
44
|
+
pushToCache(this.cacheKey, {
|
|
45
|
+
data: response.posts.map(getResolver('post')),
|
|
46
|
+
});
|
|
47
|
+
} else {
|
|
48
|
+
const collection = pullFromCache<Amity.CommunityLiveCollectionCache>(this.cacheKey)?.data;
|
|
49
|
+
|
|
50
|
+
const posts = collection?.data ?? [];
|
|
51
|
+
|
|
52
|
+
pushToCache(this.cacheKey, {
|
|
53
|
+
...collection,
|
|
54
|
+
data: [...new Set([...posts, ...response.posts.map(getResolver('post'))])],
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
reactor(action: EnumPostActions) {
|
|
60
|
+
return (post: Amity.InternalPost) => {
|
|
61
|
+
const collection = pullFromCache<Amity.CustomRankingGlobalFeedLiveCollectionCache>(
|
|
62
|
+
this.cacheKey,
|
|
63
|
+
)?.data;
|
|
64
|
+
|
|
65
|
+
if (!collection) return;
|
|
66
|
+
|
|
67
|
+
if (post.parentPostId && !collection.data.includes(post.parentPostId)) return;
|
|
68
|
+
|
|
69
|
+
// Delete Action
|
|
70
|
+
if (action === EnumPostActions.OnPostDeleted) {
|
|
71
|
+
// Parent Post - Remove from collection
|
|
72
|
+
collection.data = collection.data.filter(postId => postId !== post.postId);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (action === EnumPostActions.OnPostCreated || action === EnumPostActions.OnPostApproved) {
|
|
76
|
+
// If the query has dataTypes array with value, check if post.dataType is include in the array
|
|
77
|
+
if (this.query.dataTypes && this.query.dataTypes.length > 0) {
|
|
78
|
+
if (!this.query.dataTypes.includes(post.dataType)) return;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
collection.data = [...new Set([post.postId, ...collection.data])];
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (action === EnumPostActions.OnPostDeclined) {
|
|
85
|
+
collection.data = collection.data.filter(postId => postId !== post.postId);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
pushToCache(this.cacheKey, collection);
|
|
89
|
+
this.notifyChange({ origin: Amity.LiveDataOrigin.EVENT, loading: false });
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
subscribeRTE(
|
|
94
|
+
createSubscriber: {
|
|
95
|
+
fn: (reactor: (post: Amity.InternalPost) => void) => Amity.Unsubscriber;
|
|
96
|
+
action: EnumPostActions;
|
|
97
|
+
}[],
|
|
98
|
+
) {
|
|
99
|
+
return createSubscriber.map(subscriber => subscriber.fn(this.reactor(subscriber.action)));
|
|
100
|
+
}
|
|
101
|
+
}
|