@amityco/ts-sdk 7.5.4-ec2fdd4.0 → 7.6.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 (28) hide show
  1. package/.env +26 -26
  2. package/dist/@types/domains/channel.d.ts +1 -0
  3. package/dist/@types/domains/channel.d.ts.map +1 -1
  4. package/dist/@types/domains/group.d.ts +2 -0
  5. package/dist/@types/domains/group.d.ts.map +1 -1
  6. package/dist/channelRepository/channelMembership/observers/getMembers/ChannelMemberLiveCollectionController.d.ts.map +1 -1
  7. package/dist/channelRepository/channelMembership/observers/searchMembers/SearchChannelMemberLiveCollectionController.d.ts.map +1 -1
  8. package/dist/channelRepository/channelMembership/observers/searchMembers/SearchChannelMemberQueryStreamController.d.ts +2 -2
  9. package/dist/channelRepository/channelMembership/observers/searchMembers/SearchChannelMemberQueryStreamController.d.ts.map +1 -1
  10. package/dist/index.cjs.js +32 -4
  11. package/dist/index.esm.js +32 -4
  12. package/dist/index.umd.js +3 -3
  13. package/dist/utils/linkedObject/channelLinkedObject.d.ts.map +1 -1
  14. package/dist/utils/linkedObject/channelMemberLinkedObject.d.ts +2 -0
  15. package/dist/utils/linkedObject/channelMemberLinkedObject.d.ts.map +1 -0
  16. package/dist/utils/linkedObject/index.d.ts +1 -0
  17. package/dist/utils/linkedObject/index.d.ts.map +1 -1
  18. package/dist/utils/tests/dummy/community.d.ts +2 -0
  19. package/dist/utils/tests/dummy/community.d.ts.map +1 -1
  20. package/package.json +1 -1
  21. package/src/@types/domains/channel.ts +1 -0
  22. package/src/@types/domains/group.ts +2 -0
  23. package/src/channelRepository/channelMembership/observers/getMembers/ChannelMemberLiveCollectionController.ts +3 -1
  24. package/src/channelRepository/channelMembership/observers/searchMembers/SearchChannelMemberLiveCollectionController.ts +2 -1
  25. package/src/channelRepository/channelMembership/observers/searchMembers/SearchChannelMemberQueryStreamController.ts +2 -2
  26. package/src/utils/linkedObject/channelLinkedObject.ts +19 -0
  27. package/src/utils/linkedObject/channelMemberLinkedObject.ts +20 -0
  28. package/src/utils/linkedObject/index.ts +2 -0
@@ -1 +1 @@
1
- {"version":3,"file":"channelLinkedObject.d.ts","sourceRoot":"","sources":["../../../src/utils/linkedObject/channelLinkedObject.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,mBAAmB,YAAa,MAAM,eAAe,KAAG,MAAM,OAI1E,CAAC"}
1
+ {"version":3,"file":"channelLinkedObject.d.ts","sourceRoot":"","sources":["../../../src/utils/linkedObject/channelLinkedObject.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,mBAAmB,YAAa,MAAM,eAAe,KAAG,MAAM,OAqB1E,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const channelMemberLinkedObject: (channelMember: Amity.Membership<'channel'>) => Amity.Membership<'channel'>;
2
+ //# sourceMappingURL=channelMemberLinkedObject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channelMemberLinkedObject.d.ts","sourceRoot":"","sources":["../../../src/utils/linkedObject/channelMemberLinkedObject.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,yBAAyB,kBACrB,MAAM,UAAU,CAAC,SAAS,CAAC,KACzC,MAAM,UAAU,CAAC,SAAS,CAc5B,CAAC"}
@@ -15,5 +15,6 @@ export declare const LinkedObject: {
15
15
  community: (community: Amity.InternalCommunity) => Amity.Community;
16
16
  invitation: (invitation: Amity.InternalInvitation) => Amity.Invitation;
17
17
  joinRequest: (joinRequest: Amity.InternalJoinRequest) => Amity.JoinRequest;
18
+ channelMember: (channelMember: Amity.Membership<"channel">) => Amity.Membership<"channel">;
18
19
  };
19
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/linkedObject/index.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;CAiBxB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/linkedObject/index.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;CAkBxB,CAAC"}
@@ -55,6 +55,8 @@ export declare const communityUserModel: {
55
55
  muteTimeout: string;
56
56
  lastActivity: string;
57
57
  userId: string;
58
+ userInternalId: string;
59
+ userPublicId: string;
58
60
  communityId: string;
59
61
  communityMembership: Amity.GroupMembership;
60
62
  createdAt: string;
@@ -1 +1 @@
1
- {"version":3,"file":"community.d.ts","sourceRoot":"","sources":["../../../../src/utils/tests/dummy/community.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,SAajC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,SAoB/B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,SAI/B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAa5D,CAAC;AAEF,eAAO,MAAM,uBAAuB,+BAAuD,CAAC;AAE5F,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAO5D,CAAC;AAEF,eAAO,MAAM,uBAAuB,+BAAuD,CAAC;AAE5F,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAO5D,CAAC;AAEF,eAAO,MAAM,uBAAuB,+BAAuD,CAAC;AAE5F,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAM5D,CAAC;AAEF,eAAO,MAAM,qBAAqB,+BAAuD,CAAC;AAE1F,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAK5D,CAAC;AAEF,eAAO,MAAM,mBAAmB,+BAAuD,CAAC;AAExF,eAAO,MAAM,qBAAqB;;;;;;;CAOjC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,gBAOpC,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;CAUtC,CAAC;AAEF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;CAU3C,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;GAG9B,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;CAuBzB,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;CAuBzB,CAAC;AAEF,eAAO,MAAM,sBAAsB;;CAqBlC,CAAC;AAEF,eAAO,MAAM,2BAA2B;;CAqBvC,CAAC"}
1
+ {"version":3,"file":"community.d.ts","sourceRoot":"","sources":["../../../../src/utils/tests/dummy/community.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,SAajC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,SAoB/B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,SAI/B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAa5D,CAAC;AAEF,eAAO,MAAM,uBAAuB,+BAAuD,CAAC;AAE5F,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAO5D,CAAC;AAEF,eAAO,MAAM,uBAAuB,+BAAuD,CAAC;AAE5F,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAO5D,CAAC;AAEF,eAAO,MAAM,uBAAuB,+BAAuD,CAAC;AAE5F,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAM5D,CAAC;AAEF,eAAO,MAAM,qBAAqB,+BAAuD,CAAC;AAE1F,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAK5D,CAAC;AAEF,eAAO,MAAM,mBAAmB,+BAAuD,CAAC;AAExF,eAAO,MAAM,qBAAqB;;;;;;;CAOjC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,gBAOpC,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;CAUtC,CAAC;AAEF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;CAU3C,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;GAG9B,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;CAuBzB,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;CAuBzB,CAAC;AAEF,eAAO,MAAM,sBAAsB;;CAqBlC,CAAC;AAEF,eAAO,MAAM,2BAA2B;;CAqBvC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amityco/ts-sdk",
3
- "version": "7.5.4-ec2fdd4.0",
3
+ "version": "7.6.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",
@@ -93,6 +93,7 @@ declare global {
93
93
  type Channel<T extends ChannelType = any> = InternalChannel<T> & {
94
94
  messagePreview?: Amity.MessagePreview | null;
95
95
  markAsRead: () => Promise<boolean>;
96
+ previewMembers: Amity.Membership<'channel'>[];
96
97
  };
97
98
 
98
99
  type QueryChannels = {
@@ -15,6 +15,8 @@ declare global {
15
15
 
16
16
  type Member<T extends Amity.GroupType> = {
17
17
  userId: Amity.InternalUser['userId'];
18
+ userInternalId: Amity.InternalUser['userInternalId'];
19
+ userPublicId: Amity.InternalUser['userPublicId'];
18
20
  } & (T extends 'channel'
19
21
  ? {
20
22
  channelId: Amity.Channel['channelId'];
@@ -23,6 +23,7 @@ import {
23
23
  } from '~/core/query';
24
24
  import { prepareChannelPayload } from '~/channelRepository/utils';
25
25
  import { onUserDeleted } from '~/channelRepository/events/onUserDeleted';
26
+ import { LinkedObject } from '~/utils/linkedObject';
26
27
 
27
28
  export class ChannelMemberLiveCollectionController extends LiveCollectionController<
28
29
  'channelUser',
@@ -100,7 +101,8 @@ export class ChannelMemberLiveCollectionController extends LiveCollectionControl
100
101
  collection.data
101
102
  .map(id => pullFromCache<Amity.Membership<'channel'>>(['channelUsers', 'get', id])!)
102
103
  .filter(Boolean)
103
- .map(({ data }) => data) ?? [],
104
+ .map(({ data }) => data)
105
+ .map(LinkedObject.channelMember) ?? [],
104
106
  );
105
107
 
106
108
  if (!this.shouldNotify(data) && origin === 'event') return;
@@ -17,6 +17,7 @@ import {
17
17
  import { filterByPropIntersection, filterBySearchTerm } from '~/core/query';
18
18
  import { prepareChannelPayload } from '~/channelRepository/utils';
19
19
  import { onUserDeleted } from '~/channelRepository/events/onUserDeleted';
20
+ import { LinkedObject } from '~/utils/linkedObject';
20
21
 
21
22
  export class SearchChannelMemberLiveCollectionController extends LiveCollectionController<
22
23
  'channelUser',
@@ -94,7 +95,7 @@ export class SearchChannelMemberLiveCollectionController extends LiveCollectionC
94
95
  collection.data
95
96
  .map(id => pullFromCache<Amity.Membership<'channel'>>(['channelUsers', 'get', id])!)
96
97
  .filter(Boolean)
97
- .map(({ data }) => data) ?? [],
98
+ .map(({ data }) => LinkedObject.channelMember(data) ?? []),
98
99
  );
99
100
 
100
101
  if (!this.shouldNotify(data) && origin === 'event') return;
@@ -72,7 +72,7 @@ export class SearchChannelMemberQueryStreamController extends QueryStreamControl
72
72
  }
73
73
 
74
74
  reactor(action: string) {
75
- return (channel: Amity.InternalChannel, channelMember: Amity.Membership<'channel'>) => {
75
+ return (channel: Amity.StaticInternalChannel, channelMember: Amity.Membership<'channel'>) => {
76
76
  if (this.query.channelId !== channelMember.channelId) return;
77
77
 
78
78
  const collection = pullFromCache<Amity.ChannelMembersLiveCollectionCache>(
@@ -100,7 +100,7 @@ export class SearchChannelMemberQueryStreamController extends QueryStreamControl
100
100
  createSubscriber: {
101
101
  fn: (
102
102
  reactor: (
103
- channel: Amity.InternalChannel,
103
+ channel: Amity.StaticInternalChannel,
104
104
  channelMember: Amity.Membership<'channel'>,
105
105
  ) => void,
106
106
  ) => Amity.Unsubscriber;
@@ -1,8 +1,27 @@
1
1
  import { markAsRead } from '~/channelRepository/internalApi/markAsRead';
2
2
  import { shallowClone } from '../shallowClone';
3
+ import { queryCache } from '~/cache/api';
4
+ import { channelMemberLinkedObject } from './channelMemberLinkedObject';
3
5
 
4
6
  export const channelLinkedObject = (channel: Amity.InternalChannel): Amity.Channel => {
7
+ let previewMembers: Amity.Membership<'channel'>[] = [];
8
+
9
+ if (channel.type === 'conversation') {
10
+ const channelUsers = queryCache<Amity.Membership<'channel'>>(['channelUsers', 'get']);
11
+ if (channelUsers && channelUsers?.length > 0) {
12
+ previewMembers = (
13
+ channelUsers?.filter(({ data }) => data.channelId === channel.channelId) ?? []
14
+ )
15
+ // sort in ascending order by userInternalId
16
+ .sort((a, b) => a.data.userInternalId.localeCompare(b.data.userInternalId))
17
+ // Select only first 4 members
18
+ .slice(0, 4)
19
+ .map(({ data }) => channelMemberLinkedObject(data));
20
+ }
21
+ }
22
+
5
23
  return shallowClone(channel, {
6
24
  markAsRead: () => markAsRead(channel.channelInternalId),
25
+ previewMembers,
7
26
  });
8
27
  };
@@ -0,0 +1,20 @@
1
+ import { pullFromCache } from '~/cache/api/pullFromCache';
2
+ import { userLinkedObject } from './userLinkedObject';
3
+
4
+ export const channelMemberLinkedObject = (
5
+ channelMember: Amity.Membership<'channel'>,
6
+ ): Amity.Membership<'channel'> => {
7
+ const getUser = (): Amity.User | undefined => {
8
+ const cacheKey = ['user', 'get', channelMember.userId];
9
+ const internalUser = pullFromCache<Amity.InternalUser>(cacheKey)?.data;
10
+
11
+ return internalUser ? userLinkedObject(internalUser) : undefined;
12
+ };
13
+
14
+ return {
15
+ ...channelMember,
16
+ get user() {
17
+ return getUser();
18
+ },
19
+ };
20
+ };
@@ -14,6 +14,7 @@ import { notificationTrayLinkedObject } from './notificationTrayLinkedObject';
14
14
  import { communityLinkedObject } from './communityLinkedObject';
15
15
  import { invitationLinkedObject } from './invitationLinkedObject';
16
16
  import { joinRequestLinkedObject } from './joinRequestLinkedObject';
17
+ import { channelMemberLinkedObject } from './channelMemberLinkedObject';
17
18
 
18
19
  export const LinkedObject = {
19
20
  ad: adLinkedObject,
@@ -32,4 +33,5 @@ export const LinkedObject = {
32
33
  community: communityLinkedObject,
33
34
  invitation: invitationLinkedObject,
34
35
  joinRequest: joinRequestLinkedObject,
36
+ channelMember: channelMemberLinkedObject,
35
37
  };