@livelike/react-native
Version:
LiveLike React Native package
40 lines • 1.47 kB
JavaScript
import { useMemo } from 'react';
import { userReactionStore } from '../store';
import { useReactionPacks } from './useReactionPacks';
import { useSelectedFieldStore } from './useSelectedFieldStore';
const initialUserReactionValue = {};
export function useUserReactions(_ref) {
let {
reactionSpaceId,
targetId
} = _ref;
const targetIdUserReactions = useSelectedFieldStore(userReactionStore, () => {
var _userReactionStore$ge;
return ((_userReactionStore$ge = userReactionStore.get()) === null || _userReactionStore$ge === void 0 || (_userReactionStore$ge = _userReactionStore$ge[reactionSpaceId]) === null || _userReactionStore$ge === void 0 ? void 0 : _userReactionStore$ge[targetId]) || initialUserReactionValue;
});
const {
reactionPacks
} = useReactionPacks({
reactionSpaceId
});
const validUserReactions = useMemo(() => {
if (!reactionPacks.length || !Object.keys(targetIdUserReactions).length) {
return initialUserReactionValue;
}
return reactionPacks.reduce((_allReactions, pack) => {
pack.emojis.forEach(emoji => {
if (targetIdUserReactions[emoji.id]) {
_allReactions[emoji.id] = {
...targetIdUserReactions[emoji.id],
imageSrc: emoji.file
};
}
});
return _allReactions;
}, {});
}, [targetIdUserReactions, reactionPacks]);
return {
userReactions: validUserReactions
};
}
//# sourceMappingURL=useUserReactions.js.map