import { useCallback, useEffect } from 'react'; import { addReactionSpaceEventListener, ReactionSpaceEvent, removeReactionSpaceEventListener, userProfile, } from '@livelike/javascript'; import { userReactionStoreActions } from '../store/userReaction'; export function useUserReactionsEffect({ reactionSpaceId }) { const addUserReaction = useCallback( (event) => { userReactionStoreActions.addUserReactionAction({ reactionSpaceId, userReaction: event.message, profileId: userProfile.id, }); }, [reactionSpaceId] ); const removeUserReaction = useCallback( (event) => { userReactionStoreActions.removeUserReactionAction({ reactionSpaceId, userReaction: event.message, profileId: userProfile.id, }); }, [reactionSpaceId] ); useEffect(() => { if (!reactionSpaceId) { return; } addReactionSpaceEventListener( { event: ReactionSpaceEvent.ADD_REACTION, reactionSpaceId, }, addUserReaction ); addReactionSpaceEventListener( { event: ReactionSpaceEvent.REMOVE_REACTION, reactionSpaceId, }, removeUserReaction ); return () => { removeReactionSpaceEventListener( { event: ReactionSpaceEvent.ADD_REACTION, reactionSpaceId, }, addUserReaction ); removeReactionSpaceEventListener( { event: ReactionSpaceEvent.REMOVE_REACTION, reactionSpaceId, }, removeUserReaction ); }; }, [reactionSpaceId]); }