@amityco/ts-sdk-react-native 7.8.2-423c4c9.0 → 7.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.env CHANGED
@@ -1,28 +1,28 @@
1
1
  LIVE_STREAM_KEY='-----BEGIN PRIVATE KEY-----
2
- MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDAARz+hmBgi8pJ
3
- Qb8LeY41gtHhk+ACMwRfhsn7GqpqRQNG2qU0755mzZuVDUqjQMGSo8THJB7O+OJs
4
- flbZRkFXlFoFOVNw1UpNOgwEQZ6wB9oRwzepTJAfF1sVhm/o/ixvXh1zDFNDy6yZ
5
- pXyiiJHUVxqyjllZhxnwdvjoVtDs6hW6awG09bB9nh/TTejlUKXoAgzqVwu/1QMu
6
- UVViET495elEe19aUarEy+oL2iKeXCEvqda/pWNBdbieFyJvvZ08HN8dPuT88wq2
7
- jZLEAth1vrwQ2IAa4ktaLcBQdLJgIkrbDvAiVZ8lQAjS/bq5vXQikTGvoPlC5bbn
8
- vuOM/3eLAgMBAAECggEAVZ+peHAghq2QVj71nX5lxsNCKaCyYwixSJBpfouTt7Rz
9
- E6PpzMOXFi1W1o+I22jDakuSM2SOQKqI/u0QefB0r0O/KVk5NrZHXk0mkrdYtxOp
10
- UgaGyf8UvmjB+8VqHrNKyZdk9qtmbnNj01kTTcAtmE4H39zPR7eR/8Rul94vaZbs
11
- wCnKJS3mLT3JxyGug6lxanveKkjG+CKC1nJQYWaxCJxaFSzbwXQPvDhB+TvrIbee
12
- pd5v4EAyEJohpr+T9oDGGJkb/KARBZCtwLyB976PKJwwBA8MRVL1i5QwawuMiMq5
13
- UtnOnbGKtCeFzaLbNU0Qi8bqyims84EQxC6DOu1fkQKBgQDdvsoBsEhsOXV7hlIJ
14
- aEd0eSJZVkdqimxH8uGoMM2FeNaOrcB6yBXqTSP0R3OIyf8eaY6yjRvP30ZNXcll
15
- /gD3O1Mu6YmWQdt1W2WA6pKOsUuPXasf0pdOF7IiFZKlSabz5YHXFqwVuqm8loaj
16
- sXel3YWqPVdHiankE7tz+3ssnQKBgQDdqi4TNdD1MdEpihx19jr0QjUiXW3939FK
17
- qp30HESPEGDGQzXdmJgif9HhZb+cJSuWaHEbjgBrYahvgCF+y6LbEpOD+D/dmT+s
18
- DEAQaR84sah6dokwPjV8fjBSrcVFjCS+doxv0d3p/9OUEeyUhFrY03nxtIEYkLIE
19
- /Zvn37b4RwKBgQCLENVFe9XfsaVhQ5r9dV2iyTlmh7qgMZG5CbTFs12hQGhm8McO
20
- +Z7s41YSJCFr/yq1WwP4LJDtrBw99vyQr1zRsG35tNLp3gGRNzGQSQyC2uQFVHw2
21
- p+7mNewsfhUK/gbrXNsyFnDz6635rPlhfbII3sWuP2wWXFqkxE9CbMwR7QKBgQC6
22
- awDMzxmo2/iYArrkyevSuEuPVxvFwpF1RgAI6C0QVCnPE38dmdN4UB7mfHekje4W
23
- VEercMURidPp0cxZolCYBQtilUjAyL0vqC3In1/Ogjq6oy3FEMxSop1pKxMY5j+Q
24
- noqFD+6deLUrddeNH7J3X4LSr4dSbX4JjG+tlgt+yQKBgQCuwTL4hA6KqeInQ0Ta
25
- 9VQX5Qr8hFlqJz1gpymi/k63tW/Ob8yedbg3WWNWyShwRMFYyY9S81ITFWM95uL6
26
- vF3x9rmRjwElJw9PMwVu6dmf/CO0Z1wzXSp2VVD12gbrUD/0/d7MUoJ9LgC8X8f/
27
- n0txLHYGHbx+nf95+JUg6lV3hg==
2
+ MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDHo80SecH7FuF2
3
+ hFYnb+l26/VN8UMLXAQFLnxciNTEwkGVFMpdezlH8rU2HtUJL4RETogbAOLVY0XM
4
+ js6sPn8G1nALmh9qeDpUtVqFOVtBHxEZ910TLOtQiunjqJKO5nWdqZ71EC3OFluR
5
+ iGQkO84BiIFbv37ub7xl3S8XarbtKoLcyVpkDHi+1wx1pgCAn6gtBUgckPL5NR8j
6
+ Lseabl3HAXQfhTCKo4tmOFM2Dxwl1IUMmIJrJg/aIU/U0tj/1Eoo7mG0JcNWX19l
7
+ W3EecCbi0ncCJOrkUdwlBrcjaMayaX/ubEwyUeTGiLdyc4L3GRLHjyK8xgVNXRMH
8
+ bZWJ2a5NAgMBAAECggEASxuE+35zTFO/XydKgmvIGcWL9FbgMlXb7Vcf0nBoG945
9
+ biz0NVc2paraIhJXc608xbYF3qLmtAE1MVBI0ORyRdBHNxY024l/6H6SH60Ed+uI
10
+ M4ysp5ourY6Vj+DLwpdRiI9YDjqYAQDIUmhNxJP7XPhOMoZI6st+xZQBM34ic/bv
11
+ AMSJm9OZphSp3+qXVkFZztr2mxD2EZSJJLYxi8BCdgM2qhazalbcJ6zDKHCZWVWm
12
+ 8RRxDGldyMb/237JxETzP40tAlzOZDmBAbUgEnurDJ93RVDIE3rbZUshwgeQd18a
13
+ em096mWgvB1AIKYgsTAR3pw+V19YWAjq/glP6fz8wQKBgQD/oQq+ukKF0PRgBeM5
14
+ geTjSwsdGppQLmf5ndujvoiz/TpdjDEPu6R8kigQr1rG2t4K/yfdZoI8RdmJD1al
15
+ 3Q7N9hofooSy4rj6E3txzWZCHJjHad2cnCp/O26HiReGAl7wTcfTmNdiFHhZQzm5
16
+ JBkvWAiwuvQMNfEbnXxw6/vIDwKBgQDH7fX8gsc77JLvAWgp1MaQN/sbqVb6JeT1
17
+ FQfR8E/WFCSmzQBtNzd5KgYuCeelwr/8DyYytvN2BzCYZXp73gI1jF3YlW5jVn74
18
+ OY6TwQ095digwo6Z0yuxopdIOApKgAkL9PRKgNrqAf3NAyMua6lOGifzjDojC3KU
19
+ fylQmxMn4wKBgHp2B9O/H0dEBw5JQ8W0+JX6yWQz7mEjGiR2/1W+XXb8hQ1zr709
20
+ w1r6Gb+EghRpnZ3fBpYGGbYOMFx8wKHM+N6qW3F0ReX8v2juFGE8aRSa5oYBrWzt
21
+ U16Idjbv8hj84cZ1PJmdyvDtpYn9rpWHOZl4rxEbPvbqkIsOMyNVqdT5AoGAOSge
22
+ mwIIU2le2FVeohbibXiToWTYKMuMmURZ5/r72AgKMmWJKbAPe+Q3wBG01/7FRBpQ
23
+ oU8Ma0HC8s6QJbliiEyIx9JwrJWd1vkdecBHONrtA4ibm/5zD2WcOllLF+FitLhi
24
+ 3qnX6+6F0IaFGFBPJrTzlv0P4dTz/OAdv52V7GECgYEA2TttOKBAqWllgOaZOkql
25
+ LVMJVmgR7s6tLi1+cEP8ZcapV9aRbRzTAKXm4f8AEhtlG9F9kCOvHYCYGi6JaiWJ
26
+ ZkHjeex3T+eE6Di6y5Bm/Ift5jtVhJ4jCVwHOKTMej79NPUFTJfv8hCo29haBDv6
27
+ RXFrv+T21KCcw8k3sJeJWWQ=
28
28
  -----END PRIVATE KEY-----'
@@ -1 +1 @@
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
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/postRepository/events/utils.ts"],"names":[],"mappings":"AAkDA,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,18 +1,25 @@
1
1
  import { getActiveClient } from '~/client/api';
2
2
  import { ingestInCache } from '~/cache/api/ingestInCache';
3
3
  import { createEventSubscriber, fireEvent } from '~/core/events';
4
- import { dropFromCache, pullFromCache, pushToCache, queryCache, upsertInCache } from '~/cache/api';
4
+ import { dropFromCache, mergeInCache, pullFromCache, pushToCache, queryCache, upsertInCache, } from '~/cache/api';
5
5
  import { isInTombstone } from '~/cache/api/isInTombstone';
6
6
  import { preparePostPayload } from '~/postRepository/utils/payload';
7
7
  const processDeleteChildPost = (payload) => {
8
8
  var _a;
9
9
  const post = payload.posts[0];
10
- if (!post.parentId)
11
- return;
12
- const parentPost = (_a = pullFromCache(['post', 'get', post.parentPostId])) === null || _a === void 0 ? void 0 : _a.data;
13
- if (!parentPost)
14
- return;
15
- pushToCache(['post', 'get', parentPost.postId], Object.assign(Object.assign({}, parentPost), { children: parentPost.children.filter(childId => childId !== post.postId) }));
10
+ if (!post.parentId) {
11
+ // post is parent post => should mark child post as delete as well
12
+ post.children.forEach(childrenId => mergeInCache(['post', 'get', childrenId], {
13
+ isDeleted: true,
14
+ }));
15
+ }
16
+ else {
17
+ // child post in a parent post
18
+ const parentPost = (_a = pullFromCache(['post', 'get', post.parentPostId])) === null || _a === void 0 ? void 0 : _a.data;
19
+ if (!parentPost)
20
+ return;
21
+ pushToCache(['post', 'get', parentPost.postId], Object.assign(Object.assign({}, parentPost), { children: parentPost.children.filter(childId => childId !== post.postId) }));
22
+ }
16
23
  };
17
24
  const processCreateChildPost = (payload) => {
18
25
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/postRepository/events/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { getActiveClient } from '~/client/api';\nimport { ingestInCache } from '~/cache/api/ingestInCache';\nimport { createEventSubscriber, fireEvent } from '~/core/events';\nimport { dropFromCache, pullFromCache, pushToCache, queryCache, upsertInCache } from '~/cache/api';\nimport { isInTombstone } from '~/cache/api/isInTombstone';\nimport { preparePostPayload } from '~/postRepository/utils/payload';\n\nconst processDeleteChildPost = (payload: Amity.PostPayload) => {\n const post = payload.posts[0];\n if (!post.parentId) return;\n\n const parentPost = pullFromCache<Amity.InternalPost>(['post', 'get', post.parentPostId])?.data;\n\n if (!parentPost) return;\n\n pushToCache(['post', 'get', parentPost.postId], {\n ...parentPost,\n children: parentPost.children.filter(childId => childId !== post.postId),\n });\n};\n\nconst processCreateChildPost = (payload: Amity.PostPayload) => {\n const post = payload.posts[0];\n if (!post.parentId) return;\n\n const parentPost = pullFromCache<Amity.InternalPost>(['post', 'get', post.parentPostId])?.data;\n\n if (!parentPost) return;\n\n pushToCache(['post', 'get', parentPost.postId], {\n ...parentPost,\n children: [...new Set([post.postId, ...parentPost.children])],\n });\n};\n\nexport const createPostEventSubscriber = (\n event: keyof Amity.MqttPostEvents,\n callback: Amity.Listener<Amity.InternalPost>,\n) => {\n const client = getActiveClient();\n\n const filter = (payload: Amity.PostPayload) => {\n if (!client.cache) {\n callback(payload.posts[0]);\n } else {\n const data = preparePostPayload(payload);\n\n const { communities } = data;\n\n // NOTE: The event data should be merge with existing cache rather than replace it\n ingestInCache(data, undefined, false);\n\n if (communities?.[0] && !['post.updated'].includes(event)) {\n fireEvent('community.updated', {\n communities,\n categories: [],\n communityUsers: data.communityUsers,\n feeds: [],\n files: [],\n users: [],\n });\n }\n\n if (event === 'post.deleted') {\n const { postId, postedUserId } = payload.posts[0];\n\n processDeleteChildPost(payload);\n\n try {\n isInTombstone('post', postId);\n } catch (e) {\n // Already in tombstone, skip to update client\n return;\n }\n\n // If this post NOT BELONG to current user, let **put it to tombstone in all cases**\n // For the case incoming post belong to current user, If from **different device will treat it as SOFT DELETE**\n // But for same device if it is soft delete it just need to handle as update cache\n // But if it is hard delete, it will pushed into tombstone before fire an event to BE. it means it will stay in tombstone already\n // and will got skip to notify in a previous code block\n if (postedUserId !== client.userId) {\n dropFromCache(['post', 'get', postId]);\n }\n\n return callback(payload.posts[0]);\n }\n\n const post = pullFromCache<Amity.InternalPost>(['post', 'get', payload.posts[0].postId])!;\n\n if (['post.created', 'post.approved', 'post.declined'].includes(event)) {\n let queries = queryCache(['post', 'query'])\n // @ts-ignore\n ?.filter(({ key }) => key[2]?.targetId === post.data.targetId);\n\n if (event === 'post.declined') {\n // @ts-ignore\n queries = queries?.filter(({ key }) => key[2]?.feedType === 'reviewing');\n }\n\n queries?.map(({ key, data }) => upsertInCache(key, data as any, { cachedAt: -1 }));\n }\n\n if (event === 'post.created') processCreateChildPost(payload);\n\n callback(post.data);\n }\n };\n\n return createEventSubscriber(client, event, event, filter);\n};\n\nexport const createLocalPostEventSubscriber = (\n event: keyof Omit<Amity.LocalPostEvents, 'local.post.addReaction' | 'local.post.removeReaction'>,\n callback: Amity.Listener<Amity.InternalPost>,\n) => {\n const client = getActiveClient();\n\n const filter = (payload: Amity.PostPayload) => {\n if (!client.cache) {\n callback(payload.posts[0]);\n } else {\n const data = preparePostPayload(payload);\n\n const { communities } = data;\n\n ingestInCache(data);\n\n if (communities?.[0] && !['local.post.updated'].includes(event)) {\n fireEvent('community.updated', {\n communities,\n categories: [],\n communityUsers: data.communityUsers,\n feeds: [],\n files: [],\n users: [],\n });\n }\n\n const post = pullFromCache<Amity.InternalPost>(['post', 'get', payload.posts[0].postId])!;\n\n if (event === 'local.post.deleted') processDeleteChildPost(payload);\n\n callback(post.data);\n }\n };\n\n return createEventSubscriber(client, event, event, filter);\n};\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/postRepository/events/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { getActiveClient } from '~/client/api';\nimport { ingestInCache } from '~/cache/api/ingestInCache';\nimport { createEventSubscriber, fireEvent } from '~/core/events';\nimport {\n dropFromCache,\n mergeInCache,\n pullFromCache,\n pushToCache,\n queryCache,\n upsertInCache,\n} from '~/cache/api';\nimport { isInTombstone } from '~/cache/api/isInTombstone';\nimport { preparePostPayload } from '~/postRepository/utils/payload';\n\nconst processDeleteChildPost = (payload: Amity.PostPayload) => {\n const post = payload.posts[0];\n if (!post.parentId) {\n // post is parent post => should mark child post as delete as well\n post.children.forEach(childrenId =>\n mergeInCache(['post', 'get', childrenId], {\n isDeleted: true,\n }),\n );\n } else {\n // child post in a parent post\n const parentPost = pullFromCache<Amity.InternalPost>(['post', 'get', post.parentPostId])?.data;\n\n if (!parentPost) return;\n\n pushToCache(['post', 'get', parentPost.postId], {\n ...parentPost,\n children: parentPost.children.filter(childId => childId !== post.postId),\n });\n }\n};\n\nconst processCreateChildPost = (payload: Amity.PostPayload) => {\n const post = payload.posts[0];\n if (!post.parentId) return;\n\n const parentPost = pullFromCache<Amity.InternalPost>(['post', 'get', post.parentPostId])?.data;\n\n if (!parentPost) return;\n\n pushToCache(['post', 'get', parentPost.postId], {\n ...parentPost,\n children: [...new Set([post.postId, ...parentPost.children])],\n });\n};\n\nexport const createPostEventSubscriber = (\n event: keyof Amity.MqttPostEvents,\n callback: Amity.Listener<Amity.InternalPost>,\n) => {\n const client = getActiveClient();\n\n const filter = (payload: Amity.PostPayload) => {\n if (!client.cache) {\n callback(payload.posts[0]);\n } else {\n const data = preparePostPayload(payload);\n\n const { communities } = data;\n\n // NOTE: The event data should be merge with existing cache rather than replace it\n ingestInCache(data, undefined, false);\n\n if (communities?.[0] && !['post.updated'].includes(event)) {\n fireEvent('community.updated', {\n communities,\n categories: [],\n communityUsers: data.communityUsers,\n feeds: [],\n files: [],\n users: [],\n });\n }\n\n if (event === 'post.deleted') {\n const { postId, postedUserId } = payload.posts[0];\n\n processDeleteChildPost(payload);\n\n try {\n isInTombstone('post', postId);\n } catch (e) {\n // Already in tombstone, skip to update client\n return;\n }\n\n // If this post NOT BELONG to current user, let **put it to tombstone in all cases**\n // For the case incoming post belong to current user, If from **different device will treat it as SOFT DELETE**\n // But for same device if it is soft delete it just need to handle as update cache\n // But if it is hard delete, it will pushed into tombstone before fire an event to BE. it means it will stay in tombstone already\n // and will got skip to notify in a previous code block\n if (postedUserId !== client.userId) {\n dropFromCache(['post', 'get', postId]);\n }\n\n return callback(payload.posts[0]);\n }\n\n const post = pullFromCache<Amity.InternalPost>(['post', 'get', payload.posts[0].postId])!;\n\n if (['post.created', 'post.approved', 'post.declined'].includes(event)) {\n let queries = queryCache(['post', 'query'])\n // @ts-ignore\n ?.filter(({ key }) => key[2]?.targetId === post.data.targetId);\n\n if (event === 'post.declined') {\n // @ts-ignore\n queries = queries?.filter(({ key }) => key[2]?.feedType === 'reviewing');\n }\n\n queries?.map(({ key, data }) => upsertInCache(key, data as any, { cachedAt: -1 }));\n }\n\n if (event === 'post.created') processCreateChildPost(payload);\n\n callback(post.data);\n }\n };\n\n return createEventSubscriber(client, event, event, filter);\n};\n\nexport const createLocalPostEventSubscriber = (\n event: keyof Omit<Amity.LocalPostEvents, 'local.post.addReaction' | 'local.post.removeReaction'>,\n callback: Amity.Listener<Amity.InternalPost>,\n) => {\n const client = getActiveClient();\n\n const filter = (payload: Amity.PostPayload) => {\n if (!client.cache) {\n callback(payload.posts[0]);\n } else {\n const data = preparePostPayload(payload);\n\n const { communities } = data;\n\n ingestInCache(data);\n\n if (communities?.[0] && !['local.post.updated'].includes(event)) {\n fireEvent('community.updated', {\n communities,\n categories: [],\n communityUsers: data.communityUsers,\n feeds: [],\n files: [],\n users: [],\n });\n }\n\n const post = pullFromCache<Amity.InternalPost>(['post', 'get', payload.posts[0].postId])!;\n\n if (event === 'local.post.deleted') processDeleteChildPost(payload);\n\n callback(post.data);\n }\n };\n\n return createEventSubscriber(client, event, event, filter);\n};\n"]}