From 4c580e85ed71f35b681fb55e2c6c8924aaf94b3b Mon Sep 17 00:00:00 2001 From: Shaun Wang Date: Thu, 12 Aug 2021 21:15:57 +1200 Subject: [PATCH 1/2] pallet-proxy: emit events on proxy added. --- frame/proxy/src/lib.rs | 13 +++++++++++-- frame/proxy/src/tests.rs | 1 + 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/frame/proxy/src/lib.rs b/frame/proxy/src/lib.rs index 6a853c8e2b8e1..ca46dbe72e3f2 100644 --- a/frame/proxy/src/lib.rs +++ b/frame/proxy/src/lib.rs @@ -228,7 +228,9 @@ pub mod pallet { delay: T::BlockNumber, ) -> DispatchResult { let who = ensure_signed(origin)?; - Self::add_proxy_delegate(&who, delegate, proxy_type, delay) + Self::add_proxy_delegate(&who, delegate.clone(), proxy_type.clone(), delay)?; + Self::deposit_event(Event::::ProxyAdded(who, delegate, proxy_type, delay)); + Ok(()) } /// Unregister a proxy account for the sender. @@ -534,7 +536,12 @@ pub mod pallet { } #[pallet::event] - #[pallet::metadata(T::AccountId = "AccountId", T::ProxyType = "ProxyType", CallHashOf = "Hash")] + #[pallet::metadata( + T::AccountId = "AccountId", + T::ProxyType = "ProxyType", + CallHashOf = "Hash", + T::BlockNumber = "BlockNumber", + )] #[pallet::generate_deposit(pub(super) fn deposit_event)] pub enum Event { /// A proxy was executed correctly, with the given \[result\]. @@ -545,6 +552,8 @@ pub mod pallet { AnonymousCreated(T::AccountId, T::AccountId, T::ProxyType, u16), /// An announcement was placed to make a call in the future. \[real, proxy, call_hash\] Announced(T::AccountId, T::AccountId, CallHashOf), + /// A proxy was added. \[delegator, delegatee, proxy_type, delay\] + ProxyAdded(T::AccountId, T::AccountId, T::ProxyType, T::BlockNumber), } /// Old name generated by `decl_event`. diff --git a/frame/proxy/src/tests.rs b/frame/proxy/src/tests.rs index df88f17b71a54..712a33250e91e 100644 --- a/frame/proxy/src/tests.rs +++ b/frame/proxy/src/tests.rs @@ -193,6 +193,7 @@ fn expect_events(e: Vec) { fn announcement_works() { new_test_ext().execute_with(|| { assert_ok!(Proxy::add_proxy(Origin::signed(1), 3, ProxyType::Any, 1)); + System::assert_last_event(ProxyEvent::ProxyAdded(1, 3, ProxyType::Any, 1).into()); assert_ok!(Proxy::add_proxy(Origin::signed(2), 3, ProxyType::Any, 1)); assert_eq!(Balances::reserved_balance(3), 0); From 17d9ed17f875fd7cef99e59b0777133354bf8fe9 Mon Sep 17 00:00:00 2001 From: Shaun Wang Date: Thu, 12 Aug 2021 21:47:29 +1200 Subject: [PATCH 2/2] Apply review suggestions. --- frame/proxy/src/lib.rs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/frame/proxy/src/lib.rs b/frame/proxy/src/lib.rs index ca46dbe72e3f2..0537ed4a32392 100644 --- a/frame/proxy/src/lib.rs +++ b/frame/proxy/src/lib.rs @@ -228,9 +228,7 @@ pub mod pallet { delay: T::BlockNumber, ) -> DispatchResult { let who = ensure_signed(origin)?; - Self::add_proxy_delegate(&who, delegate.clone(), proxy_type.clone(), delay)?; - Self::deposit_event(Event::::ProxyAdded(who, delegate, proxy_type, delay)); - Ok(()) + Self::add_proxy_delegate(&who, delegate, proxy_type, delay) } /// Unregister a proxy account for the sender. @@ -655,7 +653,11 @@ impl Pallet { ) -> DispatchResult { ensure!(delegator != &delegatee, Error::::NoSelfProxy); Proxies::::try_mutate(delegator, |(ref mut proxies, ref mut deposit)| { - let proxy_def = ProxyDefinition { delegate: delegatee, proxy_type, delay }; + let proxy_def = ProxyDefinition { + delegate: delegatee.clone(), + proxy_type: proxy_type.clone(), + delay, + }; let i = proxies.binary_search(&proxy_def).err().ok_or(Error::::Duplicate)?; proxies.try_insert(i, proxy_def).map_err(|_| Error::::TooMany)?; let new_deposit = Self::deposit(proxies.len() as u32); @@ -665,6 +667,12 @@ impl Pallet { T::Currency::unreserve(delegator, *deposit - new_deposit); } *deposit = new_deposit; + Self::deposit_event(Event::::ProxyAdded( + delegator.clone(), + delegatee, + proxy_type, + delay, + )); Ok(()) }) }