difftreelog
fix rfts are unsupported in XCM
in: master
2 files changed
pallets/foreign-assets/src/benchmarking.rsdiffbeforeafterboth181819use frame_benchmarking::v2::*;19use frame_benchmarking::v2::*;20use frame_system::RawOrigin;20use frame_system::RawOrigin;21use pallet_common::benchmarking::create_u16_data;21use pallet_common::benchmarking::{create_data, create_u16_data};22use sp_std::vec;22use sp_std::vec;23use staging_xcm::prelude::*;23use staging_xcm::prelude::*;24use up_data_structs::{CollectionMode, MAX_COLLECTION_NAME_LENGTH};24use up_data_structs::{MAX_COLLECTION_NAME_LENGTH, MAX_TOKEN_PREFIX_LENGTH};252526use super::{Call, Config, Pallet};26use super::{Call, Config, ForeignCollectionMode, Pallet};272728#[benchmarks]28#[benchmarks]29mod benchmarks {29mod benchmarks {35 let location =35 let location =36 MultiLocation::from(X3(Parachain(1000), PalletInstance(42), GeneralIndex(1)));36 MultiLocation::from(X3(Parachain(1000), PalletInstance(42), GeneralIndex(1)));37 let name = create_u16_data::<MAX_COLLECTION_NAME_LENGTH>();37 let name = create_u16_data::<MAX_COLLECTION_NAME_LENGTH>();38 let token_prefix = create_data::<MAX_TOKEN_PREFIX_LENGTH>();38 let mode = CollectionMode::NFT;39 let mode = ForeignCollectionMode::NFT;394040 #[extrinsic_call]41 #[extrinsic_call]41 _(RawOrigin::Root, location, name, mode);42 _(RawOrigin::Root, location, name, token_prefix, mode);424343 Ok(())44 Ok(())44 }45 }pallets/foreign-assets/src/lib.rsdiffbeforeafterboth39 Assets,39 Assets,40};40};41use up_data_structs::{41use up_data_structs::{42 budget::ZeroBudget, CollectionId, CollectionMode, CollectionName, CreateCollectionData,42 budget::ZeroBudget, CollectionId, CollectionMode, CollectionName, CollectionTokenPrefix,43 CreateFungibleData, CreateItemData, CreateNftData, Property, PropertyKey, TokenId,43 CreateCollectionData, CreateFungibleData, CreateItemData, CreateNftData, Property, PropertyKey,44 TokenId,44};45};878888 #[pallet::error]89 #[pallet::error]89 pub enum Error<T> {90 pub enum Error<T> {90 /// The foreign asset is already registered91 /// The foreign asset is already registered.91 ForeignAssetAlreadyRegistered,92 ForeignAssetAlreadyRegistered,92 }93 }9394136 origin: OriginFor<T>,137 origin: OriginFor<T>,137 reserve_location: MultiLocation,138 reserve_location: MultiLocation,138 name: CollectionName,139 name: CollectionName,140 token_prefix: CollectionTokenPrefix,139 mode: CollectionMode,141 mode: ForeignCollectionMode,140 ) -> DispatchResult {142 ) -> DispatchResult {141 T::ForceRegisterOrigin::ensure_origin(origin.clone())?;143 T::ForceRegisterOrigin::ensure_origin(origin.clone())?;142144160 is_special_collection,162 is_special_collection,161 CreateCollectionData {163 CreateCollectionData {162 name,164 name,165 token_prefix,163 description,166 description,164 mode,167 mode: mode.into(),165168166 properties: vec![Property {169 properties: vec![Property {167 key: Self::reserve_location_property_key(),170 key: Self::reserve_location_property_key(),560 weights::{WeightToFee, WeightToFeePolynomial},563 weights::{WeightToFee, WeightToFeePolynomial},561};564};565566#[derive(Encode, Decode, Eq, Debug, Clone, PartialEq, TypeInfo, MaxEncodedLen)]567pub enum ForeignCollectionMode {568 NFT,569 Fungible(u8),570}571572impl Into<CollectionMode> for ForeignCollectionMode {573 fn into(self) -> CollectionMode {574 match self {575 Self::NFT => CollectionMode::NFT,576 Self::Fungible(decimals) => CollectionMode::Fungible(decimals),577 }578 }579}562580563pub struct FreeForAll;581pub struct FreeForAll;564582