@amityco/ts-sdk
Version:
Amity Social Cloud Typescript SDK
28 lines (24 loc) • 1.08 kB
text/typescript
import { markAsRead } from '~/channelRepository/internalApi/markAsRead';
import { shallowClone } from '../shallowClone';
import { queryCache } from '~/cache/api';
import { channelMemberLinkedObject } from './channelMemberLinkedObject';
export const channelLinkedObject = (channel: Amity.InternalChannel): Amity.Channel => {
let previewMembers: Amity.Membership<'channel'>[] = [];
if (channel.type === 'conversation') {
const channelUsers = queryCache<Amity.Membership<'channel'>>(['channelUsers', 'get']);
if (channelUsers && channelUsers?.length > 0) {
previewMembers = (
channelUsers?.filter(({ data }) => data.channelId === channel.channelId) ?? []
)
// sort in ascending order by userInternalId
.sort((a, b) => a.data.userInternalId.localeCompare(b.data.userInternalId))
// Select only first 4 members
.slice(0, 4)
.map(({ data }) => channelMemberLinkedObject(data));
}
}
return shallowClone(channel, {
markAsRead: () => markAsRead(channel.channelInternalId),
previewMembers,
});
};