Skip to content

Commit

Permalink
Fix - handle missing fields in cross chain config (#1397)
Browse files Browse the repository at this point in the history
  • Loading branch information
valentunn committed Feb 19, 2024
1 parent e20cdb1 commit d17172b
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import io.novafoundation.nova.feature_wallet_api.domain.model.CrossChainTransfer
import io.novafoundation.nova.feature_wallet_api.domain.model.CrossChainTransfersConfiguration.XcmFee
import io.novafoundation.nova.feature_wallet_api.domain.model.CrossChainTransfersConfiguration.XcmTransfer
import io.novafoundation.nova.feature_wallet_api.domain.model.DeliveryFeeConfiguration
import io.novafoundation.nova.feature_wallet_api.domain.model.DeliveryFeeConfiguration.Type
import io.novafoundation.nova.feature_wallet_api.domain.model.XCMInstructionType
import io.novafoundation.nova.feature_wallet_api.domain.model.XcmTransferType
import io.novafoundation.nova.feature_wallet_impl.data.network.crosschain.CrossChainOriginAssetRemote
Expand All @@ -27,27 +26,27 @@ import io.novafoundation.nova.runtime.multiNetwork.multiLocation.toInterior
import java.math.BigInteger

fun mapCrossChainConfigFromRemote(remote: CrossChainTransfersConfigRemote): CrossChainTransfersConfiguration {
val assetsLocations = remote.assetsLocation.mapValues { (_, reserveLocationRemote) ->
val assetsLocations = remote.assetsLocation.orEmpty().mapValues { (_, reserveLocationRemote) ->
mapReserveLocationFromRemote(reserveLocationRemote)
}

val feeInstructions = remote.instructions.mapValues { (_, instructionsRemote) ->
val feeInstructions = remote.instructions.orEmpty().mapValues { (_, instructionsRemote) ->
instructionsRemote.map(::mapXcmInstructionFromRemote)
}

val chains = remote.chains.associateBy(
val chains = remote.chains.orEmpty().associateBy(
keySelector = { it.chainId },
valueTransform = { it.assets.map(::mapAssetTransfersFromRemote) }
)

val networkDeliveryFee = remote.networkDeliveryFee.mapValues { (_, networkDeliveryFeeRemote) ->
val networkDeliveryFee = remote.networkDeliveryFee.orEmpty().mapValues { (_, networkDeliveryFeeRemote) ->
mapNetworkDeliveryFeeFromRemote(networkDeliveryFeeRemote)
}

return CrossChainTransfersConfiguration(
assetLocations = assetsLocations,
feeInstructions = feeInstructions,
instructionBaseWeights = remote.networkBaseWeight,
instructionBaseWeights = remote.networkBaseWeight.orEmpty(),
deliveryFeeConfigurations = networkDeliveryFee,
chains = chains
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ import io.novafoundation.nova.runtime.multiNetwork.chain.model.ChainId
import java.math.BigInteger

class CrossChainTransfersConfigRemote(
val assetsLocation: Map<String, ReserveLocationRemote>,
val instructions: Map<String, List<String>>,
val networkDeliveryFee: Map<String, NetworkDeliveryFeeRemote>,
val networkBaseWeight: Map<String, BigInteger>,
val chains: List<CrossChainOriginChainRemote>
val assetsLocation: Map<String, ReserveLocationRemote>?,
val instructions: Map<String, List<String>>?,
val networkDeliveryFee: Map<String, NetworkDeliveryFeeRemote>?,
val networkBaseWeight: Map<String, BigInteger>?,
val chains: List<CrossChainOriginChainRemote>?
)

class ReserveLocationRemote(
Expand Down

0 comments on commit d17172b

Please sign in to comment.