Skip to content

Commit

Permalink
New ModeTx GADT to help with default values across BuildTx/ViewTx
Browse files Browse the repository at this point in the history
  • Loading branch information
newhoggy committed Mar 21, 2023
1 parent 16e60df commit 7a1ddcc
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 3 deletions.
1 change: 1 addition & 0 deletions cardano-api/src/Cardano/Api.hs
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,7 @@ module Cardano.Api (
defaultTxBodyContent,
defaultTxFee,
defaultTxValidityUpperBound,
defaultBuildTxWith,
setTxIns,
setTxInsCollateral,
setTxInsReference,
Expand Down
18 changes: 15 additions & 3 deletions cardano-api/src/Cardano/Api/TxBody.hs
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ module Cardano.Api.TxBody (
defaultTxBodyContent,
defaultTxFee,
defaultTxValidityUpperBound,
defaultBuildTxWith,
setTxIns,
setTxInsCollateral,
setTxInsReference,
Expand Down Expand Up @@ -106,6 +107,7 @@ module Cardano.Api.TxBody (
BuildTxWith(..),
BuildTx,
ViewTx,
ModeTx(..),

-- * Era-dependent transaction body features
CollateralSupportedInEra(..),
Expand Down Expand Up @@ -1325,6 +1327,16 @@ data BuildTxWith build a where
ViewTx :: BuildTxWith ViewTx a
BuildTxWith :: a -> BuildTxWith BuildTx a

defaultBuildTxWith :: ModeTx build -> a -> BuildTxWith build a
defaultBuildTxWith inModeTx a =
case inModeTx of
InViewTx -> ViewTx
InBuildTx -> BuildTxWith a

data ModeTx a where
InBuildTx :: ModeTx BuildTx
InViewTx :: ModeTx ViewTx

instance Functor (BuildTxWith build) where
fmap _ ViewTx = ViewTx
fmap f (BuildTxWith x) = BuildTxWith (f x)
Expand Down Expand Up @@ -1765,8 +1777,8 @@ data TxBodyContent build era =
}
deriving (Eq, Show)

defaultTxBodyContent :: IsCardanoEra era => TxBodyContent BuildTx era
defaultTxBodyContent = TxBodyContent
defaultTxBodyContent :: IsCardanoEra era => ModeTx mtx -> TxBodyContent mtx era
defaultTxBodyContent mtx = TxBodyContent
{ txIns = []
, txInsCollateral = TxInsCollateralNone
, txInsReference = TxInsReferenceNone
Expand All @@ -1778,7 +1790,7 @@ defaultTxBodyContent = TxBodyContent
, txMetadata = TxMetadataNone
, txAuxScripts = TxAuxScriptsNone
, txExtraKeyWits = TxExtraKeyWitnessesNone
, txProtocolParams = BuildTxWith Nothing
, txProtocolParams = defaultBuildTxWith mtx Nothing
, txWithdrawals = TxWithdrawalsNone
, txCertificates = TxCertificatesNone
, txUpdateProposal = TxUpdateProposalNone
Expand Down

0 comments on commit 7a1ddcc

Please sign in to comment.