@livelike/react-native
Version:
LiveLike React Native package
49 lines (43 loc) • 1.33 kB
text/typescript
import { useCallback } from 'react';
import { getUserReactionsCount } from '@livelike/javascript';
import { userReactionStoreActions } from '../store/userReaction';
export type UseLoadUserReactionsArg = {
reactionSpaceId: string;
};
export function useLoadUserReactions({
reactionSpaceId,
}: UseLoadUserReactionsArg) {
const loadUserReactions = useCallback(
({ targetIds }: { targetIds: string[] }) => {
if (targetIds.length === 0 || !reactionSpaceId) {
return;
}
const loadUserReactionCountData = async () => {
const { results: _userReactions } = await getUserReactionsCount({
targetIds,
reactionSpaceId,
});
const reducedUserReactions = _userReactions.reduce(
(accReactions, reaction) => {
accReactions[reaction.target_id] = reaction.reactions.reduce(
(a, r) => {
a[r.reaction_id] = r;
return a;
},
{}
);
return accReactions;
},
{}
);
userReactionStoreActions.loadUserReactionAction({
reactionSpaceId,
targetUserReactions: reducedUserReactions,
});
};
loadUserReactionCountData();
},
[reactionSpaceId]
);
return { loadUserReactions };
}