git.delta.rocks / unique-network / refs/commits / 2a17a6988ca9

difftreelog

fix cargo fmt

Daniel Shiposha2022-10-28parent: #aa247a4.patch.diff
in: master

1 file changed

modifiedtest-pallets/utils/src/lib.rsdiffbeforeafterboth
before · test-pallets/utils/src/lib.rs
1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617#![cfg_attr(not(feature = "std"), no_std)]1819pub use pallet::*;20use frame_support::pallet_prelude::*;21use frame_system::pallet_prelude::*;2223#[frame_support::pallet]24pub mod pallet {25	use frame_support::{pallet_prelude::*, dispatch::{Dispatchable, GetDispatchInfo, PostDispatchInfo}, traits::{UnfilteredDispatchable, IsSubType, OriginTrait}};26	use frame_system::pallet_prelude::*;27	use sp_std::vec::Vec;28	use pallet_unique_scheduler_v2::{TaskName, Pallet as SchedulerPallet};2930	#[pallet::config]31	pub trait Config: frame_system::Config + pallet_unique_scheduler_v2::Config {32		type RuntimeEvent: From<Event<Self>> + IsType<<Self as frame_system::Config>::RuntimeEvent>;3334		/// The overarching call type.35		type RuntimeCall: Parameter36			+ Dispatchable<RuntimeOrigin = <Self as frame_system::Config>::RuntimeOrigin, PostInfo = PostDispatchInfo>37			+ GetDispatchInfo38			+ From<frame_system::Call<Self>>39			+ UnfilteredDispatchable<RuntimeOrigin = <Self as frame_system::Config>::RuntimeOrigin>40			+ IsSubType<Call<Self>>41			+ IsType<<Self as frame_system::Config>::RuntimeCall>;42	}4344	#[pallet::event]45	#[pallet::generate_deposit(pub(super) fn deposit_event)]46	pub enum Event<T: Config> {47		ValueIsSet,48		ShouldRollback,49		BatchCompleted,50	}5152	#[pallet::pallet]53	#[pallet::generate_store(pub(super) trait Store)]54	pub struct Pallet<T>(_);5556	#[pallet::storage]57	#[pallet::getter(fn is_enabled)]58	pub type Enabled<T> = StorageValue<_, bool, ValueQuery>;5960	#[pallet::storage]61	#[pallet::getter(fn test_value)]62	pub type TestValue<T> = StorageValue<_, u32, ValueQuery>;6364	#[pallet::error]65	pub enum Error<T> {66		TestPalletDisabled,67		TriggerRollback,68	}6970	#[pallet::call]71	impl<T: Config> Pallet<T> {72		#[pallet::weight(10_000)]73		pub fn enable(origin: OriginFor<T>) -> DispatchResult {74			ensure_root(origin)?;75			<Enabled<T>>::set(true);7677			Ok(())78		}7980		#[pallet::weight(10_000)]81		pub fn set_test_value(origin: OriginFor<T>, value: u32) -> DispatchResult {82			Self::ensure_origin_and_enabled(origin)?;8384			<TestValue<T>>::put(value);8586			Self::deposit_event(Event::ValueIsSet);8788			Ok(())89		}9091		#[pallet::weight(10_000)]92		pub fn set_test_value_and_rollback(origin: OriginFor<T>, value: u32) -> DispatchResult {93			Self::set_test_value(origin, value)?;9495			Self::deposit_event(Event::ShouldRollback);9697			Err(<Error<T>>::TriggerRollback.into())98		}99100		#[pallet::weight(10_000)]101		pub fn inc_test_value(origin: OriginFor<T>) -> DispatchResult {102			Self::set_test_value(origin, <TestValue<T>>::get() + 1)103		}104105		#[pallet::weight(10_000)]106		pub fn self_canceling_inc(107			origin: OriginFor<T>,108			id: TaskName,109			max_test_value: u32,110		) -> DispatchResult {111			Self::ensure_origin_and_enabled(origin.clone())?;112			Self::inc_test_value(origin.clone())?;113114			if <TestValue<T>>::get() == max_test_value {115				SchedulerPallet::<T>::cancel_named(origin, id)?;116			}117118			Ok(())119		}120121		#[pallet::weight(100_000_000)]122		pub fn just_take_fee(origin: OriginFor<T>) -> DispatchResult {123			Self::ensure_origin_and_enabled(origin)?;124			Ok(())125		}126127		#[pallet::weight(10_000)]128		pub fn batch_all(129			origin: OriginFor<T>,130			calls: Vec<<T as Config>::RuntimeCall>,131		) -> DispatchResultWithPostInfo {132			Self::ensure_origin_and_enabled(origin.clone())?;133134			let is_root = ensure_root(origin.clone()).is_ok();135136			for call in calls {137				if is_root {138					call.dispatch_bypass_filter(origin.clone())?;139				} else {140					let mut filtered_origin = origin.clone();141					// Don't allow users to nest `batch_all` calls.142					filtered_origin.add_filter(143						move |c: &<T as frame_system::Config>::RuntimeCall| {144							let c = <T as Config>::RuntimeCall::from_ref(c);145							!matches!(c.is_sub_type(), Some(Call::batch_all { .. }))146						},147					);148					call.dispatch(filtered_origin)?;149				}150			}151152			Self::deposit_event(Event::BatchCompleted);153			Ok(None::<Weight>.into())154		}155	}156}157158impl<T: Config> Pallet<T> {159	fn ensure_origin_and_enabled(origin: OriginFor<T>) -> DispatchResult {160		ensure_signed(origin)?;161		<Enabled<T>>::get()162			.then(|| ())163			.ok_or(<Error<T>>::TestPalletDisabled.into())164	}165}
after · test-pallets/utils/src/lib.rs
1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617#![cfg_attr(not(feature = "std"), no_std)]1819pub use pallet::*;20use frame_support::pallet_prelude::*;21use frame_system::pallet_prelude::*;2223#[frame_support::pallet]24pub mod pallet {25	use frame_support::{26		pallet_prelude::*,27		dispatch::{Dispatchable, GetDispatchInfo, PostDispatchInfo},28		traits::{UnfilteredDispatchable, IsSubType, OriginTrait},29	};30	use frame_system::pallet_prelude::*;31	use sp_std::vec::Vec;32	use pallet_unique_scheduler_v2::{TaskName, Pallet as SchedulerPallet};3334	#[pallet::config]35	pub trait Config: frame_system::Config + pallet_unique_scheduler_v2::Config {36		type RuntimeEvent: From<Event<Self>> + IsType<<Self as frame_system::Config>::RuntimeEvent>;3738		/// The overarching call type.39		type RuntimeCall: Parameter40			+ Dispatchable<41				RuntimeOrigin = <Self as frame_system::Config>::RuntimeOrigin,42				PostInfo = PostDispatchInfo,43			> + GetDispatchInfo44			+ From<frame_system::Call<Self>>45			+ UnfilteredDispatchable<RuntimeOrigin = <Self as frame_system::Config>::RuntimeOrigin>46			+ IsSubType<Call<Self>>47			+ IsType<<Self as frame_system::Config>::RuntimeCall>;48	}4950	#[pallet::event]51	#[pallet::generate_deposit(pub(super) fn deposit_event)]52	pub enum Event<T: Config> {53		ValueIsSet,54		ShouldRollback,55		BatchCompleted,56	}5758	#[pallet::pallet]59	#[pallet::generate_store(pub(super) trait Store)]60	pub struct Pallet<T>(_);6162	#[pallet::storage]63	#[pallet::getter(fn is_enabled)]64	pub type Enabled<T> = StorageValue<_, bool, ValueQuery>;6566	#[pallet::storage]67	#[pallet::getter(fn test_value)]68	pub type TestValue<T> = StorageValue<_, u32, ValueQuery>;6970	#[pallet::error]71	pub enum Error<T> {72		TestPalletDisabled,73		TriggerRollback,74	}7576	#[pallet::call]77	impl<T: Config> Pallet<T> {78		#[pallet::weight(10_000)]79		pub fn enable(origin: OriginFor<T>) -> DispatchResult {80			ensure_root(origin)?;81			<Enabled<T>>::set(true);8283			Ok(())84		}8586		#[pallet::weight(10_000)]87		pub fn set_test_value(origin: OriginFor<T>, value: u32) -> DispatchResult {88			Self::ensure_origin_and_enabled(origin)?;8990			<TestValue<T>>::put(value);9192			Self::deposit_event(Event::ValueIsSet);9394			Ok(())95		}9697		#[pallet::weight(10_000)]98		pub fn set_test_value_and_rollback(origin: OriginFor<T>, value: u32) -> DispatchResult {99			Self::set_test_value(origin, value)?;100101			Self::deposit_event(Event::ShouldRollback);102103			Err(<Error<T>>::TriggerRollback.into())104		}105106		#[pallet::weight(10_000)]107		pub fn inc_test_value(origin: OriginFor<T>) -> DispatchResult {108			Self::set_test_value(origin, <TestValue<T>>::get() + 1)109		}110111		#[pallet::weight(10_000)]112		pub fn self_canceling_inc(113			origin: OriginFor<T>,114			id: TaskName,115			max_test_value: u32,116		) -> DispatchResult {117			Self::ensure_origin_and_enabled(origin.clone())?;118			Self::inc_test_value(origin.clone())?;119120			if <TestValue<T>>::get() == max_test_value {121				SchedulerPallet::<T>::cancel_named(origin, id)?;122			}123124			Ok(())125		}126127		#[pallet::weight(100_000_000)]128		pub fn just_take_fee(origin: OriginFor<T>) -> DispatchResult {129			Self::ensure_origin_and_enabled(origin)?;130			Ok(())131		}132133		#[pallet::weight(10_000)]134		pub fn batch_all(135			origin: OriginFor<T>,136			calls: Vec<<T as Config>::RuntimeCall>,137		) -> DispatchResultWithPostInfo {138			Self::ensure_origin_and_enabled(origin.clone())?;139140			let is_root = ensure_root(origin.clone()).is_ok();141142			for call in calls {143				if is_root {144					call.dispatch_bypass_filter(origin.clone())?;145				} else {146					let mut filtered_origin = origin.clone();147					// Don't allow users to nest `batch_all` calls.148					filtered_origin.add_filter(149						move |c: &<T as frame_system::Config>::RuntimeCall| {150							let c = <T as Config>::RuntimeCall::from_ref(c);151							!matches!(c.is_sub_type(), Some(Call::batch_all { .. }))152						},153					);154					call.dispatch(filtered_origin)?;155				}156			}157158			Self::deposit_event(Event::BatchCompleted);159			Ok(None::<Weight>.into())160		}161	}162}163164impl<T: Config> Pallet<T> {165	fn ensure_origin_and_enabled(origin: OriginFor<T>) -> DispatchResult {166		ensure_signed(origin)?;167		<Enabled<T>>::get()168			.then(|| ())169			.ok_or(<Error<T>>::TestPalletDisabled.into())170	}171}