diff --git a/react-app/src/components/ProposalDetailScreen/ProposalHeader.tsx b/react-app/src/components/ProposalDetailScreen/ProposalHeader.tsx index ad3bc31b..274afc89 100644 --- a/react-app/src/components/ProposalDetailScreen/ProposalHeader.tsx +++ b/react-app/src/components/ProposalDetailScreen/ProposalHeader.tsx @@ -46,16 +46,79 @@ const ProposalTitle: React.FC<{ proposal: Proposal }> = ({ proposal }) => { ); }; -const ProposalStatistics: React.FC<{ proposal: Proposal }> = ({ proposal }) => { +const ProposalPeriod: React.FC<{ proposal: Proposal }> = ({ proposal }) => { const { - votingStartTime, + depositEndTime, + submitTime, + remainingDepositDuration, + status, votingEndTime, + votingStartTime, remainingVotingDuration, - depositTotal, - turnout, - status, } = proposal; + if (status === ProposalStatus.DepositPeriod) { + return ( +
+ + +

+ {depositEndTime ? ( + , + to: , + }} + /> + ) : ( + "-" + )} +

+ {remainingDepositDuration && ( + + + + )} +
+ ); + } + + return ( +
+ + +

+ {votingStartTime && votingEndTime ? ( + , + to: , + }} + /> + ) : ( + "-" + )} +

+ {remainingVotingDuration && ( + + + + )} +
+ ); +}; + +const ProposalStatistics: React.FC<{ proposal: Proposal }> = ({ proposal }) => { + const { depositTotal, turnout } = proposal; + const totalDepositString = useMemo(() => { if (depositTotal.lt(1)) { return depositTotal.toFixed(3); @@ -79,31 +142,7 @@ const ProposalStatistics: React.FC<{ proposal: Proposal }> = ({ proposal }) => { "gap-y-5" )} > -
- - -

- {votingStartTime && votingEndTime ? ( - , - to: , - }} - /> - ) : ( - "-" - )} -

- {remainingVotingDuration && status === ProposalStatus.VotingPeriod && ( - - - - )} -
+

{`${totalDepositString} ${CoinDenom}`}

@@ -169,7 +208,7 @@ const ProposalTypeAndProposer: React.FC<{ proposal: Proposal }> = ({ ); }; -enum ProposalPeriod { +enum ProposalPeriodType { Voting = "voting", Deposit = "deposit", } @@ -200,7 +239,7 @@ const ProposalActionArea: React.FC = (props) => { proposal.depositEndTime && isBefore(now, proposal.depositEndTime) ) { - return ProposalPeriod.Deposit; + return ProposalPeriodType.Deposit; } if ( @@ -214,7 +253,7 @@ const ProposalActionArea: React.FC = (props) => { end: proposal.votingEndTime, }) ) { - return ProposalPeriod.Voting; + return ProposalPeriodType.Voting; } } @@ -255,12 +294,12 @@ const ProposalActionArea: React.FC = (props) => { theme="primary" className={cn("text-base", "leading-6", "font-medium", "px-6")} messageID={ - proposalPeriod === ProposalPeriod.Voting + proposalPeriod === ProposalPeriodType.Voting ? "ProposalDetail.voteNow" : "ProposalDetail.deposit" } onClick={ - proposalPeriod === ProposalPeriod.Voting + proposalPeriod === ProposalPeriodType.Voting ? onVoteClick : onDepositClick } diff --git a/react-app/src/i18n/translations/en.json b/react-app/src/i18n/translations/en.json index bd5c6f82..fb8f6cf5 100644 --- a/react-app/src/i18n/translations/en.json +++ b/react-app/src/i18n/translations/en.json @@ -69,7 +69,9 @@ "Proposal.status.rejected": "Rejected", "Proposal.status.votingPeriod": "Voting", "ProposalDetail.copyLink": "Copy Link", + "ProposalDetail.dateRange": "{from} to {to}", "ProposalDetail.deposit": "Deposit", + "ProposalDetail.depositPeriod": "Deposit Period", "ProposalDetail.deposits": "Deposits", "ProposalDetail.deposits.amount": "Amount", "ProposalDetail.deposits.delegatedValidators": "Delegated Validators", @@ -81,6 +83,7 @@ "ProposalDetail.deposits.others": "Others", "ProposalDetail.deposits.requestState.error": "Failed to fetch proposal deposits, please try again later.", "ProposalDetail.deposits.total": "Total", + "ProposalDetail.durationRemaining": "{duration} left", "ProposalDetail.govParams.requestState.error": "Failed to fetch governance parameters, please try again later.", "ProposalDetail.proposal.requestState.empty": "Proposal {id} does not exist.", "ProposalDetail.proposal.requestState.error": "Failed to fetch proposal, please try again later.", @@ -104,8 +107,6 @@ "ProposalDetail.votes.voter": "Voter", "ProposalDetail.votes.voter.noSecurityContact": "Contact information for this validator is not available", "ProposalDetail.votes.voter.validator": "Validator", - "ProposalDetail.votingDateRange": "{from} to {to}", - "ProposalDetail.votingDurationRemaining": "{duration} left", "ProposalDetail.votingPeriod": "Voting Period", "ProposalHistory.comment": "Comment", "ProposalHistory.filters.deposited": "Deposited Proposals", diff --git a/react-app/src/i18n/translations/zh.json b/react-app/src/i18n/translations/zh.json index c6e4d897..97a2c2d9 100644 --- a/react-app/src/i18n/translations/zh.json +++ b/react-app/src/i18n/translations/zh.json @@ -69,7 +69,9 @@ "Proposal.status.rejected": "Rejected", "Proposal.status.votingPeriod": "Voting", "ProposalDetail.copyLink": "Copy Link", + "ProposalDetail.dateRange": "{from} to {to}", "ProposalDetail.deposit": "Deposit", + "ProposalDetail.depositPeriod": "Deposit Period", "ProposalDetail.deposits": "Deposits", "ProposalDetail.deposits.amount": "Amount", "ProposalDetail.deposits.delegatedValidators": "Delegated Validators", @@ -81,6 +83,7 @@ "ProposalDetail.deposits.others": "Others", "ProposalDetail.deposits.requestState.error": "Failed to fetch proposal deposits, please try again later.", "ProposalDetail.deposits.total": "Total", + "ProposalDetail.durationRemaining": "{duration} left", "ProposalDetail.govParams.requestState.error": "Failed to fetch governance parameters, please try again later.", "ProposalDetail.proposal.requestState.empty": "Proposal {id} does not exist.", "ProposalDetail.proposal.requestState.error": "Failed to fetch proposal, please try again later.", @@ -104,8 +107,6 @@ "ProposalDetail.votes.voter": "Voter", "ProposalDetail.votes.voter.noSecurityContact": "Contact information for this validator is not available", "ProposalDetail.votes.voter.validator": "Validator", - "ProposalDetail.votingDateRange": "{from} 至 {to}", - "ProposalDetail.votingDurationRemaining": "剩餘{duration}", "ProposalDetail.votingPeriod": "Voting Period", "ProposalHistory.comment": "Comment", "ProposalHistory.filters.deposited": "Deposited Proposals",