@amityco/ts-sdk 0.0.1-376eede.0 → 0.0.1-3b7350e.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 (35) hide show
  1. package/dist/@types/domains/client.d.ts +1 -0
  2. package/dist/@types/domains/client.d.ts.map +1 -1
  3. package/dist/client/api/createClient.d.ts.map +1 -1
  4. package/dist/client/api/getToken.d.ts.map +1 -1
  5. package/dist/comment/api/deleteComment.d.ts +36 -1
  6. package/dist/comment/api/deleteComment.d.ts.map +1 -1
  7. package/dist/comment/api/getComment.d.ts.map +1 -1
  8. package/dist/comment/api/queryComments.d.ts +1 -1
  9. package/dist/core/query/paging.d.ts.map +1 -1
  10. package/dist/feed/api/queryGlobalFeed.d.ts +1 -1
  11. package/dist/file/api/deleteFile.d.ts +3 -1
  12. package/dist/file/api/deleteFile.d.ts.map +1 -1
  13. package/dist/index.cjs.js +79 -37
  14. package/dist/index.d.ts +1 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.esm.js +79 -38
  17. package/dist/index.umd.js +17 -5174
  18. package/dist/post/api/deletePost.d.ts +38 -2
  19. package/dist/post/api/deletePost.d.ts.map +1 -1
  20. package/dist/version.d.ts +2 -0
  21. package/dist/version.d.ts.map +1 -0
  22. package/package.json +4 -2
  23. package/rollup.config.js +61 -21
  24. package/src/@types/domains/client.ts +2 -0
  25. package/src/client/api/createClient.ts +16 -8
  26. package/src/client/api/getToken.ts +2 -1
  27. package/src/comment/api/deleteComment.ts +23 -3
  28. package/src/comment/api/getComment.ts +17 -5
  29. package/src/comment/api/queryComments.ts +9 -8
  30. package/src/core/query/paging.ts +4 -0
  31. package/src/feed/api/queryGlobalFeed.ts +1 -1
  32. package/src/file/api/deleteFile.ts +5 -6
  33. package/src/index.ts +2 -0
  34. package/src/post/api/deletePost.ts +20 -20
  35. package/src/version.ts +2 -0
@@ -5,6 +5,7 @@ declare global {
5
5
  namespace Amity {
6
6
  type Logger = (topic: string, ...args: any[]) => void;
7
7
  type Client = {
8
+ version: string;
8
9
  log: Logger;
9
10
  http: AxiosInstance;
10
11
  ws: SocketIOClient.Socket;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/@types/domains/client.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAE9B,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,KAAK,CAAC;QACd,KAAK,MAAM,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;QAErD,KAAK,MAAM,GAAG;YACZ,GAAG,EAAE,MAAM,CAAA;YACX,IAAI,EAAE,aAAa,CAAA;YACnB,EAAE,EAAE,cAAc,CAAC,MAAM,CAAA;YACzB,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YAE9B,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,CAAA;YAEnB,MAAM,CAAC,EAAE,MAAM,CAAA;YACf,MAAM,CAAC,EAAE,MAAM,CAAA;YAEf,GAAG,EAAE,MAAM,IAAI,CAAA;SAChB,CAAA;QAED,KAAK,MAAM,GAAG;YACZ,QAAQ,EAAE,MAAM,CAAA;YAChB,UAAU,EAAE;gBACV,OAAO,EAAE,MAAM,CAAA;gBACf,IAAI,EAAE,MAAM,GAAG,KAAK,CAAA;gBACpB,KAAK,CAAC,EAAE,MAAM,CAAA;aACf,CAAA;SACF,CAAA;QAED,KAAK,MAAM,GAAG;YACZ,WAAW,EAAE,MAAM,CAAA;YACnB,YAAY,EAAE,MAAM,CAAA;SACrB,CAAA;KACF;CACF"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/@types/domains/client.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAE9B,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,KAAK,CAAC;QACd,KAAK,MAAM,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;QAErD,KAAK,MAAM,GAAG;YACZ,OAAO,EAAE,MAAM,CAAA;YAEf,GAAG,EAAE,MAAM,CAAA;YACX,IAAI,EAAE,aAAa,CAAA;YACnB,EAAE,EAAE,cAAc,CAAC,MAAM,CAAA;YACzB,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YAE9B,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,CAAA;YAEnB,MAAM,CAAC,EAAE,MAAM,CAAA;YACf,MAAM,CAAC,EAAE,MAAM,CAAA;YAEf,GAAG,EAAE,MAAM,IAAI,CAAA;SAChB,CAAA;QAED,KAAK,MAAM,GAAG;YACZ,QAAQ,EAAE,MAAM,CAAA;YAChB,UAAU,EAAE;gBACV,OAAO,EAAE,MAAM,CAAA;gBACf,IAAI,EAAE,MAAM,GAAG,KAAK,CAAA;gBACpB,KAAK,CAAC,EAAE,MAAM,CAAA;aACf,CAAA;SACF,CAAA;QAED,KAAK,MAAM,GAAG;YACZ,WAAW,EAAE,MAAM,CAAA;YACnB,YAAY,EAAE,MAAM,CAAA;SACrB,CAAA;KACF;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"createClient.d.ts","sourceRoot":"","sources":["../../../src/client/api/createClient.ts"],"names":[],"mappings":"AAcA;;;;;;;;;;;;;;IAcI;AACJ,eAAO,MAAM,YAAY,WACf,MAAM,gBACD,MAAM,iBACL,MAAM,KACnB,MAAM,MAsBR,CAAA"}
1
+ {"version":3,"file":"createClient.d.ts","sourceRoot":"","sources":["../../../src/client/api/createClient.ts"],"names":[],"mappings":"AAaA;;;;;;;;;;;;;;IAcI;AACJ,eAAO,MAAM,YAAY,WACf,MAAM,gBACD,MAAM,iBACL,MAAM,KACnB,MAAM,MA+BR,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getToken.d.ts","sourceRoot":"","sources":["../../../src/client/api/getToken.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,QAAQ,WAAkB;IACrC,MAAM,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7B,WAAW,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;CACpC,0BAaA,CAAA"}
1
+ {"version":3,"file":"getToken.d.ts","sourceRoot":"","sources":["../../../src/client/api/getToken.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,QAAQ,WAAkB;IACrC,MAAM,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7B,WAAW,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;CACpC,0BAcA,CAAA"}
@@ -12,5 +12,40 @@
12
12
  * @category Comment API
13
13
  * @async
14
14
  */
15
- export declare const deleteComment: (commentId: Amity.Comment['commentId']) => Promise<Amity.Comment<any>>;
15
+ export declare const deleteComment: (commentId: Amity.Comment['commentId'], permanent?: boolean) => Promise<{
16
+ isDeleted: boolean;
17
+ commentId: string;
18
+ userId: string;
19
+ parentId?: string | undefined;
20
+ rootId: string;
21
+ childrenNumber: number;
22
+ children: string[];
23
+ segmentNumber: number;
24
+ referenceId: string;
25
+ referenceType: Amity.CommentReferenceType;
26
+ dataType?: any;
27
+ data: any;
28
+ metadata?: Record<string, any> | undefined;
29
+ flagCount: number;
30
+ hashFlag: {
31
+ bits: number;
32
+ hashes: number;
33
+ hash: string;
34
+ } | null;
35
+ reactionsCount: number;
36
+ reactions: Record<string, number>;
37
+ myReactions?: string[] | undefined;
38
+ latestReaction?: ({
39
+ reactionId: string;
40
+ userId: string;
41
+ reactionName: string;
42
+ } & Amity.CreatedAt & Amity.Relationship<Amity.ReactableType> & {
43
+ eventName: "added" | "removed";
44
+ }) | undefined;
45
+ createdAt: string;
46
+ updatedAt?: string | undefined;
47
+ deletedAt?: string | undefined;
48
+ localId: string;
49
+ syncedAt: number;
50
+ }>;
16
51
  //# sourceMappingURL=deleteComment.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deleteComment.d.ts","sourceRoot":"","sources":["../../../src/comment/api/deleteComment.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,aAAa,cACb,aAAa,CAAC,WAAW,CAAC,gCAiBtC,CAAA"}
1
+ {"version":3,"file":"deleteComment.d.ts","sourceRoot":"","sources":["../../../src/comment/api/deleteComment.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,aAAa,cACb,aAAa,CAAC,WAAW,CAAC,cAC1B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCnB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getComment.d.ts","sourceRoot":"","sources":["../../../src/comment/api/getComment.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,UAAU;gBACV,aAAa,CAAC,WAAW,CAAC;IAiBvC;;;;;;;;;;;;OAYG;uBAEU,aAAa,CAAC,WAAW,CAAC;CAhBtC,CAAA"}
1
+ {"version":3,"file":"getComment.d.ts","sourceRoot":"","sources":["../../../src/comment/api/getComment.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,UAAU;gBACV,aAAa,CAAC,WAAW,CAAC;IA6BvC;;;;;;;;;;;;OAYG;uBAEU,aAAa,CAAC,WAAW,CAAC;CAhBtC,CAAA"}
@@ -43,7 +43,7 @@ export declare const queryComments: {
43
43
  nextPage: {
44
44
  after: number;
45
45
  limit: number;
46
- };
46
+ } | undefined;
47
47
  prevPage: {
48
48
  before: number;
49
49
  limit: number;
@@ -1 +1 @@
1
- {"version":3,"file":"paging.d.ts","sourceRoot":"","sources":["../../../src/core/query/paging.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,SAAU,MAAM,sCAEvC,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,SAAU,MAAM,wCAEzC,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,YAAa,GAAG,gCAMnC,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,WACV,MAAM,IAAI,GAAG,SAAS,SACvB,WAAW,GAAG,aAAa,KAEjC,MAAM,KAAK,GAAG,SAuChB,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,kCAA0B,MAAM,IAAI,GAAG,IA0BzD,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,qIAsBzB,CAAA"}
1
+ {"version":3,"file":"paging.d.ts","sourceRoot":"","sources":["../../../src/core/query/paging.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,SAAU,MAAM,sCAEvC,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,SAAU,MAAM,wCAEzC,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,YAAa,GAAG,gCAMnC,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,WACV,MAAM,IAAI,GAAG,SAAS,SACvB,WAAW,GAAG,aAAa,KAEjC,MAAM,KAAK,GAAG,SA2ChB,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,kCAA0B,MAAM,IAAI,GAAG,IA0BzD,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,qIAsBzB,CAAA"}
@@ -13,7 +13,7 @@
13
13
  * @async
14
14
  **/
15
15
  export declare const queryGlobalFeed: (query?: {
16
- dataTypes?: ("video" | "image" | "file")[] | undefined;
16
+ dataTypes?: ("video" | "image" | "file" | "liveStream")[] | undefined;
17
17
  page?: Amity.Page | undefined;
18
18
  } | undefined) => Promise<{
19
19
  data: Record<string, Amity.Post<any>>;
@@ -12,5 +12,7 @@
12
12
  * @category File API
13
13
  * @async
14
14
  */
15
- export declare const deleteFile: (fileId: Amity.File<any>['fileId']) => Promise<boolean>;
15
+ export declare const deleteFile: (fileId: Amity.File<any>['fileId']) => Promise<{
16
+ success: boolean;
17
+ }>;
16
18
  //# sourceMappingURL=deleteFile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deleteFile.d.ts","sourceRoot":"","sources":["../../../src/file/api/deleteFile.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,UAAU,WACb,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,qBAelC,CAAA"}
1
+ {"version":3,"file":"deleteFile.d.ts","sourceRoot":"","sources":["../../../src/file/api/deleteFile.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,UAAU,WACb,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;;EAclC,CAAA"}
package/dist/index.cjs.js CHANGED
@@ -21,6 +21,10 @@ var io__default = /*#__PURE__*/_interopDefaultLegacy(io);
21
21
  var mitt__default = /*#__PURE__*/_interopDefaultLegacy(mitt);
22
22
  var AsyncStorage__default = /*#__PURE__*/_interopDefaultLegacy(AsyncStorage);
23
23
 
24
+ var _a;
25
+ // used in createClient
26
+ const VERSION$1 = (_a = 'v0.0.1-beta.7-cjs') !== null && _a !== void 0 ? _a : '__dev__';
27
+
24
28
  /**
25
29
  * Generic ASC error
26
30
  * @category Errors
@@ -422,6 +426,11 @@ const toToken = (paging, style) => {
422
426
  first: paging.limit,
423
427
  };
424
428
  }
429
+ else if (!isNaN(paging === null || paging === void 0 ? void 0 : paging.limit)) {
430
+ payload = {
431
+ last: paging.limit,
432
+ };
433
+ }
425
434
  }
426
435
  // avoid sending {} as it seems backend flips when we do
427
436
  if (!Object.keys(payload).length)
@@ -984,7 +993,12 @@ const createClient = (apiKey, apiEndpoint = 'https://api.amity.co', debugSession
984
993
  const ws = createWebsocketTransport(apiEndpoint);
985
994
  const emitter = createEventEmitter();
986
995
  const client = {
987
- apiKey, log, http, ws, emitter,
996
+ version: `${VERSION$1}`,
997
+ apiKey,
998
+ log,
999
+ http,
1000
+ ws,
1001
+ emitter,
988
1002
  use: () => setActiveClient(client),
989
1003
  };
990
1004
  try {
@@ -1046,6 +1060,7 @@ const getToken = async (params) => {
1046
1060
  client.log('client/api/getToken', params);
1047
1061
  const deviceInfo = await getDeviceInfo();
1048
1062
  const { data } = await client.http.post('/v1/device', Object.assign(Object.assign({}, params), { deviceInfo }), {
1063
+ //@ts-ignore
1049
1064
  headers: { 'X-API-Key': client.apiKey }
1050
1065
  });
1051
1066
  return data;
@@ -1813,11 +1828,10 @@ const createFile = async (formData, onProgress) => {
1813
1828
  const deleteFile = async (fileId) => {
1814
1829
  const client = getActiveClient();
1815
1830
  client.log('file/deleteFile', fileId);
1831
+ // API-FIX: payload is different than swagger docs!!
1816
1832
  const { data } = await client.http.delete(`/api/v3/files/${fileId}`);
1817
- const { success } = data;
1818
- if (success)
1819
- mergeInCache('file', { fileId, isDeleted: true });
1820
- return success;
1833
+ dropFromCache('file', { fileId: data.fileId });
1834
+ return { success: true };
1821
1835
  };
1822
1836
 
1823
1837
  /**
@@ -2994,9 +3008,9 @@ const removeCommunityMembersRole = async (communityId, roleId, userIds) => {
2994
3008
  * @async
2995
3009
  */
2996
3010
  const deletePost = async (postId, permanent = false) => {
2997
- var _a;
2998
3011
  const client = getActiveClient();
2999
3012
  client.log('post/deletePost', postId);
3013
+ let post = await getPost(postId);
3000
3014
  // API-FIX: This endpoint has not been implemented yet.
3001
3015
  await client.http.delete(`/api/v4/posts/${postId}`, {
3002
3016
  params: {
@@ -3004,26 +3018,25 @@ const deletePost = async (postId, permanent = false) => {
3004
3018
  permanent,
3005
3019
  },
3006
3020
  });
3007
- let deleted;
3008
- try {
3009
- // API-FIX: as for now we have no choice but to refetch
3010
- deleted = await getPost(postId);
3011
- }
3012
- catch (error) {
3013
- if (((_a = error) === null || _a === void 0 ? void 0 : _a.code) === 400400 /* ITEM_NOT_FOUND */) {
3014
- // there is currently a limitation which doesnt allow us to fire event to tell that community
3015
- // has been updated. reason is that, when the object is deleted, we don't have its `communityId`
3016
- // and so we cannot refetch the community or advertise on events. hopefully this should be solved
3017
- // later when realtime events covers that for us.
3018
- return { success: true };
3019
- }
3020
- throw (error);
3021
- }
3022
- if (deleted.targetType === 'community') {
3023
- const community = await getCommunity(deleted.targetId);
3021
+ // there is currently a limitation which doesn't allow us to fire event to tell that community
3022
+ // has been updated. reason is that, when the object is deleted, we don't have its `communityId`
3023
+ // and so we cannot refetch the community or advertise on events. hopefully this should be solved
3024
+ // later when realtime events covers that for us.
3025
+ if (post.targetType === 'community') {
3026
+ const community = await getCommunity(post.targetId);
3024
3027
  fireEvent('v3.community.didUpdate', { communities: [community] });
3025
3028
  }
3029
+ // to support hard deletion
3030
+ const deleted = Object.assign(Object.assign({}, post), { isDeleted: true });
3026
3031
  fireEvent('v3.post.didDelete', { posts: [deleted] });
3032
+ if (permanent) {
3033
+ setTimeout(() => {
3034
+ dropFromCache('post', { postId });
3035
+ }, 0);
3036
+ }
3037
+ else {
3038
+ mergeInCache('post', { postId, isDeleted: true });
3039
+ }
3027
3040
  return deleted;
3028
3041
  };
3029
3042
 
@@ -3084,8 +3097,6 @@ queryComments.locally = (query) => {
3084
3097
  const client = getActiveClient();
3085
3098
  client.log('post/queryComments.locally', query);
3086
3099
  const { referenceId, referenceType, parentId, isDeleted, page = { before: 0, limit: 5 }, } = query;
3087
- if (isNaN(page.after) && isNaN(page.before))
3088
- page.before = 0;
3089
3100
  if (isNaN(page.limit))
3090
3101
  page.limit = 5;
3091
3102
  let comments = (_a = pullFromCache('comment')) !== null && _a !== void 0 ? _a : [];
@@ -3115,8 +3126,8 @@ queryComments.locally = (query) => {
3115
3126
  if (afterIndex < 0 || beforeIndex < 0)
3116
3127
  return;
3117
3128
  let slice = comments.slice(afterIndex !== -1 ? afterIndex : 0, beforeIndex !== -1 ? beforeIndex : undefined);
3118
- // nothing left after slicing
3119
- if (!slice.length)
3129
+ // check if slice data is correct (complete)
3130
+ if (slice.length < page.limit)
3120
3131
  return;
3121
3132
  if (!isNaN(page.after) && !isNaN(page.before)) ;
3122
3133
  else if (!isNaN(page.after)) {
@@ -3125,16 +3136,20 @@ queryComments.locally = (query) => {
3125
3136
  else if (!isNaN(page.before)) {
3126
3137
  slice = slice.slice(-page.limit);
3127
3138
  }
3139
+ else {
3140
+ slice = slice.slice(-page.limit);
3141
+ }
3128
3142
  for (let i = 0; i < slice.length - 1; i++)
3129
3143
  if (slice[i].segmentNumber !== slice[i + 1].segmentNumber - 1)
3130
3144
  return;
3131
3145
  const prevPage = slice[0].segmentNumber > 1
3132
3146
  ? { before: slice[0].segmentNumber, limit: page.limit }
3133
3147
  : undefined;
3134
- const nextPage = {
3135
- after: slice[slice.length - 1].segmentNumber,
3136
- limit: page.limit,
3137
- };
3148
+ const nextPage = slice[slice.length - 1].segmentNumber < comments[comments.length - 1].segmentNumber
3149
+ ? {
3150
+ after: slice[slice.length - 1].segmentNumber,
3151
+ limit: page.limit,
3152
+ } : undefined;
3138
3153
  return { data: toRecord(slice), nextPage, prevPage };
3139
3154
  };
3140
3155
 
@@ -3199,10 +3214,21 @@ getComments.locally = (commentIds) => {
3199
3214
  * @async
3200
3215
  */
3201
3216
  const getComment = async (commentId) => {
3217
+ var _a;
3202
3218
  const client = getActiveClient();
3203
3219
  client.log('comment/getComment', commentId);
3204
- // API-FIX: endpoint should not be /list, parameters should be querystring.
3205
- const { data } = await client.http.get(`/api/v3/comments/${commentId}`);
3220
+ let data;
3221
+ try {
3222
+ // API-FIX: endpoint should not be /list, parameters should be querystring.
3223
+ const response = await client.http.get(`/api/v3/comments/${commentId}`);
3224
+ data = response.data;
3225
+ }
3226
+ catch (error) {
3227
+ if (((_a = error) === null || _a === void 0 ? void 0 : _a.code) === 400400 /* ITEM_NOT_FOUND */) {
3228
+ dropFromCache('comment', { commentId });
3229
+ }
3230
+ throw error;
3231
+ }
3206
3232
  decoratePayload(data);
3207
3233
  ingestInCache(data);
3208
3234
  const { comments } = data;
@@ -3298,15 +3324,30 @@ const updateComment = async (commentId, patch) => {
3298
3324
  * @category Comment API
3299
3325
  * @async
3300
3326
  */
3301
- const deleteComment = async (commentId) => {
3327
+ const deleteComment = async (commentId, permanent = false) => {
3302
3328
  const client = getActiveClient();
3303
3329
  client.log('comment/deleteComment', commentId);
3330
+ const comment = await getComment(commentId);
3304
3331
  // API-FIX: This endpoint has not been implemented yet.
3305
- await client.http.delete(`/api/v3/comments/${commentId}`);
3306
- const deleted = await getComment(commentId);
3307
- const post = await getPost(deleted.referenceId);
3332
+ await client.http.delete(`/api/v4/comments/${commentId}`, {
3333
+ params: {
3334
+ commentId,
3335
+ permanent,
3336
+ },
3337
+ });
3338
+ // to support hard deletion
3339
+ const deleted = Object.assign(Object.assign({}, comment), { isDeleted: true });
3340
+ const post = await getPost(comment.referenceId);
3308
3341
  fireEvent('v3.post.didUpdate', { posts: [post] });
3309
3342
  fireEvent('v3.comment.didDelete', { comments: [deleted] });
3343
+ if (permanent) {
3344
+ setTimeout(() => {
3345
+ dropFromCache('comment', { commentId });
3346
+ }, 0);
3347
+ }
3348
+ else {
3349
+ mergeInCache('comment', { commentId, isDeleted: true });
3350
+ }
3310
3351
  return deleted;
3311
3352
  };
3312
3353
 
@@ -5031,6 +5072,7 @@ const disposeStream = async (streamId) => {
5031
5072
  return videoStreamings.find(stream => stream.streamId === streamId);
5032
5073
  };
5033
5074
 
5075
+ exports.VERSION = VERSION$1;
5034
5076
  exports.addChannelMembers = addChannelMembers;
5035
5077
  exports.addChannelMembersRole = addChannelMembersRole;
5036
5078
  exports.addCommunityMembers = addCommunityMembers;
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import './@types';
2
+ export * from './version';
2
3
  export * from './core/query';
3
4
  export * from './core/cache';
4
5
  export * from './core/stores';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,CAAA;AAGjB,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAE7B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAG/B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAEhC,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAEhC,cAAc,YAAY,CAAA;AAG1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AAEjC,cAAc,cAAc,CAAA;AAG5B,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AAEnC,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AAGnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AAErC,cAAc,YAAY,CAAA;AAE1B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAEhC,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AAEnC,cAAc,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,CAAA;AAEjB,cAAc,WAAW,CAAA;AAGzB,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAE7B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAG/B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAEhC,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAEhC,cAAc,YAAY,CAAA;AAG1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AAEjC,cAAc,cAAc,CAAA;AAG5B,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AAEnC,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AAGnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AAErC,cAAc,YAAY,CAAA;AAE1B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAEhC,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AAEnC,cAAc,cAAc,CAAA"}
package/dist/index.esm.js CHANGED
@@ -7,6 +7,10 @@ import io from 'socket.io-client';
7
7
  import mitt from 'mitt';
8
8
  import AsyncStorage from '@react-native-async-storage/async-storage';
9
9
 
10
+ var _a;
11
+ // used in createClient
12
+ const VERSION$1 = (_a = 'v0.0.1-beta.7-esm') !== null && _a !== void 0 ? _a : '__dev__';
13
+
10
14
  /**
11
15
  * Generic ASC error
12
16
  * @category Errors
@@ -408,6 +412,11 @@ const toToken = (paging, style) => {
408
412
  first: paging.limit,
409
413
  };
410
414
  }
415
+ else if (!isNaN(paging === null || paging === void 0 ? void 0 : paging.limit)) {
416
+ payload = {
417
+ last: paging.limit,
418
+ };
419
+ }
411
420
  }
412
421
  // avoid sending {} as it seems backend flips when we do
413
422
  if (!Object.keys(payload).length)
@@ -970,7 +979,12 @@ const createClient = (apiKey, apiEndpoint = 'https://api.amity.co', debugSession
970
979
  const ws = createWebsocketTransport(apiEndpoint);
971
980
  const emitter = createEventEmitter();
972
981
  const client = {
973
- apiKey, log, http, ws, emitter,
982
+ version: `${VERSION$1}`,
983
+ apiKey,
984
+ log,
985
+ http,
986
+ ws,
987
+ emitter,
974
988
  use: () => setActiveClient(client),
975
989
  };
976
990
  try {
@@ -1032,6 +1046,7 @@ const getToken = async (params) => {
1032
1046
  client.log('client/api/getToken', params);
1033
1047
  const deviceInfo = await getDeviceInfo();
1034
1048
  const { data } = await client.http.post('/v1/device', Object.assign(Object.assign({}, params), { deviceInfo }), {
1049
+ //@ts-ignore
1035
1050
  headers: { 'X-API-Key': client.apiKey }
1036
1051
  });
1037
1052
  return data;
@@ -1799,11 +1814,10 @@ const createFile = async (formData, onProgress) => {
1799
1814
  const deleteFile = async (fileId) => {
1800
1815
  const client = getActiveClient();
1801
1816
  client.log('file/deleteFile', fileId);
1817
+ // API-FIX: payload is different than swagger docs!!
1802
1818
  const { data } = await client.http.delete(`/api/v3/files/${fileId}`);
1803
- const { success } = data;
1804
- if (success)
1805
- mergeInCache('file', { fileId, isDeleted: true });
1806
- return success;
1819
+ dropFromCache('file', { fileId: data.fileId });
1820
+ return { success: true };
1807
1821
  };
1808
1822
 
1809
1823
  /**
@@ -2980,9 +2994,9 @@ const removeCommunityMembersRole = async (communityId, roleId, userIds) => {
2980
2994
  * @async
2981
2995
  */
2982
2996
  const deletePost = async (postId, permanent = false) => {
2983
- var _a;
2984
2997
  const client = getActiveClient();
2985
2998
  client.log('post/deletePost', postId);
2999
+ let post = await getPost(postId);
2986
3000
  // API-FIX: This endpoint has not been implemented yet.
2987
3001
  await client.http.delete(`/api/v4/posts/${postId}`, {
2988
3002
  params: {
@@ -2990,26 +3004,25 @@ const deletePost = async (postId, permanent = false) => {
2990
3004
  permanent,
2991
3005
  },
2992
3006
  });
2993
- let deleted;
2994
- try {
2995
- // API-FIX: as for now we have no choice but to refetch
2996
- deleted = await getPost(postId);
2997
- }
2998
- catch (error) {
2999
- if (((_a = error) === null || _a === void 0 ? void 0 : _a.code) === 400400 /* ITEM_NOT_FOUND */) {
3000
- // there is currently a limitation which doesnt allow us to fire event to tell that community
3001
- // has been updated. reason is that, when the object is deleted, we don't have its `communityId`
3002
- // and so we cannot refetch the community or advertise on events. hopefully this should be solved
3003
- // later when realtime events covers that for us.
3004
- return { success: true };
3005
- }
3006
- throw (error);
3007
- }
3008
- if (deleted.targetType === 'community') {
3009
- const community = await getCommunity(deleted.targetId);
3007
+ // there is currently a limitation which doesn't allow us to fire event to tell that community
3008
+ // has been updated. reason is that, when the object is deleted, we don't have its `communityId`
3009
+ // and so we cannot refetch the community or advertise on events. hopefully this should be solved
3010
+ // later when realtime events covers that for us.
3011
+ if (post.targetType === 'community') {
3012
+ const community = await getCommunity(post.targetId);
3010
3013
  fireEvent('v3.community.didUpdate', { communities: [community] });
3011
3014
  }
3015
+ // to support hard deletion
3016
+ const deleted = Object.assign(Object.assign({}, post), { isDeleted: true });
3012
3017
  fireEvent('v3.post.didDelete', { posts: [deleted] });
3018
+ if (permanent) {
3019
+ setTimeout(() => {
3020
+ dropFromCache('post', { postId });
3021
+ }, 0);
3022
+ }
3023
+ else {
3024
+ mergeInCache('post', { postId, isDeleted: true });
3025
+ }
3013
3026
  return deleted;
3014
3027
  };
3015
3028
 
@@ -3070,8 +3083,6 @@ queryComments.locally = (query) => {
3070
3083
  const client = getActiveClient();
3071
3084
  client.log('post/queryComments.locally', query);
3072
3085
  const { referenceId, referenceType, parentId, isDeleted, page = { before: 0, limit: 5 }, } = query;
3073
- if (isNaN(page.after) && isNaN(page.before))
3074
- page.before = 0;
3075
3086
  if (isNaN(page.limit))
3076
3087
  page.limit = 5;
3077
3088
  let comments = (_a = pullFromCache('comment')) !== null && _a !== void 0 ? _a : [];
@@ -3101,8 +3112,8 @@ queryComments.locally = (query) => {
3101
3112
  if (afterIndex < 0 || beforeIndex < 0)
3102
3113
  return;
3103
3114
  let slice = comments.slice(afterIndex !== -1 ? afterIndex : 0, beforeIndex !== -1 ? beforeIndex : undefined);
3104
- // nothing left after slicing
3105
- if (!slice.length)
3115
+ // check if slice data is correct (complete)
3116
+ if (slice.length < page.limit)
3106
3117
  return;
3107
3118
  if (!isNaN(page.after) && !isNaN(page.before)) ;
3108
3119
  else if (!isNaN(page.after)) {
@@ -3111,16 +3122,20 @@ queryComments.locally = (query) => {
3111
3122
  else if (!isNaN(page.before)) {
3112
3123
  slice = slice.slice(-page.limit);
3113
3124
  }
3125
+ else {
3126
+ slice = slice.slice(-page.limit);
3127
+ }
3114
3128
  for (let i = 0; i < slice.length - 1; i++)
3115
3129
  if (slice[i].segmentNumber !== slice[i + 1].segmentNumber - 1)
3116
3130
  return;
3117
3131
  const prevPage = slice[0].segmentNumber > 1
3118
3132
  ? { before: slice[0].segmentNumber, limit: page.limit }
3119
3133
  : undefined;
3120
- const nextPage = {
3121
- after: slice[slice.length - 1].segmentNumber,
3122
- limit: page.limit,
3123
- };
3134
+ const nextPage = slice[slice.length - 1].segmentNumber < comments[comments.length - 1].segmentNumber
3135
+ ? {
3136
+ after: slice[slice.length - 1].segmentNumber,
3137
+ limit: page.limit,
3138
+ } : undefined;
3124
3139
  return { data: toRecord(slice), nextPage, prevPage };
3125
3140
  };
3126
3141
 
@@ -3185,10 +3200,21 @@ getComments.locally = (commentIds) => {
3185
3200
  * @async
3186
3201
  */
3187
3202
  const getComment = async (commentId) => {
3203
+ var _a;
3188
3204
  const client = getActiveClient();
3189
3205
  client.log('comment/getComment', commentId);
3190
- // API-FIX: endpoint should not be /list, parameters should be querystring.
3191
- const { data } = await client.http.get(`/api/v3/comments/${commentId}`);
3206
+ let data;
3207
+ try {
3208
+ // API-FIX: endpoint should not be /list, parameters should be querystring.
3209
+ const response = await client.http.get(`/api/v3/comments/${commentId}`);
3210
+ data = response.data;
3211
+ }
3212
+ catch (error) {
3213
+ if (((_a = error) === null || _a === void 0 ? void 0 : _a.code) === 400400 /* ITEM_NOT_FOUND */) {
3214
+ dropFromCache('comment', { commentId });
3215
+ }
3216
+ throw error;
3217
+ }
3192
3218
  decoratePayload(data);
3193
3219
  ingestInCache(data);
3194
3220
  const { comments } = data;
@@ -3284,15 +3310,30 @@ const updateComment = async (commentId, patch) => {
3284
3310
  * @category Comment API
3285
3311
  * @async
3286
3312
  */
3287
- const deleteComment = async (commentId) => {
3313
+ const deleteComment = async (commentId, permanent = false) => {
3288
3314
  const client = getActiveClient();
3289
3315
  client.log('comment/deleteComment', commentId);
3316
+ const comment = await getComment(commentId);
3290
3317
  // API-FIX: This endpoint has not been implemented yet.
3291
- await client.http.delete(`/api/v3/comments/${commentId}`);
3292
- const deleted = await getComment(commentId);
3293
- const post = await getPost(deleted.referenceId);
3318
+ await client.http.delete(`/api/v4/comments/${commentId}`, {
3319
+ params: {
3320
+ commentId,
3321
+ permanent,
3322
+ },
3323
+ });
3324
+ // to support hard deletion
3325
+ const deleted = Object.assign(Object.assign({}, comment), { isDeleted: true });
3326
+ const post = await getPost(comment.referenceId);
3294
3327
  fireEvent('v3.post.didUpdate', { posts: [post] });
3295
3328
  fireEvent('v3.comment.didDelete', { comments: [deleted] });
3329
+ if (permanent) {
3330
+ setTimeout(() => {
3331
+ dropFromCache('comment', { commentId });
3332
+ }, 0);
3333
+ }
3334
+ else {
3335
+ mergeInCache('comment', { commentId, isDeleted: true });
3336
+ }
3296
3337
  return deleted;
3297
3338
  };
3298
3339
 
@@ -5017,4 +5058,4 @@ const disposeStream = async (streamId) => {
5017
5058
  return videoStreamings.find(stream => stream.streamId === streamId);
5018
5059
  };
5019
5060
 
5020
- export { addChannelMembers, addChannelMembersRole, addCommunityMembers, addCommunityMembersRole, addReaction, clearCache, connectClient, createCache, createChannel, createClient, createComment, createCommunity, createFile, createMessage, createPost, createQuery, createReport, createStream, decorateModel, decorateModels, decoratePayload, deleteChannel, deleteComment, deleteCommunity, deleteFile, deleteMessage, deletePost, deleteReport, deleteStream, disconnectClient, disposeStream, dropFromCache, enableCache, fileUrlWithSize, filterByPropEquality, getActiveClient, getChannel, getChannels, getComment, getComments, getCommunities, getCommunity, getFile, getMessage, getMessages, getPost, getPosts, getRole, getStream, getUser, getUsers, ingestInCache, isAfterBefore, isConnected, isFetcher, isFresh, isLocal, isMutator, isOffline, isPaged, isReportedByMe, isSkipLimit, isSyncable, isSynced, joinChannel, joinCommunity, leaveChannel, leaveCommunity, memoryStore, memoryStores, mergeInCache, mutateCache, observeChannel, observeComment, observeComments, observeCommunity, observeFile, observeMessage, observeMessages, observePost, observePosts, observeUser, onChannelDeleted, onChannelJoined, onChannelLeft, onChannelUpdated, onClientBanned, onClientDisconnected, onCommentCreated, onCommentDeleted, onCommentUpdated, onCommunityCreated, onCommunityDeleted, onCommunityJoined, onCommunityLeft, onCommunityUpdated, onConnectionError, onMemberAdded, onMemberRemoved, onMessageCreated, onMessageDeleted, onMessageUpdated, onPostCreated, onPostDeleted, onPostUpdated, onReactionRemoved, onUserUpdated, persistentStore, pullFromCache, pushToCache, queryChannelMembers, queryChannels, queryComments, queryCommunities, queryCommunityMembers, queryGlobalFeed, queryMessages, queryOptions, queryPosts, queryRoles, queryStreams, queryUsers, removeChannelMembers, removeChannelMembersRole, removeCommunityMembers, removeCommunityMembersRole, removeReaction, runQuery, sliceByPaging, sortByChannelSegment, sortByDisplayName, sortByFirstCreated, sortByLastActivity, sortByLastCreated, sortBySegmentNumber, syncInCache, toPage, toToken, updateChannel, updateComment, updateCommunity, updateMessage, updatePost, updateStream, updateUser };
5061
+ export { VERSION$1 as VERSION, addChannelMembers, addChannelMembersRole, addCommunityMembers, addCommunityMembersRole, addReaction, clearCache, connectClient, createCache, createChannel, createClient, createComment, createCommunity, createFile, createMessage, createPost, createQuery, createReport, createStream, decorateModel, decorateModels, decoratePayload, deleteChannel, deleteComment, deleteCommunity, deleteFile, deleteMessage, deletePost, deleteReport, deleteStream, disconnectClient, disposeStream, dropFromCache, enableCache, fileUrlWithSize, filterByPropEquality, getActiveClient, getChannel, getChannels, getComment, getComments, getCommunities, getCommunity, getFile, getMessage, getMessages, getPost, getPosts, getRole, getStream, getUser, getUsers, ingestInCache, isAfterBefore, isConnected, isFetcher, isFresh, isLocal, isMutator, isOffline, isPaged, isReportedByMe, isSkipLimit, isSyncable, isSynced, joinChannel, joinCommunity, leaveChannel, leaveCommunity, memoryStore, memoryStores, mergeInCache, mutateCache, observeChannel, observeComment, observeComments, observeCommunity, observeFile, observeMessage, observeMessages, observePost, observePosts, observeUser, onChannelDeleted, onChannelJoined, onChannelLeft, onChannelUpdated, onClientBanned, onClientDisconnected, onCommentCreated, onCommentDeleted, onCommentUpdated, onCommunityCreated, onCommunityDeleted, onCommunityJoined, onCommunityLeft, onCommunityUpdated, onConnectionError, onMemberAdded, onMemberRemoved, onMessageCreated, onMessageDeleted, onMessageUpdated, onPostCreated, onPostDeleted, onPostUpdated, onReactionRemoved, onUserUpdated, persistentStore, pullFromCache, pushToCache, queryChannelMembers, queryChannels, queryComments, queryCommunities, queryCommunityMembers, queryGlobalFeed, queryMessages, queryOptions, queryPosts, queryRoles, queryStreams, queryUsers, removeChannelMembers, removeChannelMembersRole, removeCommunityMembers, removeCommunityMembersRole, removeReaction, runQuery, sliceByPaging, sortByChannelSegment, sortByDisplayName, sortByFirstCreated, sortByLastActivity, sortByLastCreated, sortBySegmentNumber, syncInCache, toPage, toToken, updateChannel, updateComment, updateCommunity, updateMessage, updatePost, updateStream, updateUser };