@amityco/ts-sdk 0.0.1-beta.19 → 0.0.1-beta.21

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 (71) hide show
  1. package/dist/@types/core/events.d.ts +3 -2
  2. package/dist/@types/core/events.d.ts.map +1 -1
  3. package/dist/@types/core/model.d.ts +2 -0
  4. package/dist/@types/core/model.d.ts.map +1 -1
  5. package/dist/@types/core/payload.d.ts +6 -1
  6. package/dist/@types/core/payload.d.ts.map +1 -1
  7. package/dist/@types/domains/message.d.ts +5 -2
  8. package/dist/@types/domains/message.d.ts.map +1 -1
  9. package/dist/@types/domains/reaction.d.ts +7 -7
  10. package/dist/@types/domains/reaction.d.ts.map +1 -1
  11. package/dist/@types/domains/user.d.ts +1 -1
  12. package/dist/@types/domains/user.d.ts.map +1 -1
  13. package/dist/channel/api/addChannelMembers.d.ts.map +1 -1
  14. package/dist/channel/api/removeChannelMembers.d.ts.map +1 -1
  15. package/dist/channel/events/index.d.ts +2 -2
  16. package/dist/channel/events/index.d.ts.map +1 -1
  17. package/dist/channel/events/onChannelMemberAdded.d.ts +17 -0
  18. package/dist/channel/events/onChannelMemberAdded.d.ts.map +1 -0
  19. package/dist/channel/events/onChannelMemberRemoved.d.ts +17 -0
  20. package/dist/channel/events/onChannelMemberRemoved.d.ts.map +1 -0
  21. package/dist/channel/observers/observeChannel.d.ts.map +1 -1
  22. package/dist/client/api/connectClient.d.ts +5 -4
  23. package/dist/client/api/connectClient.d.ts.map +1 -1
  24. package/dist/core/events.d.ts +3 -3
  25. package/dist/core/events.d.ts.map +1 -1
  26. package/dist/core/model/idResolvers.d.ts.map +1 -1
  27. package/dist/core/model/identifyModel.d.ts.map +1 -1
  28. package/dist/core/model/index.d.ts.map +1 -1
  29. package/dist/core/subscription.d.ts +2 -0
  30. package/dist/core/subscription.d.ts.map +1 -1
  31. package/dist/index.cjs.js +11508 -6735
  32. package/dist/index.esm.js +13668 -8898
  33. package/dist/index.umd.js +5 -5
  34. package/dist/reaction/api/index.d.ts +1 -0
  35. package/dist/reaction/api/index.d.ts.map +1 -1
  36. package/dist/reaction/api/queryReactions.d.ts +24 -0
  37. package/dist/reaction/api/queryReactions.d.ts.map +1 -0
  38. package/dist/user/events/index.d.ts +1 -0
  39. package/dist/user/events/index.d.ts.map +1 -1
  40. package/dist/user/events/onUserDeleted.d.ts +17 -0
  41. package/dist/user/events/onUserDeleted.d.ts.map +1 -0
  42. package/dist/user/observers/observeUser.d.ts +1 -1
  43. package/dist/user/observers/observeUser.d.ts.map +1 -1
  44. package/package.json +6 -6
  45. package/src/@types/core/events.ts +3 -2
  46. package/src/@types/core/model.ts +2 -0
  47. package/src/@types/core/payload.ts +7 -1
  48. package/src/@types/domains/message.ts +10 -1
  49. package/src/@types/domains/reaction.ts +8 -8
  50. package/src/@types/domains/user.ts +1 -0
  51. package/src/channel/api/addChannelMembers.ts +2 -1
  52. package/src/channel/api/removeChannelMembers.ts +2 -1
  53. package/src/channel/events/index.ts +2 -2
  54. package/src/channel/events/{onMemberAdded.ts → onChannelMemberAdded.ts} +8 -6
  55. package/src/channel/events/{onMemberRemoved.ts → onChannelMemberRemoved.ts} +13 -6
  56. package/src/channel/observers/observeChannel.ts +8 -4
  57. package/src/client/api/connectClient.ts +17 -10
  58. package/src/core/model/idResolvers.ts +1 -0
  59. package/src/core/model/identifyModel.ts +1 -0
  60. package/src/core/model/index.ts +1 -0
  61. package/src/core/subscription.ts +10 -1
  62. package/src/reaction/api/index.ts +1 -0
  63. package/src/reaction/api/queryReactions.ts +52 -0
  64. package/src/user/events/index.ts +1 -0
  65. package/src/user/events/onUserDeleted.ts +19 -0
  66. package/src/user/events/utils.ts +1 -1
  67. package/src/user/observers/observeUser.ts +9 -2
  68. package/dist/channel/events/onMemberAdded.d.ts +0 -17
  69. package/dist/channel/events/onMemberAdded.d.ts.map +0 -1
  70. package/dist/channel/events/onMemberRemoved.d.ts +0 -17
  71. package/dist/channel/events/onMemberRemoved.d.ts.map +0 -1
@@ -1,3 +1,4 @@
1
1
  export * from './addReaction';
2
2
  export * from './removeReaction';
3
+ export * from './queryReactions';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/reaction/api/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/reaction/api/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * ```js
3
+ * import { queryReactions } from '@amityco/ts-sdk'
4
+ * const { data: reactions, prevPage, nextPage } = await queryReactions({
5
+ * referenceId: 'postId',
6
+ * referenceType: 'post',
7
+ * })
8
+ * ```
9
+ *
10
+ * Queries a paginable list of {@link Amity.ReactionQuery} objects
11
+ *
12
+ * @param query The query parameters
13
+ * @returns A page of {@link Amity.Reaction} objects
14
+ *
15
+ * @reaction Reaction API
16
+ * @async
17
+ * */
18
+ export declare const queryReactions: (query: {
19
+ referenceId: Amity.Reaction['referenceId'];
20
+ referenceType: Amity.Reaction['referenceType'];
21
+ reactionName?: Amity.Reaction['reactionName'];
22
+ page?: Amity.Page;
23
+ }) => Promise<Amity.Paged<Amity.ReactionQuery, Amity.Page>>;
24
+ //# sourceMappingURL=queryReactions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryReactions.d.ts","sourceRoot":"","sources":["../../../src/reaction/api/queryReactions.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;KAgBK;AACL,eAAO,MAAM,cAAc,UAAiB;IAC1C,WAAW,EAAE,MAAM,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC3C,aAAa,EAAE,MAAM,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC/C,YAAY,CAAC,EAAE,MAAM,QAAQ,CAAC,cAAc,CAAC,CAAC;IAC9C,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC;CACnB,KAAG,QAAQ,MAAM,KAAK,CAAC,MAAM,aAAa,EAAE,MAAM,IAAI,CAAC,CAyBvD,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export * from './onUserUpdated';
2
+ export * from './onUserDeleted';
2
3
  export * from './onUserFlagged';
3
4
  export * from './onUserUnflagged';
4
5
  export * from './onUserFlagCleared';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/user/events/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAEhC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/user/events/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAEhC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * ```js
3
+ * import { onUserDeleted } from '@amityco/ts-sdk'
4
+ * const dispose = onUserDeleted(user => {
5
+ * // ...
6
+ * })
7
+ * ```
8
+ *
9
+ * Fired when a {@link Amity.User} has been deleted
10
+ *
11
+ * @param callback The function to call when the event was fired
12
+ * @returns an {@link Amity.Unsubscriber} function to stop listening
13
+ *
14
+ * @category User Events
15
+ */
16
+ export declare const onUserDeleted: (callback: Amity.Listener<Amity.User>) => Amity.Unsubscriber;
17
+ //# sourceMappingURL=onUserDeleted.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onUserDeleted.d.ts","sourceRoot":"","sources":["../../../src/user/events/onUserDeleted.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,aAAa,aAAc,MAAM,QAAQ,CAAC,MAAM,IAAI,CAAC,uBACb,CAAC"}
@@ -13,5 +13,5 @@
13
13
  * Observe all mutation on a given {@link Amity.User}
14
14
  * @category User Observer
15
15
  */
16
- export declare const observeUser: <Events extends ["onFetch", "onUpdate", "onFlagged", "onUnflagged", "onFlagCleared"]>(userId: string, callback: Amity.ObjectListener<Amity.Snapshot<Amity.User>, Events>) => Amity.Unsubscriber;
16
+ export declare const observeUser: <Events extends ["onFetch", "onUpdate", "onDelete", "onFlagged", "onUnflagged", "onFlagCleared"]>(userId: string, callback: Amity.ObjectListener<Amity.Snapshot<Amity.User>, Events>) => Amity.Unsubscriber;
17
17
  //# sourceMappingURL=observeUser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"observeUser.d.ts","sourceRoot":"","sources":["../../../src/user/observers/observeUser.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,WAAW,gGAGd,MAAM,yEAEb,MAAM,YAiCR,CAAC"}
1
+ {"version":3,"file":"observeUser.d.ts","sourceRoot":"","sources":["../../../src/user/observers/observeUser.ts"],"names":[],"mappings":"AAaA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,WAAW,4GAGd,MAAM,yEAEb,MAAM,YAkCR,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amityco/ts-sdk",
3
- "version": "0.0.1-beta.19",
3
+ "version": "0.0.1-beta.21",
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",
@@ -31,21 +31,21 @@
31
31
  "watch": "rollup -w -c ./rollup.config.js"
32
32
  },
33
33
  "devDependencies": {
34
- "@rollup/plugin-commonjs": "^20.0.0",
34
+ "@rollup/plugin-commonjs": "^21.0.3",
35
35
  "@rollup/plugin-node-resolve": "^13.0.4",
36
- "@rollup/plugin-replace": "^3.0.0",
36
+ "@rollup/plugin-replace": "^4.0.0",
37
37
  "@types/axios": "^0.14.0",
38
38
  "@types/debug": "^4.1.5",
39
- "@types/node": "^14.0.11",
39
+ "@types/node": "^17.0.23",
40
40
  "@types/socket.io-client": "^1.4.34",
41
41
  "chalk": "^4.1.2",
42
42
  "concurrently": "^6.1.0",
43
43
  "rimraf": "^3.0.2",
44
44
  "rollup": "^2.56.3",
45
45
  "rollup-plugin-terser": "^7.0.2",
46
- "rollup-plugin-typescript2": "^0.30.0",
46
+ "rollup-plugin-typescript2": "^0.31.2",
47
47
  "tslib": "^2.1.0",
48
- "typescript": "^4.4.4"
48
+ "typescript": "^4.6.3"
49
49
  },
50
50
  "dependencies": {
51
51
  "@react-native-async-storage/async-storage": "^1.15.5",
@@ -31,8 +31,8 @@ declare global {
31
31
  'v3.channel.didDelete': Amity.ChannelPayload;
32
32
  'v3.channel.didJoin': Amity.ChannelPayload;
33
33
  'v3.channel.didLeave': Amity.ChannelPayload;
34
- 'v3.channel.didAddUsers': Amity.ChannelPayload;
35
- 'v3.channel.didRemoveUsers': Amity.ChannelPayload;
34
+ 'v3.channel.didAddUsers': Amity.ChannelMembershipPayload;
35
+ 'v3.channel.didRemoveUsers': Amity.ChannelMembershipPayload;
36
36
  'v3.channel.didBan': Amity.ChannelPayload;
37
37
  'v3.channel.didUnban': Amity.ChannelPayload;
38
38
 
@@ -94,6 +94,7 @@ declare global {
94
94
 
95
95
  type MqttUserMessageEvents = {
96
96
  'user.updated': Amity.UserPayload;
97
+ 'user.deleted': Amity.UserPayload; // received from network topic
97
98
  'user.flagged': Amity.UserPayload;
98
99
  'user.unflagged': Amity.UserPayload;
99
100
  'user.flagCleared': Amity.UserPayload;
@@ -21,6 +21,7 @@ declare global {
21
21
  post: Amity.Post;
22
22
  comment: Amity.Comment;
23
23
  poll: Amity.Poll;
24
+ reaction: Amity.Reaction;
24
25
 
25
26
  stream: Amity.Stream;
26
27
 
@@ -50,6 +51,7 @@ declare global {
50
51
  post: Pick<Amity.Post, 'postId'>;
51
52
  comment: Pick<Amity.Comment, 'commentId'>;
52
53
  poll: Pick<Amity.Poll, 'pollId'>;
54
+ reaction: Pick<Amity.Reaction, 'reactionId'>;
53
55
 
54
56
  stream: Pick<Amity.Stream, 'streamId'>;
55
57
 
@@ -16,6 +16,7 @@ declare global {
16
16
  comment: Amity.CommentPayload;
17
17
  poll: Amity.PollPayload;
18
18
  stream: Amity.StreamPayload;
19
+ reaction: Amity.ReactionPayload;
19
20
  };
20
21
 
21
22
  type UserPayload = {
@@ -39,7 +40,7 @@ declare global {
39
40
  };
40
41
 
41
42
  type ChannelMembershipPayload = {
42
- channels?: Amity.Channel[];
43
+ channels: Amity.Channel[];
43
44
  channelUsers: Amity.Membership<'channel'>[];
44
45
  users?: Amity.User[];
45
46
  files?: Amity.File[];
@@ -104,6 +105,11 @@ declare global {
104
105
  polls: Amity.Poll[];
105
106
  };
106
107
 
108
+ type ReactionPayload = {
109
+ reactions: Amity.ReactionQuery[];
110
+ users: Pick<Amity.User, 'userId' | 'displayName' | 'metadata'>[];
111
+ };
112
+
107
113
  type GlobalFeedPayload = Amity.PostPayload;
108
114
 
109
115
  type FollowersPayload = {
@@ -2,7 +2,15 @@ export {};
2
2
 
3
3
  declare global {
4
4
  namespace Amity {
5
- type MessageContentType = 'text' | 'file' | 'image';
5
+ type MessageContentType = 'text' | 'file' | 'image' | 'video' | 'audio' | 'custom';
6
+
7
+ type MessageContent<T extends Amity.MessageContentType = any> = T extends
8
+ | 'file'
9
+ | 'image'
10
+ | 'video'
11
+ | 'audio'
12
+ ? { fileId: string }
13
+ : never;
6
14
 
7
15
  type Message<T extends Amity.MessageContentType = any> = {
8
16
  messageId: string;
@@ -17,6 +25,7 @@ declare global {
17
25
 
18
26
  editedAt: Amity.timestamp;
19
27
  } & Amity.Content<T, 'type'> &
28
+ Amity.MessageContent<T> &
20
29
  Amity.Metadata &
21
30
  Amity.Timestamps &
22
31
  Amity.SoftDelete &
@@ -4,17 +4,13 @@ declare global {
4
4
  namespace Amity {
5
5
  type ReactableType = 'message' | 'post' | 'comment';
6
6
 
7
- type Reaction = {
7
+ type Reactor = {
8
8
  reactionId: string;
9
- userId: string;
10
9
  reactionName: string;
11
- } & Amity.CreatedAt &
12
- Amity.Relationship<ReactableType>;
10
+ userId: Amity.User['userId'];
11
+ } & Amity.CreatedAt;
13
12
 
14
- type Reactions = {
15
- reactions: Record<string, number>;
16
- count: number;
17
- };
13
+ type Reaction = Amity.Reactor & Amity.Relationship<ReactableType>;
18
14
 
19
15
  type Reactable = {
20
16
  reactionsCount: number;
@@ -25,5 +21,9 @@ declare global {
25
21
  eventName: 'added' | 'removed';
26
22
  };
27
23
  };
24
+
25
+ type ReactionQuery = {
26
+ reactors: Reactor[];
27
+ } & Amity.Relationship<ReactableType>;
28
28
  }
29
29
  }
@@ -14,6 +14,7 @@ declare global {
14
14
  Amity.Flaggable &
15
15
  Amity.Accredited &
16
16
  Amity.Timestamps &
17
+ Amity.SoftDelete &
17
18
  Amity.Subscribable;
18
19
  }
19
20
  }
@@ -33,7 +33,8 @@ export const addChannelMembers = async (
33
33
  if (client.cache) ingestInCache(data);
34
34
 
35
35
  fireEvent('v3.channel.didAddUsers', {
36
- channels: data.channels!,
36
+ channels: data.channels,
37
+ channelUsers: data.channelUsers,
37
38
  });
38
39
 
39
40
  const { channelUsers } = data;
@@ -33,7 +33,8 @@ export const removeChannelMembers = async (
33
33
  if (client.cache) ingestInCache(data);
34
34
 
35
35
  fireEvent('v3.channel.didRemoveUsers', {
36
- channels: data.channels!,
36
+ channels: data.channels,
37
+ channelUsers: data.channelUsers,
37
38
  });
38
39
 
39
40
  const { channelUsers } = data;
@@ -2,5 +2,5 @@ export * from './onChannelUpdated';
2
2
  export * from './onChannelDeleted';
3
3
  export * from './onChannelJoined';
4
4
  export * from './onChannelLeft';
5
- export * from './onMemberAdded';
6
- export * from './onMemberRemoved';
5
+ export * from './onChannelMemberAdded';
6
+ export * from './onChannelMemberRemoved';
@@ -5,8 +5,8 @@ import { ingestInCache } from '~/cache/api/ingestInCache';
5
5
 
6
6
  /**
7
7
  * ```js
8
- * import { onMemberAdded } from '@amityco/ts-sdk'
9
- * const dispose = onMemberAdded(channel => {
8
+ * import { onChannelMemberAdded } from '@amityco/ts-sdk'
9
+ * const dispose = onChannelMemberAdded((channel, member) => {
10
10
  * // ...
11
11
  * })
12
12
  * ```
@@ -18,13 +18,15 @@ import { ingestInCache } from '~/cache/api/ingestInCache';
18
18
  *
19
19
  * @category Channel Events
20
20
  */
21
- export const onMemberAdded = (callback: Amity.Listener<Amity.Channel>) => {
21
+ export const onChannelMemberAdded = (
22
+ callback: (channel: Amity.Channel, member: Amity.Membership<'channel'>) => void,
23
+ ) => {
22
24
  const client = getActiveClient();
23
25
 
24
- const filter = (payload: Amity.ChannelPayload) => {
26
+ const filter = (payload: Amity.ChannelMembershipPayload) => {
25
27
  ingestInCache(payload);
26
- callback(payload.channels[0]);
28
+ callback(payload.channels[0], payload.channelUsers[0]);
27
29
  };
28
30
 
29
- return createEventSubscriber(client, 'onMemberAdded', 'v3.channel.didAddUsers', filter);
31
+ return createEventSubscriber(client, 'onChannelMemberAdded', 'v3.channel.didAddUsers', filter);
30
32
  };
@@ -5,8 +5,8 @@ import { ingestInCache } from '~/cache/api/ingestInCache';
5
5
 
6
6
  /**
7
7
  * ```js
8
- * import { onMemberRemoved } from '@amityco/ts-sdk'
9
- * const dispose = onMemberRemoved(channel => {
8
+ * import { onChannelMemberRemoved } from '@amityco/ts-sdk'
9
+ * const dispose = onChannelMemberRemoved((channel, member) => {
10
10
  * // ...
11
11
  * })
12
12
  * ```
@@ -18,13 +18,20 @@ import { ingestInCache } from '~/cache/api/ingestInCache';
18
18
  *
19
19
  * @category Channel Events
20
20
  */
21
- export const onMemberRemoved = (callback: Amity.Listener<Amity.Channel>) => {
21
+ export const onChannelMemberRemoved = (
22
+ callback: (channel: Amity.Channel, member: Amity.Membership<'channel'>) => void,
23
+ ) => {
22
24
  const client = getActiveClient();
23
25
 
24
- const filter = (payload: Amity.ChannelPayload) => {
26
+ const filter = (payload: Amity.ChannelMembershipPayload) => {
25
27
  ingestInCache(payload);
26
- callback(payload.channels[0]);
28
+ callback(payload.channels[0], payload.channelUsers[0]);
27
29
  };
28
30
 
29
- return createEventSubscriber(client, 'onMemberRemoved', 'v3.channel.didRemoveUsers', filter);
31
+ return createEventSubscriber(
32
+ client,
33
+ 'onChannelMemberRemoved',
34
+ 'v3.channel.didRemoveUsers',
35
+ filter,
36
+ );
30
37
  };
@@ -9,8 +9,8 @@ import {
9
9
  onChannelDeleted,
10
10
  onChannelJoined,
11
11
  onChannelLeft,
12
- onMemberAdded,
13
- onMemberRemoved,
12
+ onChannelMemberAdded,
13
+ onChannelMemberRemoved,
14
14
  } from '../events';
15
15
 
16
16
  /**
@@ -67,8 +67,12 @@ export const observeChannel = <
67
67
  onChannelDeleted(data => router({ data, loading: false, origin: 'event' }, 'onDelete')),
68
68
  onChannelJoined(data => router({ data, loading: false, origin: 'event' }, 'onJoin')),
69
69
  onChannelLeft(data => router({ data, loading: false, origin: 'event' }, 'onLeft')),
70
- onMemberAdded(data => router({ data, loading: false, origin: 'event' }, 'onMemberAdded')),
71
- onMemberRemoved(data => router({ data, loading: false, origin: 'event' }, 'onMemberRemoved')),
70
+ onChannelMemberAdded(data =>
71
+ router({ data, loading: false, origin: 'event' }, 'onMemberAdded'),
72
+ ),
73
+ onChannelMemberRemoved(data =>
74
+ router({ data, loading: false, origin: 'event' }, 'onMemberRemoved'),
75
+ ),
72
76
  );
73
77
 
74
78
  runQuery(createQuery(getChannel, channelId), result => result.data && router(result, 'onFetch'));
@@ -9,6 +9,8 @@ import { setActiveUser } from './activeUser';
9
9
 
10
10
  import { getToken } from './getToken';
11
11
  import { onClientBanned } from '../events';
12
+ import { getNetworkTopic, subscribeTopic } from '~/core/subscription';
13
+ import { onUserDeleted } from '~/user/events/onUserDeleted';
12
14
 
13
15
  /**
14
16
  * ```js
@@ -20,10 +22,11 @@ import { onClientBanned } from '../events';
20
22
  *
21
23
  * Connects an {@link Amity.Client} instance to ASC servers
22
24
  *
23
- * @param userId the user ID for the current session
24
- * @param displayName the user's displayName for the current session
25
- * @param deviceId Manual override of the user's device id (for device management)
26
- * @param authToken The authentication token - necessary when network option is set to secure
25
+ * @param params the connect parameters
26
+ * @param params.userId the user ID for the current session
27
+ * @param params.displayName the user's displayName for the current session
28
+ * @param params.deviceId Manual override of the user's device id (for device management)
29
+ * @param params.authToken The authentication token - necessary when network option is set to secure
27
30
  * @returns a success boolean if connected
28
31
  *
29
32
  * @category Client API
@@ -39,7 +42,6 @@ export const connectClient = async (params: {
39
42
  client.log('client/api/connectClient', { apiKey: client.apiKey, ...params });
40
43
 
41
44
  // default values
42
- params.displayName ??= params.userId;
43
45
  params.deviceId ??= getDeviceId();
44
46
 
45
47
  // @ts-ignore: in that particular case, typing can be
@@ -63,15 +65,20 @@ export const connectClient = async (params: {
63
65
  client.ws.open();
64
66
  });
65
67
 
66
- const unsubscribe = onClientBanned(() => {
67
- disconnectClient();
68
- unsubscribe();
69
- });
70
-
71
68
  client.userId = params.userId;
72
69
  client.accessToken = accessToken;
73
70
 
74
71
  setActiveUser(users[0]);
75
72
 
73
+ subscribeTopic(getNetworkTopic());
74
+
75
+ const subscriptions = [
76
+ onClientBanned(() => {
77
+ disconnectClient();
78
+ subscriptions.forEach(fn => fn());
79
+ }),
80
+ onUserDeleted(() => null),
81
+ ];
82
+
76
83
  return client.ws.connected;
77
84
  };
@@ -24,6 +24,7 @@ const idResolvers: Resolvers = {
24
24
  post: ({ postId }) => postId,
25
25
  comment: ({ commentId }) => commentId,
26
26
  poll: ({ pollId }) => pollId,
27
+ reaction: ({ reactionId }) => reactionId,
27
28
 
28
29
  stream: ({ streamId }) => streamId,
29
30
 
@@ -32,6 +32,7 @@ const CRITERIAS: Criterias = {
32
32
  post: ['postId', 'feedId'],
33
33
  comment: ['commentId', 'referenceId'],
34
34
  poll: ['pollId'],
35
+ reaction: ['reactionId'],
35
36
  stream: ['streamId'],
36
37
  follow: ['from', 'to'],
37
38
  followCount: ['userId', 'followerCount'],
@@ -21,6 +21,7 @@ export const PAYLOAD2MODEL: Record<string, Amity.Domain> = {
21
21
  postChildren: 'post',
22
22
  comments: 'comment',
23
23
  polls: 'poll',
24
+ reactions: 'reaction',
24
25
  videoStreamings: 'stream',
25
26
 
26
27
  follows: 'follow',
@@ -1,4 +1,4 @@
1
- import { getActiveClient } from '~/client/api';
1
+ import { getActiveClient } from '~/client/api/activeClient';
2
2
  import { ASCError } from '~/core/errors';
3
3
  import { proxyMqttEvents } from '~/core/events';
4
4
  import { getActiveUser } from '~/client/api/activeUser';
@@ -73,6 +73,15 @@ export const getMyFollowingsTopic = (): string => {
73
73
  return `${networkId}/membership/+/${user._id}/+`;
74
74
  };
75
75
 
76
+ /** @hidden */
77
+ export const getNetworkTopic = (): string => {
78
+ const user = getActiveUser();
79
+
80
+ const [networkId] = user.path.split('/user/');
81
+
82
+ return networkId;
83
+ };
84
+
76
85
  let mqttAccessToken: string;
77
86
  let mqttUserId: string;
78
87
 
@@ -1,2 +1,3 @@
1
1
  export * from './addReaction';
2
2
  export * from './removeReaction';
3
+ export * from './queryReactions';
@@ -0,0 +1,52 @@
1
+ import { getActiveClient } from '~/client/api/activeClient';
2
+
3
+ import { toToken, toPage } from '~/core/query';
4
+
5
+ /**
6
+ * ```js
7
+ * import { queryReactions } from '@amityco/ts-sdk'
8
+ * const { data: reactions, prevPage, nextPage } = await queryReactions({
9
+ * referenceId: 'postId',
10
+ * referenceType: 'post',
11
+ * })
12
+ * ```
13
+ *
14
+ * Queries a paginable list of {@link Amity.ReactionQuery} objects
15
+ *
16
+ * @param query The query parameters
17
+ * @returns A page of {@link Amity.Reaction} objects
18
+ *
19
+ * @reaction Reaction API
20
+ * @async
21
+ * */
22
+ export const queryReactions = async (query: {
23
+ referenceId: Amity.Reaction['referenceId'];
24
+ referenceType: Amity.Reaction['referenceType'];
25
+ reactionName?: Amity.Reaction['reactionName'];
26
+ page?: Amity.Page;
27
+ }): Promise<Amity.Paged<Amity.ReactionQuery, Amity.Page>> => {
28
+ const client = getActiveClient();
29
+ client.log('reaction/queryReactions', query);
30
+
31
+ const { page = { limit: 10 }, ...params } = query ?? {};
32
+
33
+ const { data } = await client.http.get<{ results: Amity.ReactionPayload } & Amity.Pagination>(
34
+ `/api/v2/reactions`,
35
+ {
36
+ params: {
37
+ ...params,
38
+ options: {
39
+ token: toToken(page, 'skiplimit'),
40
+ },
41
+ },
42
+ },
43
+ );
44
+
45
+ const { paging, results } = data;
46
+ const { reactions } = results;
47
+
48
+ const nextPage = toPage(paging.next);
49
+ const prevPage = toPage(paging.previous);
50
+
51
+ return { data: reactions, prevPage, nextPage };
52
+ };
@@ -1,4 +1,5 @@
1
1
  export * from './onUserUpdated';
2
+ export * from './onUserDeleted';
2
3
 
3
4
  export * from './onUserFlagged';
4
5
  export * from './onUserUnflagged';
@@ -0,0 +1,19 @@
1
+ import { createUserEventSubscriber } from './utils';
2
+
3
+ /**
4
+ * ```js
5
+ * import { onUserDeleted } from '@amityco/ts-sdk'
6
+ * const dispose = onUserDeleted(user => {
7
+ * // ...
8
+ * })
9
+ * ```
10
+ *
11
+ * Fired when a {@link Amity.User} has been deleted
12
+ *
13
+ * @param callback The function to call when the event was fired
14
+ * @returns an {@link Amity.Unsubscriber} function to stop listening
15
+ *
16
+ * @category User Events
17
+ */
18
+ export const onUserDeleted = (callback: Amity.Listener<Amity.User>) =>
19
+ createUserEventSubscriber('user.deleted', callback);
@@ -1,4 +1,4 @@
1
- import { getActiveClient } from '~/client/api';
1
+ import { getActiveClient } from '~/client/api/activeClient';
2
2
  import { createEventSubscriber } from '~/core/events';
3
3
 
4
4
  import { ingestInCache } from '~/cache/api/ingestInCache';
@@ -3,7 +3,13 @@ import { createQuery, runQuery } from '~/core/query/query';
3
3
  import { getActiveClient } from '~/client/api';
4
4
 
5
5
  import { getUser } from '../api';
6
- import { onUserUpdated, onUserFlagged, onUserUnflagged, onUserFlagCleared } from '../events';
6
+ import {
7
+ onUserUpdated,
8
+ onUserDeleted,
9
+ onUserFlagged,
10
+ onUserUnflagged,
11
+ onUserFlagCleared,
12
+ } from '../events';
7
13
 
8
14
  /**
9
15
  * ```js
@@ -21,7 +27,7 @@ import { onUserUpdated, onUserFlagged, onUserUnflagged, onUserFlagCleared } from
21
27
  * @category User Observer
22
28
  */
23
29
  export const observeUser = <
24
- Events extends ['onFetch', 'onUpdate', 'onFlagged', 'onUnflagged', 'onFlagCleared'],
30
+ Events extends ['onFetch', 'onUpdate', 'onDelete', 'onFlagged', 'onUnflagged', 'onFlagCleared'],
25
31
  >(
26
32
  userId: string,
27
33
  callback: Amity.ObjectListener<Amity.Snapshot<Amity.User>, Events>,
@@ -47,6 +53,7 @@ export const observeUser = <
47
53
 
48
54
  disposers.push(
49
55
  onUserUpdated(data => router({ data, loading: false, origin: 'event' }, 'onUpdate')),
56
+ onUserDeleted(data => router({ data, loading: false, origin: 'event' }, 'onDelete')),
50
57
  onUserFlagged(data => router({ data, loading: false, origin: 'event' }, 'onFlagged')),
51
58
  onUserUnflagged(data => router({ data, loading: false, origin: 'event' }, 'onUnflagged')),
52
59
  onUserFlagCleared(data => router({ data, loading: false, origin: 'event' }, 'onFlagCleared')),
@@ -1,17 +0,0 @@
1
- /**
2
- * ```js
3
- * import { onMemberAdded } from '@amityco/ts-sdk'
4
- * const dispose = onMemberAdded(channel => {
5
- * // ...
6
- * })
7
- * ```
8
- *
9
- * Fired when any {@link Amity.User} has been added to any {@link Amity.Channel}
10
- *
11
- * @param callback The function to call when the event was fired
12
- * @returns an {@link Amity.Unsubscriber} function to stop listening
13
- *
14
- * @category Channel Events
15
- */
16
- export declare const onMemberAdded: (callback: Amity.Listener<Amity.Channel>) => Amity.Unsubscriber;
17
- //# sourceMappingURL=onMemberAdded.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"onMemberAdded.d.ts","sourceRoot":"","sources":["../../../src/channel/events/onMemberAdded.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,aAAa,aAAc,MAAM,QAAQ,CAAC,MAAM,OAAO,CAAC,uBASpE,CAAC"}