@@ -33,6 +33,7 @@ import Cardano.CEM
3333import Cardano.CEM.Monads
3434import Cardano.CEM.OnChain (CEMScriptCompiled (.. ), cemScriptAddress )
3535import Cardano.Extras
36+ import Data.Either.Extra (mapRight )
3637import Data.Spine (HasSpine (getSpine ))
3738
3839fromPlutusAddressInMonad ::
@@ -65,8 +66,7 @@ failLeft (Right value) = return value
6566
6667-- TODO: use regular CEMScript
6768cemTxOutDatum :: (CEMScriptCompiled script ) => TxOut ctx Era -> Maybe (CEMScriptDatum script )
68- cemTxOutDatum txOut =
69- fromData =<< toPlutusData <$> getScriptData <$> mTxOutDatum txOut
69+ cemTxOutDatum txOut = fromData . (toPlutusData <$> getScriptData) =<< mTxOutDatum txOut
7070
7171cemTxOutState :: (CEMScriptCompiled script ) => TxOut ctx Era -> Maybe (State script )
7272cemTxOutState txOut =
@@ -124,7 +124,7 @@ resolveAction
124124 mScriptTxIn = case transitionStage (Proxy :: Proxy script ) Map. ! getSpine transition of
125125 (_, Nothing , _) -> Nothing
126126 _ -> mScriptTxIn'
127- mState = cemTxOutState =<< snd <$> mScriptTxIn
127+ mState = cemTxOutState . snd =<< mScriptTxIn
128128 witnesedScriptTxIns =
129129 case mScriptTxIn of
130130 Just (txIn, _) ->
@@ -168,7 +168,7 @@ resolveAction
168168 scriptAddress = cemScriptAddress (Proxy :: Proxy script )
169169 resolveTxIn (MkTxFansC _ (MkTxFanFilter addressSpec _) _) = do
170170 utxo <- lift $ queryUtxo $ ByAddresses [address]
171- return $ map (\ (x, y) -> ( withKeyWitness x, y) ) $ Map. toList $ unUTxO utxo
171+ return $ map (first withKeyWitness) $ Map. toList $ unUTxO utxo
172172 where
173173 address = addressSpecToAddress scriptAddress addressSpec
174174 compileTxConstraint
@@ -178,7 +178,8 @@ resolveAction
178178 TxOut address' value datum ReferenceScriptNone
179179 return $ case quantor of
180180 ExactlyNFans n -> replicate (fromInteger n) $ compiledTxOut minUtxoValue
181- FansWithTotalValueOfAtLeast value -> [compiledTxOut $ (convertTxOut $ fromPlutusValue value) <> minUtxoValue]
181+ FansWithTotalValueOfAtLeast value ->
182+ [compiledTxOut $ convertTxOut (fromPlutusValue value) <> minUtxoValue]
182183 where
183184 datum = case filterSpec of
184185 AnyDatum -> TxOutDatumNone
@@ -215,6 +216,10 @@ resolveTx spec = runExceptT $ do
215216 mergedSpec' = head actionsSpecs
216217 mergedSpec = (mergedSpec' :: ResolvedTx ) {signer = specSigner spec}
217218
219+ -- liftIO $ do
220+ -- putStr "Resolved spec: "
221+ -- print mergedSpec
222+
218223 return mergedSpec
219224
220225resolveTxAndSubmit ::
@@ -228,3 +233,15 @@ resolveTxAndSubmit spec = do
228233 ExceptT $ first UnhandledSubmittingError <$> result
229234 logEvent $ SubmittedTxSpec spec result
230235 return result
236+
237+ resolveTxAndSubmitRet ::
238+ (MonadQueryUtxo m , MonadSubmitTx m , MonadIO m ) =>
239+ TxSpec ->
240+ m (Either TxResolutionError (TxBody Era , TxInMode , UTxO Era ))
241+ resolveTxAndSubmitRet spec = do
242+ result <- runExceptT $ do
243+ resolved <- ExceptT $ resolveTx spec
244+ let result = submitResolvedTxRet resolved
245+ ExceptT $ first UnhandledSubmittingError <$> result
246+ logEvent $ SubmittedTxSpec spec (mapRight (getTxId . (\ (a, _, _) -> a)) result)
247+ return result
0 commit comments