@amityco/ts-sdk
Version:
Amity Social Cloud Typescript SDK
57 lines (46 loc) • 1.58 kB
text/typescript
import { addPostSetting } from '~/communityRepository/utils';
import { updateMembershipStatus } from '~/communityRepository/utils/communityWithMembership';
export const preparePostPayload = (payload: Amity.PostPayload): Amity.ProcessedPostPayload => {
const { posts: postsData, ...postPayload } = payload;
// Unpack community payload by mapping payload field to postSetting value.
const communitiesWithPostSetting = addPostSetting({ communities: postPayload.communities });
// map users with community
const mappedCommunityUsers: Array<Amity.Membership<'community'>> = postPayload.communityUsers.map(
communityUser => {
const user = postPayload.users.find(user => user.userId === communityUser.userId)!;
return {
...communityUser,
user,
};
},
);
const communityWithMembershipStatus = updateMembershipStatus(
communitiesWithPostSetting,
mappedCommunityUsers,
);
// feed type
const posts = postsData.map(post => {
const feedType = postPayload.feeds.find(feed => feed.feedId === post.feedId)?.feedType;
return {
...post,
feedType,
};
});
return {
...postPayload,
posts,
communities: communityWithMembershipStatus,
communityUsers: mappedCommunityUsers,
};
};
export const prepareSemanticSearchPostPayload = ({
searchResult,
polls,
...postPayload
}: Amity.SemanticSearchPostPayload): Amity.ProcessedSemanticSearchPostPayload => {
const processedPostPayload = preparePostPayload(postPayload);
return {
...processedPostPayload,
polls,
};
};