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

difftreelog

feat impl dispatchable methods

Trubnikov Sergey2023-04-26parent: #82643c5.patch.diff
in: master

5 files changed

modifiedpallets/balances-adapter/src/common.rsdiffbeforeafterboth
before · pallets/balances-adapter/src/common.rs
1use alloc::vec::Vec;2use core::marker::PhantomData;3use crate::{Config, NativeFungibleHandle};4use pallet_common::{CommonCollectionOperations, CommonWeightInfo};56pub struct CommonWeights<T: Config>(PhantomData<T>);7impl<T: Config> CommonWeightInfo<T::CrossAccountId> for CommonWeights<T> {8	fn create_multiple_items(9		amount: &[up_data_structs::CreateItemData],10	) -> frame_support::weights::Weight {11		todo!()12	}1314	fn create_multiple_items_ex(15		cost: &up_data_structs::CreateItemExData<T::CrossAccountId>,16	) -> frame_support::weights::Weight {17		todo!()18	}1920	fn burn_item() -> frame_support::weights::Weight {21		todo!()22	}2324	fn set_collection_properties(amount: u32) -> frame_support::weights::Weight {25		todo!()26	}2728	fn delete_collection_properties(amount: u32) -> frame_support::weights::Weight {29		todo!()30	}3132	fn set_token_properties(amount: u32) -> frame_support::weights::Weight {33		todo!()34	}3536	fn delete_token_properties(amount: u32) -> frame_support::weights::Weight {37		todo!()38	}3940	fn set_token_property_permissions(amount: u32) -> frame_support::weights::Weight {41		todo!()42	}4344	fn transfer() -> frame_support::weights::Weight {45		todo!()46	}4748	fn approve() -> frame_support::weights::Weight {49		todo!()50	}5152	fn approve_from() -> frame_support::weights::Weight {53		todo!()54	}5556	fn transfer_from() -> frame_support::weights::Weight {57		todo!()58	}5960	fn burn_from() -> frame_support::weights::Weight {61		todo!()62	}6364	fn burn_recursively_self_raw() -> frame_support::weights::Weight {65		todo!()66	}6768	fn burn_recursively_breadth_raw(amount: u32) -> frame_support::weights::Weight {69		todo!()70	}7172	fn token_owner() -> frame_support::weights::Weight {73		todo!()74	}7576	fn set_allowance_for_all() -> frame_support::weights::Weight {77		todo!()78	}7980	fn force_repair_item() -> frame_support::weights::Weight {81		todo!()82	}83}8485/// Implementation of `CommonCollectionOperations` for `FungibleHandle`. It wraps FungibleHandle Pallete86/// methods and adds weight info.87impl<T: Config> CommonCollectionOperations<T> for NativeFungibleHandle<T> {88	fn create_item(89		&self,90		sender: <T>::CrossAccountId,91		to: <T>::CrossAccountId,92		data: up_data_structs::CreateItemData,93		nesting_budget: &dyn up_data_structs::budget::Budget,94	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {95		todo!()96	}9798	fn create_multiple_items(99		&self,100		sender: <T>::CrossAccountId,101		to: <T>::CrossAccountId,102		data: Vec<up_data_structs::CreateItemData>,103		nesting_budget: &dyn up_data_structs::budget::Budget,104	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {105		todo!()106	}107108	fn create_multiple_items_ex(109		&self,110		sender: <T>::CrossAccountId,111		data: up_data_structs::CreateItemExData<<T>::CrossAccountId>,112		nesting_budget: &dyn up_data_structs::budget::Budget,113	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {114		todo!()115	}116117	fn burn_item(118		&self,119		sender: <T>::CrossAccountId,120		token: up_data_structs::TokenId,121		amount: u128,122	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {123		todo!()124	}125126	fn burn_item_recursively(127		&self,128		sender: <T>::CrossAccountId,129		token: up_data_structs::TokenId,130		self_budget: &dyn up_data_structs::budget::Budget,131		breadth_budget: &dyn up_data_structs::budget::Budget,132	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {133		todo!()134	}135136	fn set_collection_properties(137		&self,138		sender: <T>::CrossAccountId,139		properties: Vec<up_data_structs::Property>,140	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {141		todo!()142	}143144	fn delete_collection_properties(145		&self,146		sender: &<T>::CrossAccountId,147		property_keys: Vec<up_data_structs::PropertyKey>,148	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {149		todo!()150	}151152	fn set_token_properties(153		&self,154		sender: <T>::CrossAccountId,155		token_id: up_data_structs::TokenId,156		properties: Vec<up_data_structs::Property>,157		budget: &dyn up_data_structs::budget::Budget,158	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {159		todo!()160	}161162	fn delete_token_properties(163		&self,164		sender: <T>::CrossAccountId,165		token_id: up_data_structs::TokenId,166		property_keys: Vec<up_data_structs::PropertyKey>,167		budget: &dyn up_data_structs::budget::Budget,168	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {169		todo!()170	}171172	fn set_token_property_permissions(173		&self,174		sender: &<T>::CrossAccountId,175		property_permissions: Vec<up_data_structs::PropertyKeyPermission>,176	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {177		todo!()178	}179180	fn transfer(181		&self,182		sender: <T>::CrossAccountId,183		to: <T>::CrossAccountId,184		token: up_data_structs::TokenId,185		amount: u128,186		budget: &dyn up_data_structs::budget::Budget,187	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {188		todo!()189	}190191	fn approve(192		&self,193		sender: <T>::CrossAccountId,194		spender: <T>::CrossAccountId,195		token: up_data_structs::TokenId,196		amount: u128,197	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {198		todo!()199	}200201	fn approve_from(202		&self,203		sender: <T>::CrossAccountId,204		from: <T>::CrossAccountId,205		to: <T>::CrossAccountId,206		token: up_data_structs::TokenId,207		amount: u128,208	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {209		todo!()210	}211212	fn transfer_from(213		&self,214		sender: <T>::CrossAccountId,215		from: <T>::CrossAccountId,216		to: <T>::CrossAccountId,217		token: up_data_structs::TokenId,218		amount: u128,219		budget: &dyn up_data_structs::budget::Budget,220	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {221		todo!()222	}223224	fn burn_from(225		&self,226		sender: <T>::CrossAccountId,227		from: <T>::CrossAccountId,228		token: up_data_structs::TokenId,229		amount: u128,230		budget: &dyn up_data_structs::budget::Budget,231	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {232		todo!()233	}234235	fn check_nesting(236		&self,237		sender: <T>::CrossAccountId,238		from: (up_data_structs::CollectionId, up_data_structs::TokenId),239		under: up_data_structs::TokenId,240		budget: &dyn up_data_structs::budget::Budget,241	) -> frame_support::sp_runtime::DispatchResult {242		todo!()243	}244245	fn nest(246		&self,247		under: up_data_structs::TokenId,248		to_nest: (up_data_structs::CollectionId, up_data_structs::TokenId),249	) {250		todo!()251	}252253	fn unnest(254		&self,255		under: up_data_structs::TokenId,256		to_nest: (up_data_structs::CollectionId, up_data_structs::TokenId),257	) {258		todo!()259	}260261	fn account_tokens(&self, account: <T>::CrossAccountId) -> Vec<up_data_structs::TokenId> {262		todo!()263	}264265	fn collection_tokens(&self) -> Vec<up_data_structs::TokenId> {266		todo!()267	}268269	fn token_exists(&self, token: up_data_structs::TokenId) -> bool {270		todo!()271	}272273	fn last_token_id(&self) -> up_data_structs::TokenId {274		todo!()275	}276277	fn token_owner(278		&self,279		token: up_data_structs::TokenId,280	) -> Result<<T>::CrossAccountId, up_data_structs::TokenOwnerError> {281		todo!()282	}283284	fn token_owners(&self, token: up_data_structs::TokenId) -> Vec<<T>::CrossAccountId> {285		todo!()286	}287288	fn token_property(289		&self,290		token_id: up_data_structs::TokenId,291		key: &up_data_structs::PropertyKey,292	) -> Option<up_data_structs::PropertyValue> {293		todo!()294	}295296	fn token_properties(297		&self,298		token: up_data_structs::TokenId,299		keys: Option<Vec<up_data_structs::PropertyKey>>,300	) -> Vec<up_data_structs::Property> {301		todo!()302	}303304	fn total_supply(&self) -> u32 {305		todo!()306	}307308	fn account_balance(&self, account: <T>::CrossAccountId) -> u32 {309		todo!()310	}311312	fn balance(&self, account: <T>::CrossAccountId, token: up_data_structs::TokenId) -> u128 {313		todo!()314	}315316	fn total_pieces(&self, token: up_data_structs::TokenId) -> Option<u128> {317		todo!()318	}319320	fn allowance(321		&self,322		sender: <T>::CrossAccountId,323		spender: <T>::CrossAccountId,324		token: up_data_structs::TokenId,325	) -> u128 {326		todo!()327	}328329	fn refungible_extensions(&self) -> Option<&dyn pallet_common::RefungibleExtensions<T>> {330		todo!()331	}332333	fn set_allowance_for_all(334		&self,335		owner: <T>::CrossAccountId,336		operator: <T>::CrossAccountId,337		approve: bool,338	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {339		todo!()340	}341342	fn allowance_for_all(&self, owner: <T>::CrossAccountId, operator: <T>::CrossAccountId) -> bool {343		todo!()344	}345346	fn repair_item(347		&self,348		token: up_data_structs::TokenId,349	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {350		todo!()351	}352}
modifiedpallets/balances-adapter/src/lib.rsdiffbeforeafterboth
--- a/pallets/balances-adapter/src/lib.rs
+++ b/pallets/balances-adapter/src/lib.rs
@@ -44,7 +44,7 @@
 			Self::AccountId,
 			Balance = Self::CurrencyBalance,
 		>;
-		type CurrencyBalance: Into<U256> + TryFrom<U256>;
+		type CurrencyBalance: Into<U256> + TryFrom<U256> + PartialEq<u128> + From<u128> + Into<u128>;
 
 		type Decimals: Get<u8>;
 		type Name: Get<String>;
modifiedpallets/common/src/lib.rsdiffbeforeafterboth
--- a/pallets/common/src/lib.rs
+++ b/pallets/common/src/lib.rs
@@ -462,6 +462,7 @@
 	}
 
 	const STORAGE_VERSION: StorageVersion = StorageVersion::new(1);
+	pub const NATIVE_FINGIBLE_COLLECTION_ID: CollectionId = CollectionId(0);
 
 	#[pallet::pallet]
 	#[pallet::storage_version(STORAGE_VERSION)]
modifiedpallets/unique/src/lib.rsdiffbeforeafterboth
--- a/pallets/unique/src/lib.rs
+++ b/pallets/unique/src/lib.rs
@@ -440,6 +440,10 @@
 			collection_id: CollectionId,
 			address: T::CrossAccountId,
 		) -> DispatchResult {
+			if collection_id == pallet_common::NATIVE_FINGIBLE_COLLECTION_ID {
+				fail!(<pallet_common::Error<T>>::UnsupportedOperation);
+			}
+
 			let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
 			let collection = <CollectionHandle<T>>::try_get(collection_id)?;
 			collection.check_is_internal()?;
@@ -467,6 +471,10 @@
 			collection_id: CollectionId,
 			address: T::CrossAccountId,
 		) -> DispatchResult {
+			if collection_id == pallet_common::NATIVE_FINGIBLE_COLLECTION_ID {
+				fail!(<pallet_common::Error<T>>::UnsupportedOperation);
+			}
+
 			let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
 			let collection = <CollectionHandle<T>>::try_get(collection_id)?;
 			collection.check_is_internal()?;
@@ -493,6 +501,9 @@
 			collection_id: CollectionId,
 			new_owner: T::AccountId,
 		) -> DispatchResult {
+			if collection_id == pallet_common::NATIVE_FINGIBLE_COLLECTION_ID {
+				fail!(<pallet_common::Error<T>>::UnsupportedOperation);
+			}
 			let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
 			let new_owner = T::CrossAccountId::from_sub(new_owner);
 			let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
@@ -522,6 +533,9 @@
 			collection_id: CollectionId,
 			new_admin_id: T::CrossAccountId,
 		) -> DispatchResult {
+			if collection_id == pallet_common::NATIVE_FINGIBLE_COLLECTION_ID {
+				fail!(<pallet_common::Error<T>>::UnsupportedOperation);
+			}
 			let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
 			let collection = <CollectionHandle<T>>::try_get(collection_id)?;
 			<PalletCommon<T>>::toggle_admin(&collection, &sender, &new_admin_id, true)
@@ -548,6 +562,9 @@
 			collection_id: CollectionId,
 			account_id: T::CrossAccountId,
 		) -> DispatchResult {
+			if collection_id == pallet_common::NATIVE_FINGIBLE_COLLECTION_ID {
+				fail!(<pallet_common::Error<T>>::UnsupportedOperation);
+			}
 			let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
 			let collection = <CollectionHandle<T>>::try_get(collection_id)?;
 			<PalletCommon<T>>::toggle_admin(&collection, &sender, &account_id, false)
@@ -573,6 +590,9 @@
 			collection_id: CollectionId,
 			new_sponsor: T::AccountId,
 		) -> DispatchResult {
+			if collection_id == pallet_common::NATIVE_FINGIBLE_COLLECTION_ID {
+				fail!(<pallet_common::Error<T>>::UnsupportedOperation);
+			}
 			let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
 			let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
 			target_collection.set_sponsor(&sender, new_sponsor.clone())
@@ -597,6 +617,9 @@
 			origin: OriginFor<T>,
 			collection_id: CollectionId,
 		) -> DispatchResult {
+			if collection_id == pallet_common::NATIVE_FINGIBLE_COLLECTION_ID {
+				fail!(<pallet_common::Error<T>>::UnsupportedOperation);
+			}
 			let sender = ensure_signed(origin)?;
 			let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
 			target_collection.confirm_sponsorship(&sender)
@@ -617,6 +640,9 @@
 			origin: OriginFor<T>,
 			collection_id: CollectionId,
 		) -> DispatchResult {
+			if collection_id == pallet_common::NATIVE_FINGIBLE_COLLECTION_ID {
+				fail!(<pallet_common::Error<T>>::UnsupportedOperation);
+			}
 			let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
 			let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
 			target_collection.remove_sponsor(&sender)
@@ -894,6 +920,9 @@
 			collection_id: CollectionId,
 			value: bool,
 		) -> DispatchResult {
+			if collection_id == pallet_common::NATIVE_FINGIBLE_COLLECTION_ID {
+				fail!(<pallet_common::Error<T>>::UnsupportedOperation);
+			}
 			let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
 			let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
 			target_collection.check_is_internal()?;
@@ -1146,6 +1175,9 @@
 			collection_id: CollectionId,
 			new_limit: CollectionLimits,
 		) -> DispatchResult {
+			if collection_id == pallet_common::NATIVE_FINGIBLE_COLLECTION_ID {
+				fail!(<pallet_common::Error<T>>::UnsupportedOperation);
+			}
 			let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
 			let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
 			<PalletCommon<T>>::update_limits(&sender, &mut target_collection, new_limit)
@@ -1170,6 +1202,9 @@
 			collection_id: CollectionId,
 			new_permission: CollectionPermissions,
 		) -> DispatchResult {
+			if collection_id == pallet_common::NATIVE_FINGIBLE_COLLECTION_ID {
+				fail!(<pallet_common::Error<T>>::UnsupportedOperation);
+			}
 			let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
 			let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
 			<PalletCommon<T>>::update_permissions(&sender, &mut target_collection, new_permission)
@@ -1238,6 +1273,9 @@
 			origin: OriginFor<T>,
 			collection_id: CollectionId,
 		) -> DispatchResult {
+			if collection_id == pallet_common::NATIVE_FINGIBLE_COLLECTION_ID {
+				fail!(<pallet_common::Error<T>>::UnsupportedOperation);
+			}
 			ensure_root(origin)?;
 			<PalletCommon<T>>::repair_collection(collection_id)
 		}
modifiedruntime/common/dispatch.rsdiffbeforeafterboth
--- a/runtime/common/dispatch.rs
+++ b/runtime/common/dispatch.rs
@@ -14,7 +14,7 @@
 // You should have received a copy of the GNU General Public License
 // along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
 
-use frame_support::{dispatch::DispatchResult, ensure};
+use frame_support::{dispatch::DispatchResult, ensure, fail};
 use pallet_evm::{PrecompileHandle, PrecompileResult};
 use sp_core::H160;
 use sp_runtime::DispatchError;
@@ -100,6 +100,10 @@
 	}
 
 	fn destroy(sender: T::CrossAccountId, collection_id: CollectionId) -> DispatchResult {
+		if collection_id == pallet_common::NATIVE_FINGIBLE_COLLECTION_ID {
+			fail!(<pallet_common::Error<T>>::UnsupportedOperation);
+		}
+
 		let collection = <CollectionHandle<T>>::try_get(collection_id)?;
 		collection.check_is_internal()?;