From d20c0d44e1dd7fa877a03dfc1f0816b2ed84f15f Mon Sep 17 00:00:00 2001 From: ERussel Date: Tue, 19 Nov 2024 11:05:32 +0100 Subject: [PATCH] fix xcm transfers for Moonbeam/Moonriver --- novawallet/Common/Model/Xcm/XcmAssetTransfer.swift | 3 +++ .../Substrate/Xcm/XcmTransferService+Compose.swift | 10 +++++++++- .../Substrate/Xcm/XcmTransferService.swift | 2 +- .../Common/Substrate/Calls/Xcm/XcmPalletTransfer.swift | 4 ++++ .../CrossChain/CrossChainTransferSetupPresenter.swift | 2 ++ 5 files changed, 19 insertions(+), 2 deletions(-) diff --git a/novawallet/Common/Model/Xcm/XcmAssetTransfer.swift b/novawallet/Common/Model/Xcm/XcmAssetTransfer.swift index e456bb237..0f68ba27f 100644 --- a/novawallet/Common/Model/Xcm/XcmAssetTransfer.swift +++ b/novawallet/Common/Model/Xcm/XcmAssetTransfer.swift @@ -20,6 +20,7 @@ extension XcmAssetTransfer { case xtokens case xcmpallet case teleport = "xcmpallet-teleport" + case xcmpalletTransferAssets = "xcmpallet-transferAssets" case unknown init(from decoder: Decoder) throws { @@ -34,6 +35,8 @@ extension XcmAssetTransfer { self = .xcmpallet case Self.teleport.rawValue: self = .teleport + case Self.xcmpalletTransferAssets.rawValue: + self = .xcmpalletTransferAssets default: self = .unknown } diff --git a/novawallet/Common/Services/ExtrinsicService/Substrate/Xcm/XcmTransferService+Compose.swift b/novawallet/Common/Services/ExtrinsicService/Substrate/Xcm/XcmTransferService+Compose.swift index e91b84e12..dfafefac1 100644 --- a/novawallet/Common/Services/ExtrinsicService/Substrate/Xcm/XcmTransferService+Compose.swift +++ b/novawallet/Common/Services/ExtrinsicService/Substrate/Xcm/XcmTransferService+Compose.swift @@ -23,7 +23,7 @@ extension XcmTransferService { xcmTransfers: xcmTransfers, runtimeProvider: runtimeProvider ) - case .xcmpallet, .teleport: + case .xcmpallet, .teleport, .xcmpalletTransferAssets: let multiassetsVersionWrapper = xcmPalletQueryFactory.createLowestMultiassetsVersionWrapper( for: runtimeProvider ) @@ -115,6 +115,14 @@ extension XcmTransferService { maxWeight: maxWeight, runtimeProvider: runtimeProvider ) + case .xcmpalletTransferAssets: + return createPalletXcmTransferMapping( + dependingOn: moduleResolutionOperation, + callPathFactory: { Xcm.transferAssetsPath(for: $0) }, + destinationAssetOperation: destinationAssetOperation, + maxWeight: maxWeight, + runtimeProvider: runtimeProvider + ) case .unknown: return .createWithError(XcmAssetTransfer.TransferTypeError.unknownType) } diff --git a/novawallet/Common/Services/ExtrinsicService/Substrate/Xcm/XcmTransferService.swift b/novawallet/Common/Services/ExtrinsicService/Substrate/Xcm/XcmTransferService.swift index 5fb588900..53ff9c199 100644 --- a/novawallet/Common/Services/ExtrinsicService/Substrate/Xcm/XcmTransferService.swift +++ b/novawallet/Common/Services/ExtrinsicService/Substrate/Xcm/XcmTransferService.swift @@ -44,7 +44,7 @@ final class XcmTransferService { switch transferType { case .xtokens: return xTokensQueryFactory.createModuleNameResolutionWrapper(for: runtimeProvider) - case .xcmpallet, .teleport: + case .xcmpallet, .teleport, .xcmpalletTransferAssets: return xcmPalletQueryFactory.createModuleNameResolutionWrapper(for: runtimeProvider) case .unknown: return CompoundOperationWrapper.createWithError(XcmAssetTransfer.TransferTypeError.unknownType) diff --git a/novawallet/Common/Substrate/Calls/Xcm/XcmPalletTransfer.swift b/novawallet/Common/Substrate/Calls/Xcm/XcmPalletTransfer.swift index 001c9d624..5676bd8a2 100644 --- a/novawallet/Common/Substrate/Calls/Xcm/XcmPalletTransfer.swift +++ b/novawallet/Common/Substrate/Calls/Xcm/XcmPalletTransfer.swift @@ -29,4 +29,8 @@ extension Xcm { static func limitedTeleportAssetsPath(for module: String) -> CallCodingPath { CallCodingPath(moduleName: module, callName: "limited_teleport_assets") } + + static func transferAssetsPath(for module: String) -> CallCodingPath { + CallCodingPath(moduleName: module, callName: "transfer_assets") + } } diff --git a/novawallet/Modules/Transfer/TransferSetup/CrossChain/CrossChainTransferSetupPresenter.swift b/novawallet/Modules/Transfer/TransferSetup/CrossChain/CrossChainTransferSetupPresenter.swift index 237da68f4..a6e86a3da 100644 --- a/novawallet/Modules/Transfer/TransferSetup/CrossChain/CrossChainTransferSetupPresenter.swift +++ b/novawallet/Modules/Transfer/TransferSetup/CrossChain/CrossChainTransferSetupPresenter.swift @@ -310,6 +310,8 @@ final class CrossChainTransferSetupPresenter: CrossChainTransferPresenter, override func didReceiveCrossChainFee(result: Result) { super.didReceiveCrossChainFee(result: result) + logger?.debug("Did receive result: \(result)") + if case .success = result { updateOriginFeeView() updateCrossChainFeeView()