@@ -88,6 +88,18 @@ data TokenUpdateFailure
88
88
89
89
instance Exception TokenUpdateFailure
90
90
91
+ data TokenBootFailure
92
+ = NoTokenIdReturned
93
+ | TokenIdNotValidJSON
94
+ deriving (Show , Eq )
95
+
96
+ instance Monad m => ToJSON m TokenBootFailure where
97
+ toJSON = \ case
98
+ NoTokenIdReturned ->
99
+ toJSON (" No TokenId returned" :: String )
100
+ TokenIdNotValidJSON ->
101
+ toJSON (" TokenId is not valid JSON" :: String )
102
+
91
103
instance Monad m => ToJSON m TokenUpdateFailure where
92
104
toJSON = \ case
93
105
TokenNotParsable tk ->
@@ -102,7 +114,10 @@ instance Monad m => ToJSON m TokenUpdateFailure where
102
114
toJSON (" Token update not requested from token owner" :: String )
103
115
104
116
data TokenCommand a where
105
- BootToken :: Wallet -> TokenCommand (WithTxHash TokenId )
117
+ BootToken
118
+ :: Wallet
119
+ -> TokenCommand
120
+ (AValidationResult TokenBootFailure (WithTxHash TokenId ))
106
121
UpdateToken
107
122
:: TokenId
108
123
-> Wallet
@@ -168,13 +183,11 @@ tokenCmdCore command = do
168
183
BootToken wallet -> do
169
184
Submission submit <- ($ wallet) <$> askSubmit
170
185
lift $ do
171
- WithTxHash txHash jTokenId <- submit
172
- $ \ address -> mpfsBootToken mpfs address
173
- case jTokenId of
174
- Just tkId -> case fromJSON tkId of
175
- Nothing -> error " BootToken failed, TokenId is not valid JSON"
176
- Just tokenId -> pure $ WithTxHash txHash (Just tokenId)
177
- _ -> error " BootToken failed, no TokenId returned"
186
+ WithTxHash txHash jTokenId <- submit $ mpfsBootToken mpfs
187
+ runValidate $ do
188
+ tkId <- liftMaybe NoTokenIdReturned jTokenId
189
+ tokenId <- liftMaybe TokenIdNotValidJSON $ fromJSON tkId
190
+ pure $ WithTxHash txHash (Just tokenId)
178
191
EndToken tk wallet -> do
179
192
Submission submit <- ($ wallet) <$> askSubmit
180
193
lift $ do
0 commit comments