@@ -11,17 +11,17 @@ import (
1111 "github.com/cosmos/cosmos-sdk/codec"
1212 sdk "github.com/cosmos/cosmos-sdk/types"
1313 "github.com/cosmos/cosmos-sdk/x/authz"
14- bmetypes "pkg.akt.dev/go/node/bme/v1"
15- dv1beta "pkg.akt.dev/go/node/deployment/v1beta5"
16- mtypes "pkg.akt.dev/go/node/market/v2beta1"
17- "pkg.akt.dev/go/sdkutil"
1814
15+ bmetypes "pkg.akt.dev/go/node/bme/v1"
16+ dvbeta "pkg.akt.dev/go/node/deployment/v1beta5"
1917 escrowid "pkg.akt.dev/go/node/escrow/id/v1"
2018 "pkg.akt.dev/go/node/escrow/module"
2119 etypes "pkg.akt.dev/go/node/escrow/types/v1"
2220 ev1 "pkg.akt.dev/go/node/escrow/v1"
21+ mtypes "pkg.akt.dev/go/node/market/v2beta1"
2322 types "pkg.akt.dev/go/node/market/v2beta1"
2423 deposit "pkg.akt.dev/go/node/types/deposit/v1"
24+ "pkg.akt.dev/go/sdkutil"
2525)
2626
2727type AccountHook func (sdk.Context , etypes.Account ) error
@@ -159,19 +159,18 @@ func (k *keeper) AuthorizeDeposits(sctx sdk.Context, msg sdk.Msg) ([]etypes.Depo
159159
160160 owner := signers [0 ]
161161
162- // Try HasDeposits interface first (new - supports multiple deposits)
163162 var deposits deposit.Deposits
164- if hasDepositsMsg , ok := msg .(deposit. HasDeposits ); ok {
165- deposits = hasDepositsMsg . GetDeposits ()
166- } else if hasDepositMsg , ok := msg .( deposit.HasDeposit ); ok {
167- // Fall back to HasDeposit interface (old - single deposit)
168- deposits = deposit. Deposits { hasDepositMsg . GetDeposit ()}
169- } else {
163+ switch mt := msg .(type ) {
164+ case deposit. HasDeposit :
165+ deposits = deposit.Deposits { mt . GetDeposit ()}
166+ case deposit. HasDeposits :
167+ deposits = mt . GetDeposits ()
168+ default :
170169 return nil , fmt .Errorf ("%w: message [%s] does not implement deposit.HasDeposit or deposit.HasDeposits" , module .ErrInvalidDeposit , reflect .TypeOf (msg ).String ())
171170 }
172171
173172 // Process each deposit
174- for depositIdx , dep := range deposits {
173+ for _ , dep := range deposits {
175174 denom := dep .Amount .Denom
176175 remainder := sdkmath .NewInt (dep .Amount .Amount .Int64 ())
177176
@@ -214,18 +213,48 @@ func (k *keeper) AuthorizeDeposits(sctx sdk.Context, msg sdk.Msg) ([]etypes.Depo
214213
215214 requestedSpend := sdk .NewCoin (denom , remainder )
216215
216+ var authzMsg sdk.Msg
217+
217218 // bc authz.Accepts take sdk.Msg as an argument, the deposit amount from incoming message
218219 // has to be modified in place to correctly calculate what deposits to take from grants
219220 switch mt := msg .(type ) {
220221 case * ev1.MsgAccountDeposit :
221- mt .Deposit .Amount = requestedSpend
222- case * dv1beta.MsgCreateDeployment :
223- mt .Deposits [depositIdx ].Amount = requestedSpend
222+ authzMsg = & ev1.MsgAccountDeposit {
223+ Signer : mt .Signer ,
224+ ID : mt .ID ,
225+ Deposit : deposit.Deposit {
226+ Amount : requestedSpend ,
227+ Direct : mt .Deposit .Direct ,
228+ Sources : mt .Deposit .Sources ,
229+ },
230+ }
231+ case * dvbeta.MsgCreateDeployment :
232+ authzMsg = & dvbeta.MsgCreateDeployment {
233+ ID : mt .ID ,
234+ Groups : mt .Groups ,
235+ Hash : mt .Hash ,
236+ Deposits : deposit.Deposits {
237+ {
238+ Amount : requestedSpend ,
239+ Direct : dep .Direct ,
240+ Sources : dep .Sources ,
241+ },
242+ },
243+ }
224244 case * mtypes.MsgCreateBid :
225- mt .Deposit .Amount = requestedSpend
245+ authzMsg = & mtypes.MsgCreateBid {
246+ ID : mt .ID ,
247+ Prices : mt .Prices ,
248+ Deposit : deposit.Deposit {
249+ Amount : requestedSpend ,
250+ Direct : dep .Direct ,
251+ Sources : dep .Sources ,
252+ },
253+ ResourcesOffer : mt .ResourcesOffer ,
254+ }
226255 }
227256
228- resp , err := depositAuthz .TryAccept (ctx , msg , true )
257+ resp , err := depositAuthz .TryAccept (ctx , authzMsg , true )
229258 if err != nil {
230259 return false
231260 }
0 commit comments