@livelike/react-native
Version:
LiveLike React Native package
45 lines • 1.53 kB
JavaScript
import { useCallback, useEffect } from 'react';
import { getReactionSpaceDetail, getReactionPackDetail, addReactionSpaceEventListener, ReactionSpaceEvent, removeReactionSpaceEventListener } from '@livelike/javascript';
import { reactionPackStoreActions } from '../store/reactionPack';
const loadReactionPackFromReactionSpace = reactionSpace => {
return Promise.all(reactionSpace.reaction_pack_ids.map(reactionPackId => getReactionPackDetail({
reactionPackId
}))).then(reactionPacks => {
reactionPackStoreActions.updateReactionPackAction({
reactionSpaceId: reactionSpace.id,
reactionPacks
});
});
};
export function useLoadReactionPacksEffect(_ref) {
let {
reactionSpaceId
} = _ref;
useEffect(() => {
if (!reactionSpaceId) {
return;
}
getReactionSpaceDetail({
reactionSpaceId
}).then(loadReactionPackFromReactionSpace);
}, [reactionSpaceId]);
const reactionSpaceListener = useCallback(event => {
return loadReactionPackFromReactionSpace(event.message);
}, [reactionSpaceId]);
useEffect(() => {
if (!reactionSpaceId) {
return;
}
addReactionSpaceEventListener({
event: ReactionSpaceEvent.UPDATE_REACTION_SPACE,
reactionSpaceId
}, reactionSpaceListener);
return () => {
removeReactionSpaceEventListener({
event: ReactionSpaceEvent.UPDATE_REACTION_SPACE,
reactionSpaceId
}, reactionSpaceListener);
};
}, [reactionSpaceId]);
}
//# sourceMappingURL=useLoadReactionPacksEffect.js.map