@amityco/ts-sdk 6.10.0 → 6.10.1-50f2392.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 (45) hide show
  1. package/dist/@types/core/events.d.ts +2 -0
  2. package/dist/@types/core/events.d.ts.map +1 -1
  3. package/dist/@types/core/query.d.ts +5 -1
  4. package/dist/@types/core/query.d.ts.map +1 -1
  5. package/dist/@types/domains/channel.d.ts +1 -1
  6. package/dist/@types/domains/channel.d.ts.map +1 -1
  7. package/dist/@types/domains/subChannel.d.ts +4 -1
  8. package/dist/@types/domains/subChannel.d.ts.map +1 -1
  9. package/dist/channelRepsitory/channelMembership/observers/getMembers.d.ts.map +1 -1
  10. package/dist/channelRepsitory/channelModeration/api/addRole.d.ts.map +1 -1
  11. package/dist/channelRepsitory/channelModeration/api/removeRole.d.ts.map +1 -1
  12. package/dist/channelRepsitory/events/index.d.ts +2 -0
  13. package/dist/channelRepsitory/events/index.d.ts.map +1 -1
  14. package/dist/channelRepsitory/events/onChannelMemberRoleAdded.d.ts +17 -0
  15. package/dist/channelRepsitory/events/onChannelMemberRoleAdded.d.ts.map +1 -0
  16. package/dist/channelRepsitory/events/onChannelMemberRoleRemoved.d.ts +17 -0
  17. package/dist/channelRepsitory/events/onChannelMemberRoleRemoved.d.ts.map +1 -0
  18. package/dist/commentRepository/api/isCommentFlaggedByMe.d.ts.map +1 -1
  19. package/dist/core/events.d.ts +3 -3
  20. package/dist/core/events.d.ts.map +1 -1
  21. package/dist/core/query/paging.d.ts +8 -1
  22. package/dist/core/query/paging.d.ts.map +1 -1
  23. package/dist/index.cjs.js +77 -18
  24. package/dist/index.esm.js +77 -18
  25. package/dist/index.umd.js +1 -1
  26. package/dist/subChannelRepository/api/querySubChannels.d.ts +2 -2
  27. package/dist/subChannelRepository/api/querySubChannels.d.ts.map +1 -1
  28. package/dist/subChannelRepository/observers/getSubChannels.d.ts.map +1 -1
  29. package/package.json +1 -1
  30. package/src/@types/core/events.ts +2 -0
  31. package/src/@types/core/query.ts +2 -2
  32. package/src/@types/domains/channel.ts +3 -1
  33. package/src/@types/domains/subChannel.ts +2 -1
  34. package/src/channelRepsitory/channelMembership/observers/getMembers.ts +4 -0
  35. package/src/channelRepsitory/channelModeration/api/addRole.ts +3 -0
  36. package/src/channelRepsitory/channelModeration/api/removeRole.ts +3 -0
  37. package/src/channelRepsitory/events/index.ts +3 -0
  38. package/src/channelRepsitory/events/onChannelMemberRoleAdded.ts +35 -0
  39. package/src/channelRepsitory/events/onChannelMemberRoleRemoved.ts +41 -0
  40. package/src/commentRepository/api/isCommentFlaggedByMe.ts +4 -9
  41. package/src/commentRepository/api/queryComments.ts +1 -1
  42. package/src/commentRepository/observers/getComments.ts +1 -1
  43. package/src/core/query/paging.ts +3 -1
  44. package/src/subChannelRepository/api/querySubChannels.ts +18 -6
  45. package/src/subChannelRepository/observers/getSubChannels.ts +5 -4
@@ -13,7 +13,7 @@
13
13
  * @async
14
14
  */
15
15
  export declare const querySubChannels: {
16
- (query: Amity.QuerySubChannels): Promise<Amity.Cached<Amity.Paged<Amity.SubChannel>>>;
16
+ (query: Amity.QuerySubChannels): Promise<Amity.Cached<Amity.Paged<Amity.SubChannel>> & Amity.Pagination>;
17
17
  /**
18
18
  * ```js
19
19
  * import { querySubChannels } from '@amityco/ts-sdk'
@@ -27,6 +27,6 @@ export declare const querySubChannels: {
27
27
  *
28
28
  * @category Channel API
29
29
  */
30
- locally(query: Parameters<typeof querySubChannels>[0]): Amity.Cached<Amity.Paged<Amity.SubChannel>> | undefined;
30
+ locally(query: Parameters<typeof querySubChannels>[0]): Amity.Cached<Amity.Paged<Amity.SubChannel> & Amity.Pagination> | undefined;
31
31
  };
32
32
  //# sourceMappingURL=querySubChannels.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"querySubChannels.d.ts","sourceRoot":"","sources":["../../../src/subChannelRepository/api/querySubChannels.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gBAAgB;YACpB,MAAM,gBAAgB,GAC5B,QAAQ,MAAM,MAAM,CAAC,MAAM,KAAK,CAAC,MAAM,UAAU,CAAC,CAAC,CAAC;IA4CvD;;;;;;;;;;;;OAYG;mBAEM,WAAW,uBAAuB,CAAC,CAAC,CAAC,CAAC,GAC5C,MAAM,MAAM,CAAC,MAAM,KAAK,CAAC,MAAM,UAAU,CAAC,CAAC,GAAG,SAAS;CAlBzD,CAAC"}
1
+ {"version":3,"file":"querySubChannels.d.ts","sourceRoot":"","sources":["../../../src/subChannelRepository/api/querySubChannels.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gBAAgB;YACpB,MAAM,gBAAgB,GAC5B,QAAQ,MAAM,MAAM,CAAC,MAAM,KAAK,CAAC,MAAM,UAAU,CAAC,CAAC,GAAG,MAAM,UAAU,CAAC;IAwD1E;;;;;;;;;;;;OAYG;mBAEM,WAAW,uBAAuB,CAAC,CAAC,CAAC,CAAC,GAC5C,MAAM,MAAM,CAAC,MAAM,KAAK,CAAC,MAAM,UAAU,CAAC,GAAG,MAAM,UAAU,CAAC,GAAG,SAAS;CAlB5E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getSubChannels.d.ts","sourceRoot":"","sources":["../../../src/subChannelRepository/observers/getSubChannels.ts"],"names":[],"mappings":"AA4BA;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,cAAc,WACjB,MAAM,wBAAwB,YAC5B,MAAM,sBAAsB,CAAC,MAAM,UAAU,CAAC,WAC/C,MAAM,oBAAoB,eAqHpC,CAAC"}
1
+ {"version":3,"file":"getSubChannels.d.ts","sourceRoot":"","sources":["../../../src/subChannelRepository/observers/getSubChannels.ts"],"names":[],"mappings":"AA4BA;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,cAAc,WACjB,MAAM,wBAAwB,YAC5B,MAAM,sBAAsB,CAAC,MAAM,UAAU,CAAC,WAC/C,MAAM,oBAAoB,eAsHpC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amityco/ts-sdk",
3
- "version": "6.10.0",
3
+ "version": "6.10.1-50f2392.0",
4
4
  "license": "CC-BY-ND-4.0",
5
5
  "author": "amity.co <developers@amity.co> (https://amity.co)",
6
6
  "description": "Amity Social Cloud Typescript SDK",
@@ -152,6 +152,8 @@ declare global {
152
152
 
153
153
  type LocalEvents = {
154
154
  'local.channel.updated': MakeRequired<Amity.ProcessedChannelPayload, 'channels'>;
155
+ 'local.channel-moderator.role-added': Amity.ProcessedChannelPayload;
156
+ 'local.channel-moderator.role-removed': Amity.ProcessedChannelPayload;
155
157
  'local.message.created': MakeRequired<Amity.ProcessedMessagePayload, 'messages'>;
156
158
  'local.message.updated': MakeRequired<Amity.ProcessedMessagePayload, 'messages'>;
157
159
  'local.message.deleted': MakeRequired<Amity.ProcessedMessagePayload, 'messages'>;
@@ -47,12 +47,12 @@ declare global {
47
47
 
48
48
  type Snapshot<T> = (T extends Amity.Cached<infer T2>
49
49
  ? T2 extends Amity.Paged<infer T3, infer T4>
50
- ? { data: T3[] | undefined } & Amity.Pages<T4> & {
50
+ ? { data: T3[] | undefined } & Amity.Pages<T4> & { paging?: Amity.Pagination['paging'] } & {
51
51
  cachedAt?: Amity.CacheOptions['cachedAt'];
52
52
  }
53
53
  : { data: T2 } & { cachedAt?: Amity.CacheOptions['cachedAt'] }
54
54
  : T extends Amity.Paged<infer T3, infer T4>
55
- ? { data: T3[] | undefined } & Amity.Pages<T4>
55
+ ? { data: T3[] | undefined } & Amity.Pages<T4> & { paging?: Amity.Pagination['paging'] }
56
56
  : { data: T | undefined }) &
57
57
  SnapshotOptions;
58
58
 
@@ -11,7 +11,9 @@ declare global {
11
11
  | 'onMemberAdded'
12
12
  | 'onMemberRemoved'
13
13
  | 'onChannelMemberBanned'
14
- | 'onChannelMemberUnbanned';
14
+ | 'onChannelMemberUnbanned'
15
+ | 'onChannelMemberRoleAdded'
16
+ | 'onChannelMemberRoleRemoved';
15
17
 
16
18
  type ChannelActionType =
17
19
  | 'onFetch'
@@ -39,13 +39,14 @@ declare global {
39
39
  excludeDefaultSubChannel?: boolean;
40
40
  includeDeleted?: boolean;
41
41
  page?: Amity.Page;
42
+ pageToken?: string;
42
43
  };
43
44
 
44
45
  type SubChannelLiveCollection = Amity.LiveCollectionParams<Omit<QuerySubChannels, 'page'>>;
45
46
 
46
47
  type SubChannelLiveCollectionCache = Amity.LiveCollectionCache<
47
48
  Amity.SubChannel,
48
- Pick<QuerySubChannels, 'page'>
49
+ Pick<QuerySubChannels, 'page'> & { paging?: Amity.Pagination['paging'] }
49
50
  >;
50
51
  }
51
52
  }
@@ -22,6 +22,8 @@ import {
22
22
  onChannelMemberAdded,
23
23
  onChannelMemberBanned,
24
24
  onChannelMemberRemoved,
25
+ onChannelMemberRoleAdded,
26
+ onChannelMemberRoleRemoved,
25
27
  onChannelMemberUnbanned,
26
28
  } from '../../events';
27
29
  import { queryChannelMembers } from '../api/queryChannelMembers';
@@ -206,6 +208,8 @@ export const getMembers = (
206
208
  onChannelMemberRemoved(realtimeRouter('onMemberRemoved')),
207
209
  onChannelMemberBanned(realtimeRouter('onChannelMemberBanned')),
208
210
  onChannelMemberUnbanned(realtimeRouter('onChannelMemberUnbanned')),
211
+ onChannelMemberRoleAdded(realtimeRouter('onChannelMemberRoleAdded')),
212
+ onChannelMemberRoleRemoved(realtimeRouter('onChannelMemberRoleRemoved')),
209
213
  );
210
214
 
211
215
  onFetch(true);
@@ -3,6 +3,7 @@ import { getActiveClient } from '~/client/api';
3
3
  import { ingestInCache } from '~/cache/api/ingestInCache';
4
4
 
5
5
  import { prepareChannelPayload } from '../../utils';
6
+ import { fireEvent } from '~/core/events';
6
7
 
7
8
  /* begin_public_function
8
9
  id: channel.moderation.add_roles
@@ -40,6 +41,8 @@ export const addRole = async (
40
41
 
41
42
  if (client.cache) ingestInCache(data);
42
43
 
44
+ fireEvent('local.channel-moderator.role-added', data);
45
+
43
46
  const { channelUsers } = data;
44
47
  return !!channelUsers.find(
45
48
  channelUser => channelUser.channelId === channelId && channelUser.roles.includes(roleId),
@@ -3,6 +3,7 @@ import { getActiveClient } from '~/client/api';
3
3
  import { ingestInCache } from '~/cache/api/ingestInCache';
4
4
 
5
5
  import { prepareChannelPayload } from '../../utils';
6
+ import { fireEvent } from '~/core/events';
6
7
 
7
8
  /* begin_public_function
8
9
  id: channel.moderation.remove_roles
@@ -40,6 +41,8 @@ export const removeRole = async (
40
41
 
41
42
  if (client.cache) ingestInCache(data);
42
43
 
44
+ fireEvent('local.channel-moderator.role-removed', data);
45
+
43
46
  const { channelUsers } = data;
44
47
  return !!channelUsers.find(
45
48
  channelUser => channelUser.channelId === channelId && !channelUser.roles.includes(roleId),
@@ -11,3 +11,6 @@ export * from './onChannelMemberRemoved';
11
11
 
12
12
  export * from './onChannelMemberBanned';
13
13
  export * from './onChannelMemberUnbanned';
14
+
15
+ export * from './onChannelMemberRoleAdded';
16
+ export * from './onChannelMemberRoleRemoved';
@@ -0,0 +1,35 @@
1
+ import { getActiveClient } from '~/client/api';
2
+ import { createEventSubscriber } from '~/core/events';
3
+
4
+ /**
5
+ * ```js
6
+ * import { onChannelMemberRoleAdded } from '@amityco/ts-sdk'
7
+ * const dispose = onChannelMemberRoleAdded((channel, member) => {
8
+ * // ...
9
+ * })
10
+ * ```
11
+ *
12
+ * Fired when any {@link Amity.channelUsers} 's role has been added to any {@link Amity.Channel}
13
+ *
14
+ * @param callback The function to call when the event was fired
15
+ * @returns an {@link Amity.Unsubscriber} function to stop listening
16
+ *
17
+ * @category Channel Events
18
+ */
19
+ export const onChannelMemberRoleAdded = (
20
+ callback: (channel: Amity.Channel, member: Amity.Membership<'channel'>) => void,
21
+ ): Amity.Unsubscriber => {
22
+ const client = getActiveClient();
23
+
24
+ const filter = async (payload: Amity.ProcessedChannelPayload) => {
25
+ const { channels, channelUsers } = payload;
26
+ callback(channels[0], channelUsers.find(channelUser => channelUser.membership === 'member')!);
27
+ };
28
+
29
+ return createEventSubscriber(
30
+ client,
31
+ 'onChannelMemberRoleAdded',
32
+ 'local.channel-moderator.role-added',
33
+ filter,
34
+ );
35
+ };
@@ -0,0 +1,41 @@
1
+ import { ingestInCache } from '~/cache/api/ingestInCache';
2
+ import { getActiveClient } from '~/client/api';
3
+ import { createEventSubscriber } from '~/core/events';
4
+
5
+ import { prepareChannelPayload } from '../utils';
6
+
7
+ /**
8
+ * ```js
9
+ * import { onChannelMemberRoleRemoved } from '@amityco/ts-sdk'
10
+ * const dispose = onChannelMemberRoleRemoved((channel, member) => {
11
+ * // ...
12
+ * })
13
+ * ```
14
+ *
15
+ * Fired when any {@link Amity.channelUsers} 's role has been deleted to any {@link Amity.Channel}
16
+ *
17
+ * @param callback The function to call when the event was fired
18
+ * @returns an {@link Amity.Unsubscriber} function to stop listening
19
+ *
20
+ * @category Channel Events
21
+ */
22
+ export const onChannelMemberRoleRemoved = (
23
+ callback: (channel: Amity.Channel, member: Amity.Membership<'channel'>) => void,
24
+ ): Amity.Unsubscriber => {
25
+ const client = getActiveClient();
26
+
27
+ const filter = async (payload: Amity.ChannelMembershipPayload) => {
28
+ const preparedPayload = await prepareChannelPayload(payload);
29
+ const { channels, channelUsers } = preparedPayload;
30
+
31
+ ingestInCache(preparedPayload);
32
+ callback(channels[0], channelUsers.find(channelUser => channelUser.membership === 'member')!);
33
+ };
34
+
35
+ return createEventSubscriber(
36
+ client,
37
+ 'onChannelMemberRoleRemoved',
38
+ 'local.channel-moderator.role-removed',
39
+ filter,
40
+ );
41
+ };
@@ -1,5 +1,4 @@
1
1
  import { getActiveClient } from '~/client/api/activeClient';
2
- import { synchronousWSCall } from '~/core/transports';
3
2
 
4
3
  /* begin_public_function
5
4
  id: comment.check_flag_by_me
@@ -22,14 +21,10 @@ export const isCommentFlaggedByMe = async (
22
21
  const client = getActiveClient();
23
22
  client.log('comment/isCommentFlaggedByMe', commentId);
24
23
 
25
- const { result, isFlagByMe } =
26
- (await synchronousWSCall<{
27
- result?: boolean;
28
- isFlagByMe?: boolean;
29
- }>(client, 'v3/comment.isflagbyme', {
30
- commentId,
31
- })) ?? {};
24
+ const {
25
+ data: { result },
26
+ } = await client.http.get(`/api/v3/comments/${commentId}/isflagbyme`);
32
27
 
33
- return result ?? isFlagByMe ?? false;
28
+ return result;
34
29
  };
35
30
  /* end_public_function */
@@ -30,7 +30,7 @@ export const queryComments = async (
30
30
  const { page = { limit: 10 }, includeDeleted, ...params } = query;
31
31
 
32
32
  const options = {
33
- type: params.sortBy ? 'pagination' : undefined,
33
+ type: params.sortBy || query.page?.limit ? 'pagination' : undefined,
34
34
  token: toToken(page, params.sortBy ? 'skiplimit' : 'afterbefore'),
35
35
  };
36
36
  // const filterByParentId = query.parentId !== undefined
@@ -146,7 +146,7 @@ export const getComments = (
146
146
  query,
147
147
  ({ data: result, error, loading, prevPage, nextPage }) => {
148
148
  // depend on sortBy value we have two different pagination type
149
- const page = queryParams.sortBy ? nextPage : prevPage;
149
+ const page = queryParams.sortBy || params?.limit ? nextPage : prevPage;
150
150
 
151
151
  const data = {
152
152
  loading,
@@ -42,7 +42,9 @@ export const isAfterBeforeRaw = (
42
42
  *
43
43
  * @hidden
44
44
  */
45
- export const isPaged = <T extends unknown>(payload: any): payload is Amity.Paged<T, any> => {
45
+ export const isPaged = <T extends unknown>(
46
+ payload: any,
47
+ ): payload is Amity.Paged<T, any> & { paging?: Amity.Pagination['paging'] } => {
46
48
  return (
47
49
  payload?.hasOwnProperty('data') &&
48
50
  payload?.hasOwnProperty('nextPage') &&
@@ -24,11 +24,17 @@ import { convertQueryParams, prepareSubChannelPayload } from '../utils';
24
24
  */
25
25
  export const querySubChannels = async (
26
26
  query: Amity.QuerySubChannels,
27
- ): Promise<Amity.Cached<Amity.Paged<Amity.SubChannel>>> => {
27
+ ): Promise<Amity.Cached<Amity.Paged<Amity.SubChannel>> & Amity.Pagination> => {
28
28
  const client = getActiveClient();
29
29
  client.log('channel/querySubChannels', query);
30
30
 
31
- const { page = { limit: 10 }, channelId, includeDeleted, ...params } = convertQueryParams(query);
31
+ const {
32
+ page = { limit: 10 },
33
+ channelId,
34
+ includeDeleted,
35
+ pageToken,
36
+ ...params
37
+ } = convertQueryParams(query);
32
38
 
33
39
  const response = await client.http.get<Amity.SubChannelPayload & Amity.Pagination>(
34
40
  `/api/v5/message-feeds/channel/${channelId}`,
@@ -37,7 +43,7 @@ export const querySubChannels = async (
37
43
  ...params,
38
44
  isDeleted: inferIsDeleted(includeDeleted),
39
45
  options: {
40
- token: toToken(page, 'afterbefore'),
46
+ token: pageToken || toToken(page, 'afterbefore'),
41
47
  },
42
48
  },
43
49
  },
@@ -64,7 +70,13 @@ export const querySubChannels = async (
64
70
  const nextPage = toPage(paging.next);
65
71
  const prevPage = toPage(paging.previous);
66
72
 
67
- return { data: subChannels, cachedAt, prevPage, nextPage };
73
+ return {
74
+ data: subChannels,
75
+ cachedAt,
76
+ prevPage,
77
+ nextPage,
78
+ paging,
79
+ };
68
80
  };
69
81
  /* end_public_function */
70
82
 
@@ -83,7 +95,7 @@ export const querySubChannels = async (
83
95
  */
84
96
  querySubChannels.locally = (
85
97
  query: Parameters<typeof querySubChannels>[0],
86
- ): Amity.Cached<Amity.Paged<Amity.SubChannel>> | undefined => {
98
+ ): Amity.Cached<Amity.Paged<Amity.SubChannel> & Amity.Pagination> | undefined => {
87
99
  const client = getActiveClient();
88
100
  client.log('channel/querySubChannels.locally', query);
89
101
 
@@ -114,6 +126,6 @@ querySubChannels.locally = (
114
126
  const nextPage = toPage(data?.paging.next);
115
127
 
116
128
  return subChannels.length === data?.subChannels?.length
117
- ? { data: subChannels, cachedAt, prevPage, nextPage }
129
+ ? { data: subChannels, cachedAt, prevPage, nextPage, paging: data?.paging }
118
130
  : undefined;
119
131
  };
@@ -76,7 +76,7 @@ export const getSubChannels = (
76
76
  callback({
77
77
  onNextPage: onFetch,
78
78
  data: subChannels,
79
- hasNextPage: !!data.params?.page,
79
+ hasNextPage: !!data.params?.paging?.next,
80
80
  loading: data.loading,
81
81
  error: data.error,
82
82
  });
@@ -107,22 +107,23 @@ export const getSubChannels = (
107
107
  const onFetch = () => {
108
108
  const subChannels = snapshot ? snapshot.data : [];
109
109
 
110
- if (subChannels.length > 0 && !snapshot?.params.page) {
110
+ if (subChannels.length > 0 && !snapshot?.params?.paging?.next) {
111
111
  return;
112
112
  }
113
113
 
114
114
  const query = createQuery(querySubChannels, {
115
115
  ...queryParams,
116
116
  page: snapshot?.params.page ? { ...snapshot?.params.page, limit } : { limit },
117
+ pageToken: snapshot?.params?.paging?.next,
117
118
  });
118
119
 
119
120
  runQuery(
120
121
  query,
121
- ({ data: result, error, loading, nextPage: page }) => {
122
+ ({ data: result, error, loading, nextPage: page, paging }) => {
122
123
  snapshot = {
123
124
  loading,
124
125
  error,
125
- params: { page },
126
+ params: { page, paging },
126
127
  data: result ? merge(subChannels, result.map(convertGetterPropsToStatic)) : subChannels,
127
128
  };
128
129