@amityco/ts-sdk-react-native 6.25.2-843ba7e.0 → 6.26.1-4e1acd6.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 (68) hide show
  1. package/dist/@types/core/model.d.ts +4 -0
  2. package/dist/@types/core/model.d.ts.map +1 -1
  3. package/dist/@types/core/payload.d.ts +7 -0
  4. package/dist/@types/core/payload.d.ts.map +1 -1
  5. package/dist/@types/domains/ad.d.ts +74 -0
  6. package/dist/@types/domains/ad.d.ts.map +1 -0
  7. package/dist/@types/domains/analytics.d.ts +3 -1
  8. package/dist/@types/domains/analytics.d.ts.map +1 -1
  9. package/dist/@types/index.d.ts +2 -0
  10. package/dist/@types/index.d.ts.map +1 -1
  11. package/dist/adRepository/api/getNetworkAds.d.ts +2 -0
  12. package/dist/adRepository/api/getNetworkAds.d.ts.map +1 -0
  13. package/dist/adRepository/api/index.d.ts +2 -0
  14. package/dist/adRepository/api/index.d.ts.map +1 -0
  15. package/dist/adRepository/index.d.ts +2 -0
  16. package/dist/adRepository/index.d.ts.map +1 -0
  17. package/dist/analytic/service/analytic/AnalyticsEngine.d.ts +2 -0
  18. package/dist/analytic/service/analytic/AnalyticsEngine.d.ts.map +1 -1
  19. package/dist/analytic/service/analytic/AnalyticsEventCapturer.d.ts +3 -0
  20. package/dist/analytic/service/analytic/AnalyticsEventCapturer.d.ts.map +1 -1
  21. package/dist/client/api/getToken.d.ts +1 -1
  22. package/dist/client/api/getToken.d.ts.map +1 -1
  23. package/dist/commentRepository/observers/getComments/CommentLiveCollectionController.d.ts +14 -0
  24. package/dist/commentRepository/observers/getComments/CommentLiveCollectionController.d.ts.map +1 -0
  25. package/dist/commentRepository/observers/getComments/CommentPaginationController.d.ts +5 -0
  26. package/dist/commentRepository/observers/getComments/CommentPaginationController.d.ts.map +1 -0
  27. package/dist/commentRepository/observers/getComments/CommentQueryStreamController.d.ts +15 -0
  28. package/dist/commentRepository/observers/getComments/CommentQueryStreamController.d.ts.map +1 -0
  29. package/dist/commentRepository/observers/getComments/enums.d.ts +10 -0
  30. package/dist/commentRepository/observers/getComments/enums.d.ts.map +1 -0
  31. package/dist/commentRepository/observers/getComments.d.ts.map +1 -1
  32. package/dist/commentRepository/utils/payload.d.ts +2 -0
  33. package/dist/commentRepository/utils/payload.d.ts.map +1 -0
  34. package/dist/core/model/idResolvers.d.ts.map +1 -1
  35. package/dist/core/model/index.d.ts.map +1 -1
  36. package/dist/index.cjs.js +309 -169
  37. package/dist/index.d.ts +1 -0
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.esm.js +293 -154
  40. package/dist/index.umd.js +3 -3
  41. package/dist/utils/linkedObject/adLinkedObject.d.ts +2 -0
  42. package/dist/utils/linkedObject/adLinkedObject.d.ts.map +1 -0
  43. package/dist/utils/linkedObject/index.d.ts +1 -0
  44. package/dist/utils/linkedObject/index.d.ts.map +1 -1
  45. package/package.json +1 -1
  46. package/src/@types/core/model.ts +6 -0
  47. package/src/@types/core/payload.ts +12 -0
  48. package/src/@types/domains/ad.ts +88 -0
  49. package/src/@types/domains/analytics.ts +2 -0
  50. package/src/@types/index.ts +2 -0
  51. package/src/adRepository/api/getNetworkAds.ts +24 -0
  52. package/src/adRepository/api/index.ts +1 -0
  53. package/src/adRepository/index.ts +1 -0
  54. package/src/analytic/service/analytic/AnalyticsEngine.ts +18 -0
  55. package/src/analytic/service/analytic/AnalyticsEventCapturer.ts +49 -8
  56. package/src/client/api/getToken.ts +1 -1
  57. package/src/client/api/login.ts +1 -1
  58. package/src/commentRepository/observers/getComments/CommentLiveCollectionController.ts +132 -0
  59. package/src/commentRepository/observers/getComments/CommentPaginationController.ts +25 -0
  60. package/src/commentRepository/observers/getComments/CommentQueryStreamController.ts +90 -0
  61. package/src/commentRepository/observers/getComments/enums.ts +9 -0
  62. package/src/commentRepository/observers/getComments.ts +5 -141
  63. package/src/commentRepository/utils/payload.ts +5 -0
  64. package/src/core/model/idResolvers.ts +3 -0
  65. package/src/core/model/index.ts +2 -0
  66. package/src/index.ts +3 -0
  67. package/src/utils/linkedObject/adLinkedObject.ts +50 -0
  68. package/src/utils/linkedObject/index.ts +2 -0
@@ -1,34 +1,7 @@
1
- /* eslint-disable no-use-before-define */
2
- import { getResolver } from '~/core/model';
3
1
  import { getActiveClient } from '~/client/api';
4
- import { dropFromCache, pullFromCache, pushToCache } from '~/cache/api';
2
+ import { dropFromCache } from '~/cache/api';
5
3
 
6
- import {
7
- createQuery,
8
- filterByPropEquality,
9
- queryOptions,
10
- runQuery,
11
- sortByFirstCreated,
12
- sortByLastCreated,
13
- } from '~/core/query';
14
-
15
- import {
16
- COLLECTION_DEFAULT_CACHING_POLICY,
17
- COLLECTION_DEFAULT_PAGINATION_LIMIT,
18
- } from '~/utils/constants';
19
-
20
- import { CACHE_SHORTEN_LIFESPAN } from '~/cache/utils';
21
- import { LinkedObject } from '~/utils/linkedObject';
22
- import {
23
- onCommentCreated,
24
- onCommentDeleted,
25
- onCommentFlagged,
26
- onCommentReactionAdded,
27
- onCommentReactionRemoved,
28
- onCommentUnflagged,
29
- onCommentUpdated,
30
- } from '../events';
31
- import { queryComments } from '../internalApi/queryComments';
4
+ import { CommentLiveCollectionController } from './getComments/CommentLiveCollectionController';
32
5
 
33
6
  /* begin_public_function
34
7
  id: comment.query
@@ -67,120 +40,11 @@ export const getComments = (
67
40
  const timestamp = Date.now();
68
41
  log(`getComments(tmpid: ${timestamp}) > listen`);
69
42
 
70
- const { limit: queryLimit, ...queryParams } = params;
71
-
72
- const limit = queryLimit ?? COLLECTION_DEFAULT_PAGINATION_LIMIT;
73
- const { policy = COLLECTION_DEFAULT_CACHING_POLICY } = config ?? {};
74
-
75
- const disposers: Amity.Unsubscriber[] = [];
76
-
77
- const sortBy = params.sortBy ? params.sortBy : 'lastCreated';
78
- const cacheKey = [
79
- 'comment',
80
- 'collection',
81
- {
82
- referenceId: params.referenceType,
83
- referenceType: params.referenceId,
84
- parentId: params?.parentId || '',
85
- sortBy,
86
- },
87
- ];
88
-
89
- const responder = (data: Amity.CommentLiveCollectionCache) => {
90
- let comments: Amity.InternalComment[] =
91
- data.data
92
- .map(commentId => pullFromCache<Amity.InternalComment>(['comment', 'get', commentId])!)
93
- .filter(({ data }) => data.parentId === params?.parentId)
94
- .filter(Boolean)
95
- .map(({ data }) => LinkedObject.comment(data)) ?? [];
96
-
97
- if (!params.includeDeleted) {
98
- comments = filterByPropEquality(comments, 'isDeleted', false);
99
- }
100
-
101
- comments = comments.sort(sortBy === 'lastCreated' ? sortByLastCreated : sortByFirstCreated);
102
-
103
- callback({
104
- onNextPage: onFetch,
105
- data: comments,
106
- hasNextPage: !!data.params?.page,
107
- loading: data.loading,
108
- error: data.error,
109
- });
110
- };
111
-
112
- const realtimeRouter = (action: Amity.CommentActionType) => (comment: Amity.InternalComment) => {
113
- const collection = pullFromCache<Amity.CommentLiveCollectionCache>(cacheKey)?.data;
114
-
115
- if (
116
- params.referenceId !== comment.referenceId ||
117
- params.referenceType !== comment.referenceType ||
118
- !collection
119
- ) {
120
- return;
121
- }
122
-
123
- if (action === 'onCreate') {
124
- collection.data = [...new Set([comment.commentId, ...collection.data])];
125
- } else if (action === 'onDelete') {
126
- collection.data = collection.data.filter(p => p !== comment.commentId);
127
- }
128
-
129
- pushToCache(cacheKey, collection);
130
-
131
- responder(collection);
132
- };
133
-
134
- const onFetch = (initial = false) => {
135
- const collection = pullFromCache<Amity.CommentLiveCollectionCache>(cacheKey)?.data;
136
-
137
- const comments = collection?.data ?? [];
138
-
139
- if (!initial && comments.length > 0 && !collection?.params?.page) return;
140
-
141
- const query = createQuery(queryComments, {
142
- ...queryParams,
143
- limit: queryLimit,
144
- page: !initial ? collection?.params.page : undefined,
145
- });
146
-
147
- runQuery(
148
- query,
149
- ({ data: result, error, loading, paging }) => {
150
- const page = paging?.next;
151
-
152
- const data = {
153
- loading,
154
- error,
155
- params: { page },
156
- data: comments,
157
- };
158
-
159
- if (result) {
160
- data.data = initial
161
- ? result.map(getResolver('comment')) // Replace a collection list with new data from BE
162
- : [...new Set([...comments, ...result.map(getResolver('comment'))])];
163
- }
164
-
165
- pushToCache(cacheKey, data);
166
-
167
- responder(data);
168
- },
169
- queryOptions(policy, CACHE_SHORTEN_LIFESPAN),
170
- );
171
- };
43
+ const commentsLiveCollection = new CommentLiveCollectionController(params, callback);
44
+ const disposers = commentsLiveCollection.startSubscription();
172
45
 
173
- disposers.push(
174
- onCommentCreated(realtimeRouter('onCreate')),
175
- onCommentUpdated(realtimeRouter('onUpdate')),
176
- onCommentDeleted(realtimeRouter('onDelete')),
177
- onCommentFlagged(realtimeRouter('onFlagged')),
178
- onCommentUnflagged(realtimeRouter('onUnflagged')),
179
- onCommentReactionAdded(realtimeRouter('onReactionAdded')),
180
- onCommentReactionRemoved(realtimeRouter('onReactionRemoved')),
181
- );
46
+ const cacheKey = commentsLiveCollection.getCacheKey();
182
47
 
183
- onFetch(true);
184
48
  disposers.push(() => dropFromCache(cacheKey));
185
49
 
186
50
  return () => {
@@ -0,0 +1,5 @@
1
+ export function prepareCommentPayload(
2
+ comment: Amity.CommentPayload,
3
+ ): Amity.ProcessedCommentPayload {
4
+ return comment;
5
+ }
@@ -53,6 +53,9 @@ const idResolvers: Resolvers = {
53
53
  feed: ({ targetId, feedId }) => `${targetId}#${feedId}`,
54
54
  story: ({ referenceId }) => referenceId!,
55
55
  storyTarget: ({ targetId }) => targetId,
56
+
57
+ ad: ({ adId }) => adId,
58
+ advertiser: ({ advertiserId }) => advertiserId,
56
59
  };
57
60
 
58
61
  /**
@@ -47,6 +47,8 @@ export const PAYLOAD2MODEL: Record<string, Amity.Domain> = {
47
47
  followCounts: 'followCount',
48
48
 
49
49
  feeds: 'feed',
50
+ ads: 'ad',
51
+ advertisers: 'advertiser',
50
52
  };
51
53
 
52
54
  /** hidden */
package/src/index.ts CHANGED
@@ -44,5 +44,8 @@ export * as LiveStreamPlayer from './liveStreamPlayer';
44
44
 
45
45
  export * as StoryRepository from './storyRepository';
46
46
 
47
+ // Premium Ads
48
+ export * as AdRepository from './adRepository';
49
+
47
50
  // // external apis
48
51
  export * from './external/api';
@@ -0,0 +1,50 @@
1
+ import { pullFromCache } from '~/cache/api';
2
+ // import AnalyticsEngine from '~/analytic/service/analytic/AnalyticsEngine';
3
+
4
+ export const adLinkedObject = (ad: Amity.RawAd): Amity.Ad => {
5
+ // const analyticsEngineInstance = AnalyticsEngine.getInstance();
6
+ const { image9_16: image916, image1_1: image11, ...restAds } = ad;
7
+ return {
8
+ ...restAds,
9
+ // analytics: {
10
+ // markAsSeen: (placement: Amity.AdPlacement) => {
11
+ // analyticsEngineInstance.markAdAsViewed(ad, placement);
12
+ // },
13
+ // markLinkAsClicked: (placement: Amity.AdPlacement) => {
14
+ // analyticsEngineInstance.markAdAsClicked(ad, placement);
15
+ // },
16
+ // },
17
+ get advertiser(): Amity.Advertiser | undefined {
18
+ const advertiserData = pullFromCache<Amity.RawAdvertiser>([
19
+ 'advertiser',
20
+ 'get',
21
+ ad.advertiserId,
22
+ ])?.data;
23
+
24
+ if (!advertiserData) return;
25
+
26
+ const avatarFile = pullFromCache<Amity.File<'image'>>([
27
+ 'file',
28
+ 'get',
29
+ advertiserData.avatarFileId,
30
+ ])?.data;
31
+
32
+ return {
33
+ ...advertiserData,
34
+ avatar: avatarFile,
35
+ };
36
+ },
37
+
38
+ get image1_1(): Amity.File<'image'> | undefined {
39
+ const cacheData = pullFromCache<Amity.File<'image'>>(['file', 'get', image11]);
40
+ if (!cacheData) return undefined;
41
+ return cacheData.data || undefined;
42
+ },
43
+
44
+ get image9_16(): Amity.File<'image'> | undefined {
45
+ const cacheData = pullFromCache<Amity.File<'image'>>(['file', 'get', image916]);
46
+ if (!cacheData) return undefined;
47
+ return cacheData.data || undefined;
48
+ },
49
+ };
50
+ };
@@ -8,8 +8,10 @@ import { messageLinkedObject } from './messageLinkedObject';
8
8
  import { storyTargetLinkedObject } from './storyTargetLinkedObject';
9
9
  import { reactorLinkedObject } from './reactorLinkedObject';
10
10
  import { channelLinkedObject } from './channelLinkedObject';
11
+ import { adLinkedObject } from './adLinkedObject';
11
12
 
12
13
  export const LinkedObject = {
14
+ ad: adLinkedObject,
13
15
  comment: commentLinkedObject,
14
16
  post: postLinkedObject,
15
17
  user: userLinkedObject,