diff --git a/ocp/rpc/transaction/intent_handler.go b/ocp/rpc/transaction/intent_handler.go index ebe157e..80e7a67 100644 --- a/ocp/rpc/transaction/intent_handler.go +++ b/ocp/rpc/transaction/intent_handler.go @@ -400,6 +400,7 @@ func (h *SendPublicPaymentIntentHandler) PopulateMetadata(ctx context.Context, i var nativeAmount float64 var exchangeRate float64 var quarks uint64 + var usdMarketValue float64 switch typed := typedProtoMetadata.ExchangeData.(type) { case *transactionpb.SendPublicPaymentMetadata_ClientExchangeData: currencyCode = currency_lib.Code(typed.ClientExchangeData.CoreMintFiatExchangeRate.ExchangeRate.CurrencyCode) @@ -410,20 +411,23 @@ func (h *SendPublicPaymentIntentHandler) PopulateMetadata(ctx context.Context, i exchangeRate = currency_util.CalculateExchangeRate(mint, typed.ClientExchangeData.Quarks, typed.ClientExchangeData.NativeAmount) } quarks = typed.ClientExchangeData.Quarks + usdMarketValue, err = currency_util.CalculateUsdMarketValueFromFiatAmount(nativeAmount, typed.ClientExchangeData.CoreMintFiatExchangeRate.ExchangeRate.ExchangeRate) + if err != nil { + return err + } case *transactionpb.SendPublicPaymentMetadata_ServerExchangeData: // todo: deprecate this flow currencyCode = currency_lib.Code(typed.ServerExchangeData.Currency) nativeAmount = typed.ServerExchangeData.NativeAmount exchangeRate = typed.ServerExchangeData.ExchangeRate quarks = typed.ServerExchangeData.Quarks + usdMarketValue, err = currency_util.CalculateUsdMarketValueFromTokenAmount(ctx, h.data, mint, quarks, currency_util.GetLatestExchangeRateTime()) + if err != nil { + return err + } default: return NewIntentDeniedError("client exchange data not provided") } - usdMarketValue, err := currency_util.CalculateUsdMarketValueFromFiatAmount(nativeAmount, exchangeRate) - if err != nil { - return err - } - destination, err := common.NewAccountFromProto(typedProtoMetadata.Destination) if err != nil { return err