/* Copyright 2024 Tim Vahlbrock SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ import { PollAnswerSubevent, PollStartEvent } from "matrix-js-sdk/src/extensible_events_v1/PollStartEvent"; import { RoomMember } from "matrix-js-sdk/src/matrix"; import React from "react"; import { _t } from "../../../languageHandler"; import Modal from "../../../Modal"; import MemberAvatar from "../avatars/MemberAvatar"; import { UserVote } from "../messages/MPollBody"; import BaseDialog from "./BaseDialog"; interface IProps { pollEvent: PollStartEvent; votes: Map; members: RoomMember[]; } export default function PollResultsDialog(props: IProps): JSX.Element { return ( Modal.closeCurrentModal()} className="mx_PollResultsDialog" > {props.pollEvent.answers.map((answer) => { const votes = props.votes.get(answer.id) || []; if (votes.length === 0) return; return ; })} ); } function AnswerEntry(props: { answer: PollAnswerSubevent; members: RoomMember[]; votes: UserVote[] }): JSX.Element { const { answer, members, votes } = props; return (
{answer.text} {_t("poll|result_dialog|count_of_votes", { count: votes.length })}
{votes.length === 0 &&
No one voted for this.
} {votes.map((vote) => { const member = members.find((m) => m.userId === vote.sender); if (member) return ; })}
); } function VoterEntry(props: { vote: UserVote; member: RoomMember }): JSX.Element { const { vote, member } = props; return (
{member.name}
); }