UNPKG

@100mslive/react-native-room-kit

Version:

100ms Room Kit provides simple & easy to use UI components to build Live Streaming & Video Conferencing experiences in your apps.

37 lines 2.29 kB
import * as React from 'react'; import { useSelector } from 'react-redux'; import { QuizLeaderboardSummary } from './QuizLeaderboardSummary'; import { useFetchLeaderboardResponse } from '../utils/hooks'; export const VoterParticipationSummary = ({ pollId }) => { const localPeerUserId = useSelector(state => { var _state$hmsStates$loca; return (_state$hmsStates$loca = state.hmsStates.localPeer) === null || _state$hmsStates$loca === void 0 ? void 0 : _state$hmsStates$loca.customerUserID; }); const leaderboardData = useFetchLeaderboardResponse(pollId); const totalQuestions = useSelector(state => { var _state$polls$polls$po; return (_state$polls$polls$po = state.polls.polls[pollId]) === null || _state$polls$polls$po === void 0 || (_state$polls$polls$po = _state$polls$polls$po.questions) === null || _state$polls$polls$po === void 0 ? void 0 : _state$polls$polls$po.length; }); const localLeaderboardEntry = localPeerUserId && leaderboardData && Array.isArray(leaderboardData.entries) ? leaderboardData.entries.find(entry => { var _entry$peer; return ((_entry$peer = entry.peer) === null || _entry$peer === void 0 ? void 0 : _entry$peer.customerUserId) === localPeerUserId; }) : null; const data = React.useMemo(() => { return [[{ label: 'ANSWERED', value: localLeaderboardEntry && typeof localLeaderboardEntry.totalResponses === 'number' && typeof totalQuestions === 'number' ? `${Math.round(localLeaderboardEntry.totalResponses / totalQuestions * 100)}% (${localLeaderboardEntry.totalResponses}/${totalQuestions})` : '-' }, { label: 'CORRECT ANSWERS', value: localLeaderboardEntry && typeof localLeaderboardEntry.correctResponses === 'number' && typeof totalQuestions === 'number' ? `${Math.round(localLeaderboardEntry.correctResponses / totalQuestions * 100)}% (${localLeaderboardEntry.correctResponses}/${totalQuestions})` : '-' }], [{ label: 'TIME TAKEN', value: localLeaderboardEntry && typeof localLeaderboardEntry.duration === 'number' ? `${(localLeaderboardEntry.duration / 1000).toFixed(2)}s` : '-' }]]; }, [localLeaderboardEntry]); return /*#__PURE__*/React.createElement(QuizLeaderboardSummary, { data: data }); }; //# sourceMappingURL=VoterParticipationSummary.js.map