@amityco/ts-sdk 0.0.1-beta.38 → 0.0.1-beta.39

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 (89) hide show
  1. package/dist/@types/core/model.d.ts +2 -0
  2. package/dist/@types/core/model.d.ts.map +1 -1
  3. package/dist/@types/domains/channel.d.ts +2 -2
  4. package/dist/@types/domains/channel.d.ts.map +1 -1
  5. package/dist/@types/domains/feed.d.ts +1 -2
  6. package/dist/@types/domains/feed.d.ts.map +1 -1
  7. package/dist/@types/domains/message.d.ts +1 -1
  8. package/dist/@types/domains/message.d.ts.map +1 -1
  9. package/dist/@types/domains/post.d.ts +1 -1
  10. package/dist/@types/domains/post.d.ts.map +1 -1
  11. package/dist/@types/domains/user.d.ts +8 -0
  12. package/dist/@types/domains/user.d.ts.map +1 -1
  13. package/dist/channel/observers/liveChannels.d.ts.map +1 -1
  14. package/dist/client/api/connectClient.d.ts.map +1 -1
  15. package/dist/core/model/idResolvers.d.ts.map +1 -1
  16. package/dist/core/model/identifyModel.d.ts.map +1 -1
  17. package/dist/core/model/index.d.ts.map +1 -1
  18. package/dist/core/query/filtering.d.ts +10 -0
  19. package/dist/core/query/filtering.d.ts.map +1 -1
  20. package/dist/core/query/paging.d.ts +2 -2
  21. package/dist/core/query/paging.d.ts.map +1 -1
  22. package/dist/core/query/tests/paging.test.d.ts +2 -0
  23. package/dist/core/query/tests/paging.test.d.ts.map +1 -0
  24. package/dist/index.cjs.js +180 -71
  25. package/dist/index.esm.js +178 -71
  26. package/dist/index.umd.js +4 -4
  27. package/dist/message/api/queryMessages.d.ts +2 -2
  28. package/dist/message/api/queryMessages.d.ts.map +1 -1
  29. package/dist/post/observers/livePosts.d.ts +2 -2
  30. package/dist/post/observers/livePosts.d.ts.map +1 -1
  31. package/dist/report/api/createReport.d.ts.map +1 -1
  32. package/dist/report/api/deleteReport.d.ts.map +1 -1
  33. package/dist/report/api/tests/createReport.test.d.ts +2 -0
  34. package/dist/report/api/tests/createReport.test.d.ts.map +1 -0
  35. package/dist/report/api/tests/deleteReport.test.d.ts +2 -0
  36. package/dist/report/api/tests/deleteReport.test.d.ts.map +1 -0
  37. package/dist/user/api/queryUsers.d.ts +1 -6
  38. package/dist/user/api/queryUsers.d.ts.map +1 -1
  39. package/dist/user/observers/index.d.ts +1 -0
  40. package/dist/user/observers/index.d.ts.map +1 -1
  41. package/dist/user/observers/liveUsers.d.ts +18 -0
  42. package/dist/user/observers/liveUsers.d.ts.map +1 -0
  43. package/dist/user/observers/tests/liveUsers.test.d.ts +2 -0
  44. package/dist/user/observers/tests/liveUsers.test.d.ts.map +1 -0
  45. package/dist/utils/liveObject.d.ts +1 -1
  46. package/dist/utils/liveObject.d.ts.map +1 -1
  47. package/dist/utils/tests/dummy/channel.d.ts.map +1 -1
  48. package/dist/utils/tests/dummy/feed.d.ts +21 -0
  49. package/dist/utils/tests/dummy/feed.d.ts.map +1 -0
  50. package/dist/utils/tests/dummy/index.d.ts +1 -0
  51. package/dist/utils/tests/dummy/index.d.ts.map +1 -1
  52. package/dist/utils/tests/dummy/post.d.ts +9 -0
  53. package/dist/utils/tests/dummy/post.d.ts.map +1 -1
  54. package/dist/utils/tests/dummy/user.d.ts +63 -0
  55. package/dist/utils/tests/dummy/user.d.ts.map +1 -1
  56. package/package.json +1 -1
  57. package/src/@types/core/model.ts +4 -0
  58. package/src/@types/domains/channel.ts +2 -2
  59. package/src/@types/domains/feed.ts +1 -3
  60. package/src/@types/domains/message.ts +4 -1
  61. package/src/@types/domains/post.ts +1 -1
  62. package/src/@types/domains/user.ts +14 -0
  63. package/src/cache/api/tests/ingestInCache.test.ts +2 -0
  64. package/src/channel/observers/liveChannels.ts +29 -24
  65. package/src/client/api/connectClient.ts +0 -2
  66. package/src/core/model/idResolvers.ts +2 -0
  67. package/src/core/model/identifyModel.ts +1 -0
  68. package/src/core/model/index.ts +2 -0
  69. package/src/core/query/filtering.ts +33 -3
  70. package/src/core/query/paging.ts +5 -4
  71. package/src/core/query/tests/paging.test.ts +66 -0
  72. package/src/message/api/queryMessages.ts +7 -7
  73. package/src/message/api/tests/queryMessages.test.ts +6 -6
  74. package/src/message/tests/observers/liveMessages.test.ts +4 -4
  75. package/src/post/observers/livePosts.ts +14 -22
  76. package/src/post/observers/tests/livePosts.test.ts +65 -8
  77. package/src/report/api/createReport.ts +1 -6
  78. package/src/report/api/deleteReport.ts +2 -6
  79. package/src/report/api/tests/createReport.test.ts +93 -0
  80. package/src/report/api/tests/deleteReport.test.ts +93 -0
  81. package/src/user/api/queryUsers.ts +1 -6
  82. package/src/user/observers/index.ts +1 -0
  83. package/src/user/observers/liveUsers.ts +162 -0
  84. package/src/user/observers/tests/liveUsers.test.ts +202 -0
  85. package/src/utils/tests/dummy/channel.ts +1 -0
  86. package/src/utils/tests/dummy/feed.ts +13 -0
  87. package/src/utils/tests/dummy/index.ts +2 -0
  88. package/src/utils/tests/dummy/post.ts +6 -2
  89. package/src/utils/tests/dummy/user.ts +36 -0
@@ -13,7 +13,7 @@
13
13
  * @async
14
14
  */
15
15
  export declare const queryMessages: {
16
- (query: Amity.QueryMessages): Promise<Amity.Cached<Amity.Paged<Amity.Message>>>;
16
+ (query: Amity.QueryMessages): Promise<Amity.Cached<Amity.Paged<Amity.Message, Amity.Page<string>>>>;
17
17
  /**
18
18
  * ```js
19
19
  * import { queryMessages } from '@amityco/ts-sdk'
@@ -27,6 +27,6 @@ export declare const queryMessages: {
27
27
  *
28
28
  * @category Message API
29
29
  */
30
- locally(query: Parameters<typeof queryMessages>[0]): Amity.Cached<Amity.Paged<Amity.Message>> | undefined;
30
+ locally(query: Parameters<typeof queryMessages>[0]): Amity.Cached<Amity.Paged<Amity.Message, Amity.Page<string>>> | undefined;
31
31
  };
32
32
  //# sourceMappingURL=queryMessages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"queryMessages.d.ts","sourceRoot":"","sources":["../../../src/message/api/queryMessages.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,aAAa;YACjB,MAAM,aAAa,GACzB,QAAQ,MAAM,MAAM,CAAC,MAAM,KAAK,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC;IAoCpD;;;;;;;;;;;;OAYG;mBAEM,WAAW,oBAAoB,CAAC,CAAC,CAAC,CAAC,GACzC,MAAM,MAAM,CAAC,MAAM,KAAK,CAAC,MAAM,OAAO,CAAC,CAAC,GAAG,SAAS;CAjBtD,CAAC"}
1
+ {"version":3,"file":"queryMessages.d.ts","sourceRoot":"","sources":["../../../src/message/api/queryMessages.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,aAAa;YACjB,MAAM,aAAa,GACzB,QAAQ,MAAM,MAAM,CAAC,MAAM,KAAK,CAAC,MAAM,OAAO,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAoCxE;;;;;;;;;;;;OAYG;mBAEM,WAAW,oBAAoB,CAAC,CAAC,CAAC,CAAC,GACzC,MAAM,MAAM,CAAC,MAAM,KAAK,CAAC,MAAM,OAAO,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS;CAjB1E,CAAC"}
@@ -11,8 +11,8 @@
11
11
  *
12
12
  * Observe all mutations on a list of {@link Amity.Post} for a given target object
13
13
  *
14
- * @param targetType the type of the target
15
- * @param targetId the ID of the target
14
+ * @param param.targetType the type of the target
15
+ * @param param.targetId the ID of the target
16
16
  * @param callback the function to call when new data are available
17
17
  * @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the messages
18
18
  *
@@ -1 +1 @@
1
- {"version":3,"file":"livePosts.d.ts","sourceRoot":"","sources":["../../../src/post/observers/livePosts.ts"],"names":[],"mappings":"AAgCA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,SAAS,WACZ,MAAM,kBAAkB,YACtB,MAAM,sBAAsB,CAAC,MAAM,IAAI,CAAC,WACzC,MAAM,oBAAoB,KAClC,MAAM,YAsIR,CAAC"}
1
+ {"version":3,"file":"livePosts.d.ts","sourceRoot":"","sources":["../../../src/post/observers/livePosts.ts"],"names":[],"mappings":"AAiCA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,SAAS,WACZ,MAAM,kBAAkB,YACtB,MAAM,sBAAsB,CAAC,MAAM,IAAI,CAAC,WACzC,MAAM,oBAAoB,KAClC,MAAM,YA6HR,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createReport.d.ts","sourceRoot":"","sources":["../../../src/report/api/createReport.ts"],"names":[],"mappings":"AAMA,OAAO,eAAe,MAAM,6BAA6B,CAAC;AAE1D;;;;;;;;;;;;KAYK;AACL,eAAO,MAAM,YAAY,kBACR,MAAM,sBAAsB,eAC9B,MAAM,KAClB,QAAQ,OAAO,CAmCjB,CAAC"}
1
+ {"version":3,"file":"createReport.d.ts","sourceRoot":"","sources":["../../../src/report/api/createReport.ts"],"names":[],"mappings":"AAMA,OAAO,eAAe,MAAM,6BAA6B,CAAC;AAE1D;;;;;;;;;;;;KAYK;AACL,eAAO,MAAM,YAAY,kBACR,MAAM,sBAAsB,eAC9B,MAAM,KAClB,QAAQ,OAAO,CA8BjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"deleteReport.d.ts","sourceRoot":"","sources":["../../../src/report/api/deleteReport.ts"],"names":[],"mappings":"AAMA,OAAO,eAAe,MAAM,6BAA6B,CAAC;AAE1D;;;;;;;;;;;;KAYK;AACL,eAAO,MAAM,YAAY,kBACR,MAAM,sBAAsB,eAC9B,MAAM,KAClB,QAAQ,OAAO,CAmCjB,CAAC"}
1
+ {"version":3,"file":"deleteReport.d.ts","sourceRoot":"","sources":["../../../src/report/api/deleteReport.ts"],"names":[],"mappings":"AAMA,OAAO,eAAe,MAAM,6BAA6B,CAAC;AAE1D;;;;;;;;;;;;KAYK;AACL,eAAO,MAAM,YAAY,kBACR,MAAM,sBAAsB,eAC9B,MAAM,KAClB,QAAQ,OAAO,CA+BjB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=createReport.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createReport.test.d.ts","sourceRoot":"","sources":["../../../../src/report/api/tests/createReport.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=deleteReport.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deleteReport.test.d.ts","sourceRoot":"","sources":["../../../../src/report/api/tests/deleteReport.test.ts"],"names":[],"mappings":""}
@@ -14,12 +14,7 @@
14
14
  * @async
15
15
  */
16
16
  export declare const queryUsers: {
17
- (query?: {
18
- displayName?: Amity.User['displayName'];
19
- filter?: 'all' | 'flagged';
20
- sortBy?: 'displayName' | 'firstCreated' | 'lastCreated';
21
- page?: Amity.Page;
22
- }): Promise<Amity.Cached<Amity.Paged<Amity.User>>>;
17
+ (query?: Amity.QueryUsers): Promise<Amity.Cached<Amity.Paged<Amity.User>>>;
23
18
  /**
24
19
  * ```js
25
20
  * import { queryUsers } from '@amityco/ts-sdk'
@@ -1 +1 @@
1
- {"version":3,"file":"queryUsers.d.ts","sourceRoot":"","sources":["../../../src/user/api/queryUsers.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,UAAU;aACd;QACL,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC;QACxC,MAAM,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;QAC3B,MAAM,CAAC,EAAE,aAAa,GAAG,cAAc,GAAG,aAAa,CAAC;QACxD,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC;KACnB,GACA,QAAQ,MAAM,MAAM,CAAC,MAAM,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IAiDjD;;;;;;;;;;;;;OAaG;oBAEM,WAAW,iBAAiB,CAAC,CAAC,CAAC,CAAC,GACtC,MAAM,MAAM,CAAC,MAAM,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,SAAS;CAlBnD,CAAC"}
1
+ {"version":3,"file":"queryUsers.d.ts","sourceRoot":"","sources":["../../../src/user/api/queryUsers.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,UAAU;aACd,MAAM,UAAU,GACtB,QAAQ,MAAM,MAAM,CAAC,MAAM,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IAiDjD;;;;;;;;;;;;;OAaG;oBAEM,WAAW,iBAAiB,CAAC,CAAC,CAAC,CAAC,GACtC,MAAM,MAAM,CAAC,MAAM,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,SAAS;CAlBnD,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export { liveUser } from './liveUser';
2
+ export { liveUsers } from './liveUsers';
2
3
  export { observeUser } from './observeUser';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/user/observers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/user/observers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * ```js
3
+ * import { liveUsers } from '@amityco/ts-sdk'
4
+ *
5
+ * let users = []
6
+ * const unsub = liveUsers({}, response => merge(users, response.data))
7
+ * ```
8
+ *
9
+ * Observe all mutations on a list of {@link Amity.User}s
10
+ *
11
+ * @param params for querying users
12
+ * @param callback the function to call when new data are available
13
+ * @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the users
14
+ *
15
+ * @category Category Live Collection
16
+ */
17
+ export declare const liveUsers: (params: Amity.UserLiveCollection, callback: Amity.LiveCollectionCallback<Amity.User>, config?: Amity.LiveCollectionConfig) => () => void;
18
+ //# sourceMappingURL=liveUsers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liveUsers.d.ts","sourceRoot":"","sources":["../../../src/user/observers/liveUsers.ts"],"names":[],"mappings":"AA8BA;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,SAAS,WACZ,MAAM,kBAAkB,YACtB,MAAM,sBAAsB,CAAC,MAAM,IAAI,CAAC,WACzC,MAAM,oBAAoB,eAgHpC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=liveUsers.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liveUsers.test.d.ts","sourceRoot":"","sources":["../../../../src/user/observers/tests/liveUsers.test.ts"],"names":[],"mappings":""}
@@ -1,2 +1,2 @@
1
- export declare const liveObject: <T extends Amity.User | Amity.File<any> | Amity.Role | Amity.Channel<any> | Amity.SubChannel | Amity.Membership<"channel"> | Amity.Message<any> | Amity.Community | Amity.Category | Amity.Membership<"community"> | Amity.Post<any> | Amity.Comment<any> | Amity.Poll | Amity.Stream | Amity.FollowStatus, K extends keyof T>(id: T[K], callback: Amity.LiveObjectCallback<T>, key: K, fetcher: (id: T[K]) => Promise<Amity.Cached<T>>, eventHandlers: ((callback: Amity.Listener<T>) => Amity.Unsubscriber)[]) => Amity.Unsubscriber;
1
+ export declare const liveObject: <T extends Amity.User | Amity.File<any> | Amity.Role | Amity.Channel<any> | Amity.SubChannel | Amity.Membership<"channel"> | Amity.Message<any> | Amity.Community | Amity.Category | Amity.Membership<"community"> | Amity.Feed | Amity.Post<any> | Amity.Comment<any> | Amity.Poll | Amity.Stream | Amity.FollowStatus, K extends keyof T>(id: T[K], callback: Amity.LiveObjectCallback<T>, key: K, fetcher: (id: T[K]) => Promise<Amity.Cached<T>>, eventHandlers: ((callback: Amity.Listener<T>) => Amity.Unsubscriber)[]) => Amity.Unsubscriber;
2
2
  //# sourceMappingURL=liveObject.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"liveObject.d.ts","sourceRoot":"","sources":["../../src/utils/liveObject.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,UAAU,4dAQiC,MAAM,YAAY,QACvE,MAAM,YAkER,CAAC"}
1
+ {"version":3,"file":"liveObject.d.ts","sourceRoot":"","sources":["../../src/utils/liveObject.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,UAAU,yeAQiC,MAAM,YAAY,QACvE,MAAM,YAkER,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../../../src/utils/tests/dummy/channel.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,UAAU,CAevF;AA+BD,eAAO,MAAM,QAAQ;;;;;CAKpB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,UAAsD,CAAC;AAEvF,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,UAAiD,CAAC;AAEtF,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,UAE1C,CAAC;AAEH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,UAI9B,CAAC;AAEH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,UAE9B,CAAC;AAEH,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,OAK3B,CAAC;AAEH,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,OAK3B,CAAC;AAEH,eAAO,MAAM,cAAc,uCAA2B,CAAC;AACvD,eAAO,MAAM,WAAW,6BAAoD,CAAC;AAE7E,eAAO,MAAM,eAAe,uCAI1B,CAAC;AACH,eAAO,MAAM,YAAY,6BAAqD,CAAC;AAE/E,eAAO,MAAM,eAAe,uCAI1B,CAAC;AACH,eAAO,MAAM,YAAY,6BAAqD,CAAC;AAE/E,eAAO,MAAM,YAAY,uCAIvB,CAAC;AAEH,eAAO,MAAM,oBAAoB,uCAI/B,CAAC;AACH,eAAO,MAAM,iBAAiB,6BAA0D,CAAC;AAEzF,eAAO,MAAM,mBAAmB,uCAG9B,CAAC;AACH,eAAO,MAAM,gBAAgB,6BAAyD,CAAC;AAEvF,eAAO,MAAM,sBAAsB,uCAGjC,CAAC;AACH,eAAO,MAAM,mBAAmB,6BAA4D,CAAC;AAE7F,eAAO,MAAM,oBAAoB;;;;;;;;;;;CAQhC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;CAQ/B,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;;;;;;;;;CAQrC,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;CAQnC,CAAC;AAEF,eAAO,MAAM,8BAA8B;;;;;;;;;;;CAQ1C,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;CAQpC,CAAC;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;CAQzC,CAAC;AAEF,eAAO,MAAM,gBAAgB,+BAAsD,CAAC;AAEpF,eAAO,MAAM,6BAA6B;;;;;;;;;;;CAQzC,CAAC;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;CAQzC,CAAC;AAGF,eAAO,MAAM,cAAc;;;;;CAK1B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;CAK9B,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;CAKtC,CAAC"}
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../../../src/utils/tests/dummy/channel.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,UAAU,CAgBvF;AA+BD,eAAO,MAAM,QAAQ;;;;;CAKpB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,UAAsD,CAAC;AAEvF,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,UAAiD,CAAC;AAEtF,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,UAE1C,CAAC;AAEH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,UAI9B,CAAC;AAEH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,UAE9B,CAAC;AAEH,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,OAK3B,CAAC;AAEH,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,OAK3B,CAAC;AAEH,eAAO,MAAM,cAAc,uCAA2B,CAAC;AACvD,eAAO,MAAM,WAAW,6BAAoD,CAAC;AAE7E,eAAO,MAAM,eAAe,uCAI1B,CAAC;AACH,eAAO,MAAM,YAAY,6BAAqD,CAAC;AAE/E,eAAO,MAAM,eAAe,uCAI1B,CAAC;AACH,eAAO,MAAM,YAAY,6BAAqD,CAAC;AAE/E,eAAO,MAAM,YAAY,uCAIvB,CAAC;AAEH,eAAO,MAAM,oBAAoB,uCAI/B,CAAC;AACH,eAAO,MAAM,iBAAiB,6BAA0D,CAAC;AAEzF,eAAO,MAAM,mBAAmB,uCAG9B,CAAC;AACH,eAAO,MAAM,gBAAgB,6BAAyD,CAAC;AAEvF,eAAO,MAAM,sBAAsB,uCAGjC,CAAC;AACH,eAAO,MAAM,mBAAmB,6BAA4D,CAAC;AAE7F,eAAO,MAAM,oBAAoB;;;;;;;;;;;CAQhC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;CAQ/B,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;;;;;;;;;CAQrC,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;CAQnC,CAAC;AAEF,eAAO,MAAM,8BAA8B;;;;;;;;;;;CAQ1C,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;CAQpC,CAAC;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;CAQzC,CAAC;AAEF,eAAO,MAAM,gBAAgB,+BAAsD,CAAC;AAEpF,eAAO,MAAM,6BAA6B;;;;;;;;;;;CAQzC,CAAC;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;CAQzC,CAAC;AAGF,eAAO,MAAM,cAAc;;;;;CAK1B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;CAK9B,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;CAKtC,CAAC"}
@@ -0,0 +1,21 @@
1
+ export declare const feed11: {
2
+ targetType: string;
3
+ targetId: string;
4
+ feedType: string;
5
+ feedId: string;
6
+ postCount: number;
7
+ createdAt: string;
8
+ updatedAt: string;
9
+ };
10
+ export declare const feedPayload: {
11
+ feeds: {
12
+ targetType: string;
13
+ targetId: string;
14
+ feedType: string;
15
+ feedId: string;
16
+ postCount: number;
17
+ createdAt: string;
18
+ updatedAt: string;
19
+ }[];
20
+ };
21
+ //# sourceMappingURL=feed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feed.d.ts","sourceRoot":"","sources":["../../../../src/utils/tests/dummy/feed.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM;;;;;;;;CAQlB,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;;;;CAEvB,CAAC"}
@@ -18,4 +18,5 @@ export * from './member';
18
18
  export * from './community';
19
19
  export * from './category';
20
20
  export * from './stream';
21
+ export * from './feed';
21
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/tests/dummy/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,QAA2B,CAAC;AAC7C,eAAO,MAAM,mBAAmB;;;CAAiC,CAAC;AAElE,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AAEvB,cAAc,QAAQ,CAAC;AAEvB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAE3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAE7B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAE3B,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/tests/dummy/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,QAA2B,CAAC;AAC7C,eAAO,MAAM,mBAAmB;;;CAAiC,CAAC;AAElE,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AAEvB,cAAc,QAAQ,CAAC;AAEvB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAE3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAE7B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAE3B,cAAc,UAAU,CAAC;AAEzB,cAAc,QAAQ,CAAC"}
@@ -32,6 +32,15 @@ export declare const postQueryResponsePage2: {
32
32
  data: {
33
33
  posts: Amity.Post<any>[];
34
34
  files: never[];
35
+ feeds: {
36
+ feedType: string;
37
+ targetId: string;
38
+ feedId: string;
39
+ targetType: string;
40
+ postCount: number;
41
+ createdAt: string;
42
+ updatedAt: string;
43
+ }[];
35
44
  paging: {
36
45
  next: string;
37
46
  };
@@ -1 +1 @@
1
- {"version":3,"file":"post.d.ts","sourceRoot":"","sources":["../../../../src/utils/tests/dummy/post.ts"],"names":[],"mappings":"AAGA,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAwBrE;AAED,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,CA0B9E;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,IAAqB,CAAC;AAEjD,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,OAA2B,CAAC;AAE1D,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,IAG1B,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,IAG1B,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,IAM1B,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,IAO1B,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,IAI1B,CAAC;AAEF,eAAO,MAAM,KAAK;;;;;;CAMjB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,cAGlC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,WAM/B,CAAC;AAIF,eAAO,MAAM,iBAAiB;;;;;;;;;;;CAS7B,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;CAQlC,CAAC"}
1
+ {"version":3,"file":"post.d.ts","sourceRoot":"","sources":["../../../../src/utils/tests/dummy/post.ts"],"names":[],"mappings":"AAGA,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAyBrE;AAED,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,CA0B9E;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,IAAqB,CAAC;AAEjD,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,OAA2B,CAAC;AAE1D,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,IAG1B,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,IAG1B,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,IAO1B,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,IAQ1B,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,IAI1B,CAAC;AAEF,eAAO,MAAM,KAAK;;;;;;CAMjB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,cAGlC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,WAM/B,CAAC;AAIF,eAAO,MAAM,iBAAiB;;;;;;;;;;;CAS7B,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;CASlC,CAAC"}
@@ -2,6 +2,8 @@ export declare const user11: Amity.User;
2
2
  export declare const user12: Amity.User;
3
3
  export declare const user13: Amity.User;
4
4
  export declare const user14: Amity.User;
5
+ export declare const user21: Amity.User;
6
+ export declare const user22: Amity.User;
5
7
  export declare const userQueryResponse: {
6
8
  data: {
7
9
  users: Amity.User[];
@@ -12,6 +14,67 @@ export declare const userQueryResponse: {
12
14
  };
13
15
  };
14
16
  };
17
+ export declare const userQueryResponsePage2: {
18
+ data: {
19
+ users: Amity.User[];
20
+ files: never[];
21
+ paging: {
22
+ previous: string;
23
+ next: string;
24
+ };
25
+ };
26
+ };
27
+ export declare const flaggedUser: {
28
+ userId: string;
29
+ flagCount: number;
30
+ _id: string;
31
+ displayName?: string | undefined;
32
+ avatarFileId?: string | undefined;
33
+ avatarCustomUrl?: string | undefined;
34
+ description?: string | undefined;
35
+ metadata?: Record<string, any> | undefined;
36
+ tags?: string[] | undefined;
37
+ hashFlag: {
38
+ bits: number;
39
+ hashes: number;
40
+ hash: string;
41
+ } | null;
42
+ roles: string[];
43
+ permissions: Amity.Permission[];
44
+ createdAt: string;
45
+ updatedAt?: string | undefined;
46
+ deletedAt?: string | undefined;
47
+ isDeleted?: boolean | undefined;
48
+ path: string;
49
+ };
50
+ export declare const flaggedUserQueryResponse: {
51
+ data: {
52
+ users: {
53
+ userId: string;
54
+ flagCount: number;
55
+ _id: string;
56
+ displayName?: string | undefined;
57
+ avatarFileId?: string | undefined;
58
+ avatarCustomUrl?: string | undefined;
59
+ description?: string | undefined;
60
+ metadata?: Record<string, any> | undefined;
61
+ tags?: string[] | undefined;
62
+ hashFlag: {
63
+ bits: number;
64
+ hashes: number;
65
+ hash: string;
66
+ } | null;
67
+ roles: string[];
68
+ permissions: Amity.Permission[];
69
+ createdAt: string;
70
+ updatedAt?: string | undefined;
71
+ deletedAt?: string | undefined;
72
+ isDeleted?: boolean | undefined;
73
+ path: string;
74
+ }[];
75
+ files: never[];
76
+ };
77
+ };
15
78
  export declare const userUpdateResponse: {
16
79
  data: {
17
80
  users: {
@@ -1 +1 @@
1
- {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../../src/utils/tests/dummy/user.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,IAS1B,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,IAG1B,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,IAG1B,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,IAG1B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;CAS7B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;CAmB9B,CAAC;AACF,eAAO,MAAM,KAAK,cAAmC,CAAC;AAGtD,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,WAG/B,CAAC"}
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../../src/utils/tests/dummy/user.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,IAS1B,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,IAG1B,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,IAG1B,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,IAG1B,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,IAI1B,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,IAG1B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;CAS7B,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;CASlC,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;CAIvB,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKpC,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;CAmB9B,CAAC;AAEF,eAAO,MAAM,KAAK,cAAmC,CAAC;AAGtD,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,WAG/B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amityco/ts-sdk",
3
- "version": "0.0.1-beta.38",
3
+ "version": "0.0.1-beta.39",
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",
@@ -28,6 +28,8 @@ declare global {
28
28
 
29
29
  follow: Amity.FollowStatus;
30
30
  followCount: Amity.FollowCount;
31
+
32
+ feed: Amity.Feed;
31
33
  };
32
34
 
33
35
  type Domain = keyof Model;
@@ -59,6 +61,8 @@ declare global {
59
61
 
60
62
  follow: Pick<Amity.FollowStatus, 'from' | 'to'>;
61
63
  followCount: Pick<Amity.FollowCount, 'userId'>;
64
+
65
+ feed: Pick<Amity.Feed, 'targetId' | 'feedId'>;
62
66
  };
63
67
  }
64
68
  }
@@ -48,7 +48,7 @@ declare global {
48
48
  messageCount: number; // TODO remove from public interface
49
49
  moderatorMemberCount?: number;
50
50
 
51
- lastActivity?: Amity.timestamp;
51
+ lastActivity: Amity.timestamp;
52
52
 
53
53
  defaultSubChannelUnreadCount: number;
54
54
  defaultSubChannelHasUnreadMention: boolean;
@@ -74,7 +74,7 @@ declare global {
74
74
  type QueryChannels = {
75
75
  displayName?: string;
76
76
  membership?: 'all' | 'member' | 'notMember';
77
- sortBy?: 'displayName' | 'firstCreated' | 'lastCreated';
77
+ sortBy?: 'displayName' | 'firstCreated' | 'lastCreated' | 'lastActivity';
78
78
  types?: Amity.ChannelType[];
79
79
  isDeleted?: Amity.Channel['isDeleted'];
80
80
  tags?: Amity.Taggable['tags'];
@@ -2,12 +2,10 @@ export {};
2
2
 
3
3
  declare global {
4
4
  namespace Amity {
5
- type FeedType = 'community' | 'user';
6
-
7
5
  type Feed = {
8
6
  feedId: string;
9
7
  feedType: 'reviewing' | 'published';
10
- targetType: FeedType;
8
+ targetType: Extract<Amity.Domain, 'community' | 'user'>;
11
9
  targetId: string;
12
10
  postCount: number;
13
11
  } & Amity.Timestamps;
@@ -76,7 +76,10 @@ declare global {
76
76
  excludeTags?: Amity.Taggable['tags'];
77
77
  hasFlags?: boolean;
78
78
  isDeleted?: boolean;
79
- page?: Amity.Page;
79
+ /*
80
+ * For messages the after and before values are messageId
81
+ */
82
+ page?: Amity.Page<string>;
80
83
  parentId?: Amity.Message['parentId'];
81
84
  sortBy?: 'segmentAsc' | 'segmentDesc';
82
85
  tags?: Amity.Taggable['tags'];
@@ -10,7 +10,7 @@ export const PostContentType = Object.freeze({
10
10
  declare global {
11
11
  namespace Amity {
12
12
  // bad hack until we get proper feed objects in backend
13
- type PostTargetType = Amity.FeedType | 'content';
13
+ type PostTargetType = Amity.Feed['targetType'] | 'content';
14
14
 
15
15
  type PostContentType = ValueOf<typeof PostContentType>;
16
16
 
@@ -24,5 +24,19 @@ declare global {
24
24
  Amity.Timestamps &
25
25
  Amity.SoftDelete &
26
26
  Amity.Subscribable;
27
+
28
+ type QueryUsers = {
29
+ displayName?: Amity.User['displayName'];
30
+ filter?: 'all' | 'flagged';
31
+ sortBy?: 'displayName' | 'firstCreated' | 'lastCreated';
32
+ page?: Amity.Page;
33
+ };
34
+
35
+ type UserLiveCollection = Amity.LiveCollectionParams<Omit<QueryUsers, 'page'>>;
36
+
37
+ type UserLiveCollectionCache = Amity.LiveCollectionCache<
38
+ Amity.User['userId'],
39
+ Pick<QueryUsers, 'page'>
40
+ >;
27
41
  }
28
42
  }
@@ -11,6 +11,7 @@ import {
11
11
  pollPayload,
12
12
  reactionPayload,
13
13
  followPayload,
14
+ feedPayload,
14
15
  user11,
15
16
  } from '~/utils/tests';
16
17
 
@@ -32,6 +33,7 @@ describe('ingestInCache', () => {
32
33
  ['poll', pollPayload],
33
34
  ['reaction', reactionPayload],
34
35
  ['follow', followPayload],
36
+ ['feed', feedPayload],
35
37
  ];
36
38
 
37
39
  test.each(payloads)('it should add %s payload to cache', (model, payload) => {
@@ -10,6 +10,7 @@ import {
10
10
  filterByChannelMembership,
11
11
  sortByLastCreated,
12
12
  sortByDisplayName,
13
+ sortByLastActivity,
13
14
  sortByFirstCreated,
14
15
  } from '~/core/query';
15
16
  import {
@@ -97,24 +98,32 @@ export const liveChannels = (
97
98
  channels = filterByChannelMembership(channels, params.membership, userId);
98
99
  }
99
100
 
100
- const sortBy = params.sortBy || 'lastCreated';
101
-
102
- if (sortBy === 'lastCreated' || sortBy === 'firstCreated') {
103
- channels = channels.sort(sortBy === 'lastCreated' ? sortByLastCreated : sortByFirstCreated);
104
- }
105
-
106
- /*
107
- * The server returns channels with empty | null displayName's first before
108
- * returning sorted list of channels with displayNames
109
- *
110
- * This section needs to be updated as displayNames can be null as well
111
- */
112
- if (sortBy === 'displayName') {
113
- channels = channels
114
- // this needs to be aligned with the backend data type
115
- .map(c => (c.displayName ? c : { ...c, displayName: '' }))
116
- // @ts-ignore
117
- .sort(sortByDisplayName);
101
+ switch (params.sortBy) {
102
+ case 'firstCreated':
103
+ channels = channels.sort(sortByFirstCreated);
104
+ break;
105
+
106
+ case 'lastCreated':
107
+ channels = channels.sort(sortByLastCreated);
108
+ break;
109
+
110
+ case 'displayName':
111
+ /*
112
+ * The server returns channels with empty | null displayName's first before
113
+ * returning sorted list of channels with displayNames
114
+ *
115
+ * This section needs to be updated as displayNames can be null as well
116
+ */
117
+ channels = channels
118
+ // this needs to be aligned with the backend data type
119
+ .map(c => (c.displayName ? c : { ...c, displayName: '' }))
120
+ // @ts-ignore
121
+ .sort(sortByDisplayName);
122
+ break;
123
+
124
+ default:
125
+ channels = channels.sort(sortByLastActivity);
126
+ break;
118
127
  }
119
128
 
120
129
  callback({
@@ -126,15 +135,11 @@ export const liveChannels = (
126
135
  });
127
136
  };
128
137
 
129
- const realtimeRouter = (action: Amity.ChannelActionType) => (channel: Amity.Channel) => {
138
+ const realtimeRouter = (_: Amity.ChannelActionType) => (channel: Amity.Channel) => {
130
139
  const collection = pullFromCache<Amity.ChannelLiveCollectionCache>(cacheKey)?.data;
131
140
  if (!collection) return;
132
141
 
133
- if (action === 'onDelete' && params.isDeleted === false) {
134
- collection.data = collection.data.filter(c => c !== channel.channelId);
135
- } else {
136
- collection.data = [...new Set([channel.channelId, ...collection.data])];
137
- }
142
+ collection.data = [...new Set([channel.channelId, ...collection.data])];
138
143
 
139
144
  pushToCache(cacheKey, collection);
140
145
  responder(collection);
@@ -164,8 +164,6 @@ export const connectClient = async (
164
164
 
165
165
  subscriptions.forEach(fn => fn());
166
166
  }),
167
-
168
- onUserDeleted(() => null),
169
167
  );
170
168
 
171
169
  return client.ws.connected;
@@ -31,6 +31,8 @@ const idResolvers: Resolvers = {
31
31
 
32
32
  follow: ({ from, to }) => `${from}#${to}`,
33
33
  followCount: ({ userId }) => userId,
34
+
35
+ feed: ({ targetId, feedId }) => `${targetId}#${feedId}`,
34
36
  };
35
37
 
36
38
  /**
@@ -37,6 +37,7 @@ const CRITERIAS: Criterias = {
37
37
  stream: ['streamId'],
38
38
  follow: ['from', 'to'],
39
39
  followCount: ['userId', 'followerCount'],
40
+ feed: ['feedId', 'feedType'],
40
41
  };
41
42
 
42
43
  /** @hidden */
@@ -27,6 +27,8 @@ export const PAYLOAD2MODEL: Record<string, Amity.Domain> = {
27
27
 
28
28
  follows: 'follow',
29
29
  followCounts: 'followCount',
30
+
31
+ feeds: 'feed',
30
32
  };
31
33
 
32
34
  /** hidden */
@@ -58,10 +58,40 @@ export const filterByChannelMembership = (
58
58
  channelUserCacheKey,
59
59
  ])?.data;
60
60
 
61
- if (membership === 'member' && channelUser && channelUser.membership !== 'none') {
62
- return true;
61
+ if (membership === 'member') {
62
+ return channelUser && channelUser.membership !== 'none';
63
63
  }
64
64
 
65
- return membership === 'notMember' && (!channelUser || channelUser.membership === 'none');
65
+ // only membership value remainging is 'notMember'
66
+ return !channelUser || channelUser.membership === 'none';
67
+ });
68
+ };
69
+
70
+ /**
71
+ * Filter a channel collection by membership of the userId
72
+ *
73
+ * @param collection the channel collection to filter
74
+ * @param feedType to be filtered by
75
+ * @returns a filtered collection with items only matching the criteria
76
+ *
77
+ * @hidden
78
+ */
79
+ export const filterByFeedType = <T extends Amity.Post>(
80
+ collection: T[],
81
+ feedType: Amity.Feed['feedType'],
82
+ ): T[] => {
83
+ /*
84
+ * It is possible that the targetId & feedId are the same for most of the posts
85
+ * But since cache is in-memory, i've avoided memoizing, to avoid premature
86
+ * optimization. Can be revisited if performance issues arise
87
+ */
88
+ return collection.filter(({ targetId, feedId }) => {
89
+ const feed = pullFromCache<Amity.Feed>([
90
+ 'feed',
91
+ 'get',
92
+ getResolver('feed')({ targetId, feedId }),
93
+ ])?.data!;
94
+
95
+ return feed && feed.feedType === feedType;
66
96
  });
67
97
  };
@@ -1,15 +1,15 @@
1
1
  import { encode, decode } from 'js-base64';
2
2
 
3
3
  /**
4
- * Type guard to find if the a given decoded backend token uses "skip/limit" pagination style
4
+ * Type guard to find if the a given decoded backend token uses "skip" pagination style
5
5
  *
6
6
  * @param json any json object as extracted from the backend
7
7
  * @returns success boolean if the token has either "skip" or "limit" props
8
8
  *
9
9
  * @hidden
10
10
  */
11
- export const isSkipLimit = (json: Record<string, unknown>): json is Amity.SkipLimitPagination =>
12
- ['skip', 'limit'].some(prop => prop in json);
11
+ export const isSkip = (json: Record<string, unknown>): json is Amity.SkipLimitPagination =>
12
+ ['skip'].some(prop => prop in json);
13
13
 
14
14
  /**
15
15
  * Type guard to find if the a given decoded backend token uses "after/before" pagination style
@@ -120,7 +120,7 @@ export const toPage = (token?: Amity.Token): Amity.Page | undefined => {
120
120
  // don't try catch, let it throw
121
121
  const json = JSON.parse(decode(token));
122
122
 
123
- if (isSkipLimit(json)) {
123
+ if (isSkip(json)) {
124
124
  return {
125
125
  after: json.skip,
126
126
  limit: json.limit!,
@@ -133,6 +133,7 @@ export const toPage = (token?: Amity.Token): Amity.Page | undefined => {
133
133
  limit: json.last,
134
134
  } as Amity.PrevPage<number>;
135
135
  }
136
+
136
137
  if ('after' in json) {
137
138
  return {
138
139
  after: json.after,