@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.
Files changed (102) hide show
  1. package/dist/@types/core/payload.d.ts +1 -1
  2. package/dist/@types/core/payload.d.ts.map +1 -1
  3. package/dist/@types/domains/content.d.ts +8 -2
  4. package/dist/@types/domains/content.d.ts.map +1 -1
  5. package/dist/@types/domains/feed.d.ts +6 -1
  6. package/dist/@types/domains/feed.d.ts.map +1 -1
  7. package/dist/@types/domains/file.d.ts +3 -1
  8. package/dist/@types/domains/file.d.ts.map +1 -1
  9. package/dist/@types/domains/post.d.ts +3 -0
  10. package/dist/@types/domains/post.d.ts.map +1 -1
  11. package/dist/communityRepository/api/getCommunity.d.ts +1 -1
  12. package/dist/communityRepository/api/getCommunity.d.ts.map +1 -1
  13. package/dist/core/model/index.d.ts.map +1 -1
  14. package/dist/feedRepository/api/getCustomRankingGlobalFeed.d.ts +1 -1
  15. package/dist/feedRepository/api/getCustomRankingGlobalFeed.d.ts.map +1 -1
  16. package/dist/feedRepository/api/queryGlobalFeed.d.ts.map +1 -1
  17. package/dist/feedRepository/index.d.ts +1 -1
  18. package/dist/feedRepository/index.d.ts.map +1 -1
  19. package/dist/feedRepository/observers/getCustomRankingGlobalFeed/LiveCollectionController.d.ts +13 -0
  20. package/dist/feedRepository/observers/getCustomRankingGlobalFeed/LiveCollectionController.d.ts.map +1 -0
  21. package/dist/feedRepository/observers/getCustomRankingGlobalFeed/PaginationController.d.ts +5 -0
  22. package/dist/feedRepository/observers/getCustomRankingGlobalFeed/PaginationController.d.ts.map +1 -0
  23. package/dist/feedRepository/observers/getCustomRankingGlobalFeed/QueryStreamController.d.ts +15 -0
  24. package/dist/feedRepository/observers/getCustomRankingGlobalFeed/QueryStreamController.d.ts.map +1 -0
  25. package/dist/feedRepository/observers/getCustomRankingGlobalFeed.d.ts +23 -0
  26. package/dist/feedRepository/observers/getCustomRankingGlobalFeed.d.ts.map +1 -0
  27. package/dist/feedRepository/observers/getGlobalFeed/LiveCollectionController.d.ts +13 -0
  28. package/dist/feedRepository/observers/getGlobalFeed/LiveCollectionController.d.ts.map +1 -0
  29. package/dist/feedRepository/observers/getGlobalFeed/PaginationController.d.ts +5 -0
  30. package/dist/feedRepository/observers/getGlobalFeed/PaginationController.d.ts.map +1 -0
  31. package/dist/feedRepository/observers/getGlobalFeed/QueryStreamController.d.ts +15 -0
  32. package/dist/feedRepository/observers/getGlobalFeed/QueryStreamController.d.ts.map +1 -0
  33. package/dist/feedRepository/observers/getGlobalFeed.d.ts +22 -0
  34. package/dist/feedRepository/observers/getGlobalFeed.d.ts.map +1 -0
  35. package/dist/feedRepository/observers/index.d.ts +3 -0
  36. package/dist/feedRepository/observers/index.d.ts.map +1 -0
  37. package/dist/feedRepository/observers/utils.d.ts +6 -0
  38. package/dist/feedRepository/observers/utils.d.ts.map +1 -0
  39. package/dist/fileRepository/api/index.d.ts +1 -0
  40. package/dist/fileRepository/api/index.d.ts.map +1 -1
  41. package/dist/fileRepository/api/uploadClip.d.ts +17 -0
  42. package/dist/fileRepository/api/uploadClip.d.ts.map +1 -0
  43. package/dist/index.cjs.js +1565 -1195
  44. package/dist/index.esm.js +1657 -1287
  45. package/dist/index.umd.js +2 -2
  46. package/dist/messagePreview/utils/getSubChannelMessagePreviewWithUser.d.ts +1 -1
  47. package/dist/postRepository/api/createClipPost.d.ts +32 -0
  48. package/dist/postRepository/api/createClipPost.d.ts.map +1 -0
  49. package/dist/postRepository/api/index.d.ts +1 -0
  50. package/dist/postRepository/api/index.d.ts.map +1 -1
  51. package/dist/postRepository/events/utils.d.ts.map +1 -1
  52. package/dist/postRepository/observers/getGlobalPinnedPosts/GlobalPinnedPostLiveCollectionController.d.ts.map +1 -1
  53. package/dist/postRepository/observers/getPinnedPosts/PinnedPostLiveCollectionController.d.ts.map +1 -1
  54. package/dist/postRepository/observers/getPinnedPosts/PinnedPostQueryStreamController.d.ts +6 -0
  55. package/dist/postRepository/observers/getPinnedPosts/PinnedPostQueryStreamController.d.ts.map +1 -1
  56. package/dist/postRepository/observers/getPosts/PostLiveCollectionController.d.ts.map +1 -1
  57. package/dist/postRepository/observers/utils.d.ts +13 -0
  58. package/dist/postRepository/observers/utils.d.ts.map +1 -0
  59. package/dist/reactionRepository/api/addReaction.d.ts.map +1 -1
  60. package/dist/reactionRepository/api/removeReaction.d.ts.map +1 -1
  61. package/dist/utils/linkedObject/postLinkedObject.d.ts.map +1 -1
  62. package/dist/utils/postTypePredicate.d.ts +1 -0
  63. package/dist/utils/postTypePredicate.d.ts.map +1 -1
  64. package/dist/utils/tests/dummy/comment.d.ts +1 -1
  65. package/package.json +1 -1
  66. package/src/@types/core/payload.ts +1 -1
  67. package/src/@types/domains/content.ts +10 -0
  68. package/src/@types/domains/feed.ts +18 -1
  69. package/src/@types/domains/file.ts +5 -0
  70. package/src/@types/domains/post.ts +4 -0
  71. package/src/commentRepository/api/deleteComment.ts +6 -6
  72. package/src/communityRepository/api/getCommunity.ts +0 -9
  73. package/src/core/model/index.ts +2 -1
  74. package/src/feedRepository/api/getCustomRankingGlobalFeed.ts +1 -1
  75. package/src/feedRepository/api/queryGlobalFeed.ts +3 -1
  76. package/src/feedRepository/index.ts +1 -1
  77. package/src/feedRepository/observers/getCustomRankingGlobalFeed/LiveCollectionController.ts +95 -0
  78. package/src/feedRepository/observers/getCustomRankingGlobalFeed/PaginationController.ts +25 -0
  79. package/src/feedRepository/observers/getCustomRankingGlobalFeed/QueryStreamController.ts +101 -0
  80. package/src/feedRepository/observers/getCustomRankingGlobalFeed.ts +57 -0
  81. package/src/feedRepository/observers/getGlobalFeed/LiveCollectionController.ts +91 -0
  82. package/src/feedRepository/observers/getGlobalFeed/PaginationController.ts +23 -0
  83. package/src/feedRepository/observers/getGlobalFeed/QueryStreamController.ts +99 -0
  84. package/src/feedRepository/observers/getGlobalFeed.ts +56 -0
  85. package/src/feedRepository/observers/index.ts +2 -0
  86. package/src/feedRepository/observers/utils.ts +85 -0
  87. package/src/fileRepository/api/index.ts +1 -0
  88. package/src/fileRepository/api/uploadClip.ts +71 -0
  89. package/src/postRepository/api/createClipPost.ts +62 -0
  90. package/src/postRepository/api/index.ts +2 -0
  91. package/src/postRepository/api/queryPosts.ts +1 -1
  92. package/src/postRepository/events/utils.ts +35 -1
  93. package/src/postRepository/observers/getGlobalPinnedPosts/GlobalPinnedPostLiveCollectionController.ts +5 -0
  94. package/src/postRepository/observers/getPinnedPosts/PinnedPostLiveCollectionController.ts +7 -1
  95. package/src/postRepository/observers/getPinnedPosts/PinnedPostQueryStreamController.ts +27 -0
  96. package/src/postRepository/observers/getPosts/PostLiveCollectionController.ts +2 -74
  97. package/src/postRepository/observers/getPosts/PostPaginationController.ts +1 -1
  98. package/src/postRepository/observers/utils.ts +97 -0
  99. package/src/reactionRepository/api/addReaction.ts +1 -0
  100. package/src/reactionRepository/api/removeReaction.ts +1 -0
  101. package/src/utils/linkedObject/postLinkedObject.ts +15 -5
  102. 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"}
@@ -9,4 +9,5 @@ export * from './declinePost';
9
9
  export * from './flagPost';
10
10
  export * from './unflagPost';
11
11
  export * from './isPostFlaggedByMe';
12
+ export * from './createClipPost';
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -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":"AAOA,eAAO,MAAM,yBAAyB,UAC7B,MAAM,MAAM,cAAc,YACvB,MAAM,QAAQ,CAAC,MAAM,YAAY,CAAC,uBAoE7C,CAAC;AAEF,eAAO,MAAM,8BAA8B,UAClC,MAAM,KAAK,MAAM,eAAe,EAAE,wBAAwB,GAAG,2BAA2B,CAAC,YACtF,MAAM,QAAQ,CAAC,MAAM,YAAY,CAAC,uBAgC7C,CAAC"}
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;AAO1F,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;IAUjB,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,0BAA0B;CAmB1E"}
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"}
@@ -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;AAK1F,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;IAIjB,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,0BAA0B;IAsBzE,OAAO,CAAC,WAAW;CAapB"}
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
@@ -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;AAOpF,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;CAsBlB"}
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;AA+B1F,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;IA0DjB,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,0BAA0B;IAsBzE,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE;CA+BvC"}
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;IAmFnB;;;;;;;;;;;;;;SAcK;kCAEY,MAAM,aAAa,eACrB,MAAM,QAAQ,CAAC,aAAa,CAAC,gBAC5B,MAAM,eAAe,CAAC,cAAc,CAAC,GAClD,OAAO,GAAG,SAAS;CAtBrB,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;IAsFnB;;;;;;;;;;;;;;SAcK;kCAEY,MAAM,aAAa,eACrB,MAAM,QAAQ,CAAC,aAAa,CAAC,gBAC5B,MAAM,eAAe,CAAC,cAAc,CAAC,GAClD,OAAO,GAAG,SAAS;CAtBrB,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":"AAMA,eAAO,MAAM,gBAAgB,SAAU,MAAM,YAAY,KAAG,MAAM,IA6DjE,CAAC"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amityco/ts-sdk",
3
- "version": "7.6.1-bba8c29.0",
3
+ "version": "7.6.1-ce05a481.0",
4
4
  "license": "CC-BY-ND-4.0",
5
5
  "author": "amity.co <developers@amity.co> (https://amity.co)",
6
6
  "description": "Amity Social Cloud Typescript SDK",
@@ -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
- dataType?: 'video' | 'image' | 'file' | 'liveStream';
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);
@@ -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
- if ('updatedAt' in nextData && 'updatedAt' in nextData) {
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 * from './api';
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
+ }