stream-chat-react-native-core
Version:
The official React Native and Expo components for Stream Chat, a service for building chat applications
44 lines • 1.96 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useChannelPreviewPollLabel = void 0;
var _react = require("react");
var _ChatContext = require("../../../contexts/chatContext/ChatContext");
var _TranslationContext = require("../../../contexts/translationContext/TranslationContext");
var _useStateStore = require("../../../hooks/useStateStore");
var selector = nextValue => ({
latest_votes_by_option: nextValue.latest_votes_by_option,
options: nextValue.options
});
var useChannelPreviewPollLabel = ({
pollId
}) => {
var _useChatContext = (0, _ChatContext.useChatContext)(),
client = _useChatContext.client;
var _useTranslationContex = (0, _TranslationContext.useTranslationContext)(),
t = _useTranslationContex.t;
var poll = client.polls.fromState(pollId);
var pollState = (0, _useStateStore.useStateStore)(poll?.state, selector) ?? {};
var latestVotesByOption = pollState.latest_votes_by_option,
pollOptions = pollState.options;
var latestVotes = (0, _react.useMemo)(() => latestVotesByOption ? Object.values(latestVotesByOption).map(votes => votes?.[0]).sort((a, b) => new Date(b.created_at).getTime() - new Date(a.created_at).getTime()) : [], [latestVotesByOption]);
return (0, _react.useMemo)(() => {
if (!(latestVotes && latestVotes.length && latestVotes[0].user)) return;
{
var option = pollOptions?.find(option => option.id === latestVotes[0].option_id);
var voteUser = latestVotes[0].user;
if (voteUser.id === client.user?.id) {
return t('You voted: {{ option }}', {
option: option?.text
});
} else {
return t('{{ user }} voted: {{ option }}', {
user: voteUser.name || voteUser.id,
option: option?.text
});
}
}
}, [latestVotes, pollOptions, client.user?.id, t]);
};
exports.useChannelPreviewPollLabel = useChannelPreviewPollLabel;
//# sourceMappingURL=useChannelPreviewPollLabel.js.map