git.delta.rocks / unique-network / refs/commits / c01d30bfd844

difftreelog

fix use versioned asset ID in force_register_foreign_asset

Daniel Shiposha2023-11-27parent: #b0dfc97.patch.diff
in: master

2 files changed

modifiedjs-packages/playgrounds/unique.xcm.tsdiffbeforeafterboth
--- a/js-packages/playgrounds/unique.xcm.ts
+++ b/js-packages/playgrounds/unique.xcm.ts
@@ -108,7 +108,7 @@
     await this.helper.executeExtrinsic(
       signer,
       'api.tx.foreignAssets.forceRegisterForeignAsset',
-      [assetId, this.helper.util.str2vec(name), tokenPrefix, mode],
+      [{V3: assetId}, this.helper.util.str2vec(name), tokenPrefix, mode],
       true,
     );
   }
modifiedpallets/foreign-assets/src/lib.rsdiffbeforeafterboth
35use staging_xcm::{35use staging_xcm::{
36 opaque::latest::{prelude::XcmError, Weight},36 opaque::latest::{prelude::XcmError, Weight},
37 v3::{prelude::*, MultiAsset, XcmContext},37 v3::{prelude::*, MultiAsset, XcmContext},
38 VersionedAssetId,
38};39};
39use staging_xcm_executor::{40use staging_xcm_executor::{
40 traits::{ConvertLocation, Error as XcmExecutorError, TransactAsset, WeightTrader},41 traits::{ConvertLocation, Error as XcmExecutorError, TransactAsset, WeightTrader},
91 /// The foreign asset is already registered.92 /// The foreign asset is already registered.
92 ForeignAssetAlreadyRegistered,93 ForeignAssetAlreadyRegistered,
94
95 /// The given asset ID could not be converted into the current XCM version.
96 BadForeignAssetId,
93 }97 }
9498
95 #[pallet::event]99 #[pallet::event]
98 /// The foreign asset registered.102 /// The foreign asset registered.
99 ForeignAssetRegistered {103 ForeignAssetRegistered {
100 collection_id: CollectionId,104 collection_id: CollectionId,
101 asset_id: Box<AssetId>,105 asset_id: Box<VersionedAssetId>,
102 },106 },
103 }107 }
104108
147 #[pallet::weight(<T as Config>::WeightInfo::register_foreign_asset())]151 #[pallet::weight(<T as Config>::WeightInfo::register_foreign_asset())]
148 pub fn force_register_foreign_asset(152 pub fn force_register_foreign_asset(
149 origin: OriginFor<T>,153 origin: OriginFor<T>,
150 asset_id: Box<AssetId>,154 versioned_asset_id: Box<VersionedAssetId>,
151 name: CollectionName,155 name: CollectionName,
152 token_prefix: CollectionTokenPrefix,156 token_prefix: CollectionTokenPrefix,
153 mode: ForeignCollectionMode,157 mode: ForeignCollectionMode,
154 ) -> DispatchResult {158 ) -> DispatchResult {
155 T::ForceRegisterOrigin::ensure_origin(origin.clone())?;159 T::ForceRegisterOrigin::ensure_origin(origin.clone())?;
160
161 let asset_id: AssetId = versioned_asset_id
162 .as_ref()
163 .clone()
164 .try_into()
165 .map_err(|()| Error::<T>::BadForeignAssetId)?;
156166
157 ensure!(167 ensure!(
158 !<ForeignAssetToCollection<T>>::contains_key(*asset_id),168 !<ForeignAssetToCollection<T>>::contains_key(asset_id),
159 <Error<T>>::ForeignAssetAlreadyRegistered,169 <Error<T>>::ForeignAssetAlreadyRegistered,
160 );170 );
161171
179 },189 },
180 )?;190 )?;
181191
182 <ForeignAssetToCollection<T>>::insert(*asset_id, collection_id);192 <ForeignAssetToCollection<T>>::insert(asset_id, collection_id);
183 <CollectionToForeignAsset<T>>::insert(collection_id, *asset_id);193 <CollectionToForeignAsset<T>>::insert(collection_id, asset_id);
184194
185 Self::deposit_event(Event::<T>::ForeignAssetRegistered {195 Self::deposit_event(Event::<T>::ForeignAssetRegistered {
186 collection_id,196 collection_id,
187 asset_id,197 asset_id: versioned_asset_id,
188 });198 });
189199
190 Ok(())200 Ok(())