import React, { useState } from "react"; import { Icon, Button, Message, Divider, Header } from "semantic-ui-react"; import useVoteStyles from "./useVoteStyles"; import TxButton from "@polkadot/joy-utils/TxButton"; import { MemberId } from "@joystream/types/members"; import { ProposalId } from "@joystream/types/proposals"; import { useTransport } from "../runtime"; import { VoteKind } from '@joystream/types/proposals'; import { usePromise } from "../utils"; import { VoteKinds } from "@joystream/types/proposals"; export type VoteKindStr = typeof VoteKinds[number]; type VoteButtonProps = { memberId: MemberId, voteKind: VoteKindStr, proposalId: ProposalId, onSuccess: () => void } function VoteButton({ voteKind, proposalId, memberId, onSuccess }: VoteButtonProps) { const { icon, color } = useVoteStyles(voteKind); return ( // Button.Group "cheat" to force TxButton color sendTx() } txFailedCb={ () => null } txSuccessCb={ onSuccess } className={`icon left labeled`}> { voteKind } ) } type VotingSectionProps = { memberId: MemberId, proposalId: ProposalId, isVotingPeriod: boolean, }; export default function VotingSection({ memberId, proposalId, isVotingPeriod }: VotingSectionProps) { const transport = useTransport(); const [voted, setVoted] = useState(null); const [vote] = usePromise( () => transport.voteByProposalAndMember(proposalId, memberId), undefined ); if (vote === undefined) { // Loading / error return null; } const voteStr: VoteKindStr | null = voted || (vote && vote.type.toString() as VoteKindStr); if (voteStr) { const { icon, color } = useVoteStyles(voteStr); return ( You voted {`"${voteStr}"`} ); } else if (!isVotingPeriod) { return null; } return ( <>
Sumbit your vote
{ VoteKinds.map((voteKind) => setVoted(voteKind) }/> ) } ); }