Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions src/BotPlutusInterface/Contract.hs
Original file line number Diff line number Diff line change
Expand Up @@ -41,17 +41,15 @@ import Plutus.Contract.Effects (
import Plutus.Contract.Resumable (Resumable (..))
import Plutus.Contract.Types (Contract (..), ContractEffs)
import Wallet.Emulator.Error (WalletAPIError (..))
import Wallet.Emulator.Types (Wallet)
import Prelude

runContract ::
forall (w :: Type) (s :: Row Type) (e :: Type) (a :: Type).
(ToJSON w, Monoid w) =>
ContractEnvironment w ->
Wallet ->
Contract w s e a ->
IO (Either e a)
runContract contractEnv _ (Contract effs) = do
runContract contractEnv (Contract effs) = do
runM $ handlePABEffect @w contractEnv $ raiseEnd $ handleContract contractEnv effs

handleContract ::
Expand Down Expand Up @@ -120,7 +118,7 @@ handlePABReq contractEnv req = do
----------------------
OwnPaymentPublicKeyHashReq ->
-- TODO: Should be able to get this from the wallet, hardcoded for now
pure $ OwnPaymentPublicKeyHashResp $ PaymentPubKeyHash $ contractEnv.cePABConfig.pcOwnPubKeyHash
pure $ OwnPaymentPublicKeyHashResp $ PaymentPubKeyHash contractEnv.cePABConfig.pcOwnPubKeyHash
OwnContractInstanceIdReq ->
pure $ OwnContractInstanceIdResp (ceContractInstanceId contractEnv)
ChainIndexQueryReq query ->
Expand Down
16 changes: 6 additions & 10 deletions src/BotPlutusInterface/Server.hs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import Data.Aeson qualified as JSON
import Data.Either.Combinators (leftToMaybe)
import Data.Kind (Type)
import Data.Map qualified as Map
import Data.Maybe (catMaybes, fromMaybe)
import Data.Maybe (catMaybes)
import Data.Proxy (Proxy (Proxy))
import Data.Row (Row)
import Data.UUID.V4 qualified as UUID
Expand Down Expand Up @@ -48,7 +48,6 @@ import Plutus.PAB.Webserver.Types (
import Servant.API (JSON, Post, ReqBody, (:<|>) (..), (:>))
import Servant.API.WebSocket (WebSocketPending)
import Servant.Server (Application, Handler, Server, serve)
import Wallet.Emulator (Wallet, knownWallet)
import Wallet.Types (ContractInstanceId (..))
import Prelude

Expand Down Expand Up @@ -171,10 +170,9 @@ activateContractHandler ::
AppState ->
ContractActivationArgs c ->
Handler ContractInstanceId
activateContractHandler pabConf state (ContractActivationArgs cardMessage maybeWallet) =
let wallet = fromMaybe (knownWallet 1) maybeWallet
in case getContract cardMessage of
SomeBuiltin contract -> handleContract pabConf wallet state contract
activateContractHandler pabConf state (ContractActivationArgs cardMessage _) =
case getContract cardMessage of
SomeBuiltin contract -> handleContract pabConf state contract

handleContract ::
forall
Expand All @@ -187,11 +185,10 @@ handleContract ::
, IsContract contract
) =>
PABConfig ->
Wallet ->
AppState ->
contract w s e a ->
Handler ContractInstanceId
handleContract pabConf wallet state@(AppState st) contract = liftIO $ do
handleContract pabConf state@(AppState st) contract = liftIO $ do
contractInstanceID <- liftIO $ ContractInstanceId <$> UUID.nextRandom
contractState <- newTVarIO (ContractState Active mempty)

Expand All @@ -201,12 +198,11 @@ handleContract pabConf wallet state@(AppState st) contract = liftIO $ do
ContractEnvironment
{ cePABConfig = pabConf
, ceContractState = contractState
, ceWallet = wallet
, ceContractInstanceId = contractInstanceID
}
void $
forkIO $ do
result <- runContract contractEnv wallet (toContract contract)
result <- runContract contractEnv (toContract contract)
let maybeError = toJSON <$> leftToMaybe result
broadcastContractResult @w state contractInstanceID maybeError
pure contractInstanceID
2 changes: 0 additions & 2 deletions src/BotPlutusInterface/Types.hs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ import Plutus.PAB.Effects.Contract.Builtin (
endpointsToSchemas,
)
import Servant.Client (BaseUrl (BaseUrl), Scheme (Http))
import Wallet.Emulator (Wallet)
import Wallet.Types (ContractInstanceId (..))
import Prelude

Expand Down Expand Up @@ -60,7 +59,6 @@ data ContractEnvironment w = ContractEnvironment
{ cePABConfig :: PABConfig
, ceContractInstanceId :: ContractInstanceId
, ceContractState :: TVar (ContractState w)
, ceWallet :: Wallet
}
deriving stock (Show)

Expand Down
2 changes: 0 additions & 2 deletions test/Spec/MockContract.hs
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,6 @@ import Plutus.Contract.Effects (ChainIndexQuery (..), ChainIndexResponse (..))
import Plutus.PAB.Core.ContractInstance.STM (Activity (Active))
import PlutusTx.Builtins (fromBuiltin)
import System.IO.Unsafe (unsafePerformIO)
import Wallet.Emulator (knownWallet)
import Wallet.Types (ContractInstanceId (ContractInstanceId))
import Prelude

Expand Down Expand Up @@ -197,7 +196,6 @@ instance Monoid w => Default (ContractEnvironment w) where
{ cePABConfig = def {pcNetwork = Mainnet, pcOwnPubKeyHash = pkh1}
, ceContractInstanceId = ContractInstanceId UUID.nil
, ceContractState = unsafePerformIO $ newTVarIO def
, ceWallet = knownWallet 1
}

instance Monoid w => Default (ContractState w) where
Expand Down