16
16
// You should have received a copy of the GNU General Public License
17
17
// along with this program. If not, see <https://www.gnu.org/licenses/>.
18
18
19
- use crate :: * ;
19
+ use crate :: { xcm_helpers :: ClassLocality , * } ;
20
20
21
21
const LOG_TARGET : & str = "xcm::module_xnft::transactor" ;
22
22
@@ -62,17 +62,14 @@ where
62
62
return Err ( XcmExecutorError :: AssetNotHandled . into ( ) ) ;
63
63
} ;
64
64
65
- let ( class_id , is_foreign_asset ) = Self :: asset_to_collection ( & what. id ) ?;
65
+ let class_locality = Self :: asset_to_collection ( & what. id ) ?;
66
66
67
67
let to = <ConverterOf < T > >:: convert_location ( who) . ok_or ( XcmExecutorError :: AccountIdConversionFailed ) ?;
68
68
69
- let deposit_handler = if is_foreign_asset {
70
- Self :: deposit_foreign_asset
71
- } else {
72
- Self :: deposit_local_asset
73
- } ;
74
-
75
- deposit_handler ( & to, class_id, & asset_instance)
69
+ match class_locality {
70
+ ClassLocality :: Foreign ( class_id) => Self :: deposit_foreign_asset ( & to, class_id, & asset_instance) ,
71
+ ClassLocality :: Local ( class_id) => Self :: deposit_local_asset ( & to, class_id, & asset_instance) ,
72
+ }
76
73
}
77
74
78
75
fn withdraw_asset (
@@ -92,14 +89,14 @@ where
92
89
return Err ( XcmExecutorError :: AssetNotHandled . into ( ) ) ;
93
90
} ;
94
91
95
- let ( class_id , is_foreign_asset ) = Self :: asset_to_collection ( & what. id ) ?;
92
+ let class_locality = Self :: asset_to_collection ( & what. id ) ?;
96
93
97
94
let from = <ConverterOf < T > >:: convert_location ( who) . ok_or ( XcmExecutorError :: AccountIdConversionFailed ) ?;
98
95
99
- let token_id = Self :: asset_instance_to_token_id ( class_id , is_foreign_asset , & asset_instance)
96
+ let token = Self :: asset_instance_to_token ( class_locality , & asset_instance)
100
97
. ok_or ( XcmExecutorError :: InstanceConversionFailed ) ?;
101
98
102
- <ModuleNftPallet < T > >:: do_transfer ( & from, & Self :: account_id ( ) , ( class_id , token_id ) )
99
+ <ModuleNftPallet < T > >:: do_transfer ( & from, & Self :: account_id ( ) , token )
103
100
. map ( |_| what. clone ( ) . into ( ) )
104
101
. map_err ( |_| XcmError :: FailedToTransactAsset ( "non-fungible item withdraw failed" ) )
105
102
}
@@ -123,15 +120,15 @@ where
123
120
return Err ( XcmExecutorError :: AssetNotHandled . into ( ) ) ;
124
121
} ;
125
122
126
- let ( class_id , is_foreign_asset ) = Self :: asset_to_collection ( & asset. id ) ?;
123
+ let class_locality = Self :: asset_to_collection ( & asset. id ) ?;
127
124
128
125
let from = <ConverterOf < T > >:: convert_location ( from) . ok_or ( XcmExecutorError :: AccountIdConversionFailed ) ?;
129
126
let to = <ConverterOf < T > >:: convert_location ( to) . ok_or ( XcmExecutorError :: AccountIdConversionFailed ) ?;
130
127
131
- let token_id = Self :: asset_instance_to_token_id ( class_id , is_foreign_asset , & asset_instance)
128
+ let token = Self :: asset_instance_to_token ( class_locality , & asset_instance)
132
129
. ok_or ( XcmExecutorError :: InstanceConversionFailed ) ?;
133
130
134
- <ModuleNftPallet < T > >:: do_transfer ( & from, & to, ( class_id , token_id ) )
131
+ <ModuleNftPallet < T > >:: do_transfer ( & from, & to, token )
135
132
. map ( |_| asset. clone ( ) . into ( ) )
136
133
. map_err ( |_| XcmError :: FailedToTransactAsset ( "non-fungible item internal transfer failed" ) )
137
134
}
0 commit comments