Skip to content

Commit

Permalink
Transaction view: show proposals and votes
Browse files Browse the repository at this point in the history
  • Loading branch information
smelc committed May 23, 2024
1 parent d363518 commit a2873b3
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 2 deletions.
1 change: 1 addition & 0 deletions cardano-cli/cardano-cli.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -241,6 +241,7 @@ library
, transformers-except ^>= 0.1.3
, unliftio-core
, utf8-string
, vector
, yaml

executable cardano-cli
Expand Down
47 changes: 45 additions & 2 deletions cardano-cli/src/Cardano/CLI/Json/Friendly.hs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
{-# LANGUAGE GADTs #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeOperators #-}

-- | User-friendly pretty-printing for textual user interfaces (TUI)
Expand Down Expand Up @@ -36,7 +37,7 @@ import Cardano.Api.Shelley (Address (ShelleyAddress), Hash (..),
fromShelleyStakeReference, toShelleyStakeCredential)

import Cardano.CLI.Types.MonadWarning (MonadWarning, eitherToWarning, runWarningIO)
import Cardano.Prelude (first)
import Cardano.Prelude (Foldable (..), first)

import Codec.CBOR.Encoding (Encoding)
import Codec.CBOR.FlatTerm (fromFlatTerm, toFlatTerm)
Expand All @@ -56,12 +57,16 @@ import qualified Data.Map.Strict as Map
import Data.Maybe (catMaybes, isJust, maybeToList)
import Data.Ratio (numerator)
import qualified Data.Text as Text
import qualified Data.Vector as Vector
import Data.Yaml (array)
import Data.Yaml.Pretty (setConfCompare)
import qualified Data.Yaml.Pretty as Yaml
import GHC.Real (denominator)
import GHC.Unicode (isAlphaNum)

{- HLINT ignore "Redundant bracket" -}
{- HLINT ignore "Move brackets to avoid $" -}

data FriendlyFormat = FriendlyJson | FriendlyYaml

friendly ::
Expand Down Expand Up @@ -175,6 +180,8 @@ friendlyTxBodyImpl
, txTotalCollateral
, txReturnCollateral
, txInsReference
, txProposalProcedures
, txVotingProcedures
, txUpdateProposal
, txValidityLowerBound
, txValidityUpperBound
Expand All @@ -200,7 +207,43 @@ friendlyTxBodyImpl
, "update proposal" .= friendlyUpdateProposal txUpdateProposal
, "validity range" .= friendlyValidityRange era (txValidityLowerBound, txValidityUpperBound)
, "withdrawals" .= friendlyWithdrawals txWithdrawals
])
]) ++
(inEonForEra
[]
(\(cOnwards :: ConwayEraOnwards era) ->
case txProposalProcedures of
Nothing -> []
Just (Featured _ TxProposalProceduresNone) -> []
Just (Featured _ (TxProposalProcedures lProposals _witnesses)) ->
["governance actions" .= (friendlyLedgerProposals cOnwards $ toList lProposals)])
era)
++
(inEonForEra
[]
(\cOnwards ->
case txVotingProcedures of
Nothing -> []
Just (Featured _ TxVotingProceduresNone) -> []
Just (Featured _ (TxVotingProcedures votes _witnesses)) ->
["votes" .= (friendlyVotingProcedures cOnwards votes)])
era)
where
friendlyLedgerProposals :: ConwayEraOnwards era -> [L.ProposalProcedure (ShelleyLedgerEra era)] -> Aeson.Value
friendlyLedgerProposals cOnwards proposalProcedures =
Array $ Vector.fromList $ map (friendlyLedgerProposal cOnwards) proposalProcedures

friendlyLedgerProposal :: ConwayEraOnwards era -> L.ProposalProcedure (ShelleyLedgerEra era) -> Aeson.Value
friendlyLedgerProposal cOnwards proposalProcedure = object $ friendlyProposalImpl cOnwards (Proposal proposalProcedure)

friendlyVotingProcedures :: ConwayEraOnwards era -> L.VotingProcedures (ShelleyLedgerEra era) -> Aeson.Value
friendlyVotingProcedures cOnwards x = conwayEraOnwardsConstraints cOnwards $ toJSON x -- (L.VotingProcedures { L.unVotingProcedures = votesMap }) =
-- conwayEraOnwardsConstraints cOnwards $ array $ [
-- object $ [
-- "voter" .= toJSON voter
-- , "votes" .= undefined
-- ]
-- | (voter, votes) <- Map.toList votesMap
-- ]

redeemerIfShelleyBased :: MonadWarning m => CardanoEra era -> TxBody era -> m [Aeson.Pair]
redeemerIfShelleyBased era tb =
Expand Down

0 comments on commit a2873b3

Please sign in to comment.