From 60f66c629e3ab7de86328d15d039d4d192e4048b Mon Sep 17 00:00:00 2001 From: zktony Date: Thu, 18 Aug 2022 13:47:20 +0530 Subject: [PATCH 1/3] Integrated remove proxy --- pallets/ocex/src/lib.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pallets/ocex/src/lib.rs b/pallets/ocex/src/lib.rs index 0e9feadc4..fe21354b8 100644 --- a/pallets/ocex/src/lib.rs +++ b/pallets/ocex/src/lib.rs @@ -216,6 +216,22 @@ pub mod pallet { Ok(()) } + /// Removes a proxy account from pre-registered main acocunt + #[pallet::weight(10000)] + pub fn remove_proxy_account(origin: OriginFor, proxy: T::AccountId) -> DispatchResult { + let main_account = ensure_signed(origin)?; + ensure!(>::contains_key(&main_account), Error::::MainAccountNotFound); + >::try_mutate(&main_account, |account_info| { + if let Some(account_info) = account_info { + let proxy_positon = account_info.proxies.iter().position(|account| *account == proxy).ok_or(Error::::MainAccountNotFound)?; + account_info.proxies.remove(proxy_positon); + Ok(()) + } else { + Err(Error::::MainAccountNotFound)) + } + }) + } + /// Registers a new trading pair #[pallet::weight(10000)] pub fn register_trading_pair( From be162451075424d8f20a21601724ae21287dee95 Mon Sep 17 00:00:00 2001 From: zktony Date: Mon, 22 Aug 2022 13:08:39 +0530 Subject: [PATCH 2/3] Added proxy extrinsic --- pallets/ocex/src/lib.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/pallets/ocex/src/lib.rs b/pallets/ocex/src/lib.rs index fe21354b8..bd525b9bd 100644 --- a/pallets/ocex/src/lib.rs +++ b/pallets/ocex/src/lib.rs @@ -154,6 +154,8 @@ pub mod pallet { InvalidSgxReportStatus, /// Storage overflow ocurred StorageOverflow, + /// ProxyNotFound + ProxyNotFound } #[pallet::hooks] @@ -223,12 +225,16 @@ pub mod pallet { ensure!(>::contains_key(&main_account), Error::::MainAccountNotFound); >::try_mutate(&main_account, |account_info| { if let Some(account_info) = account_info { - let proxy_positon = account_info.proxies.iter().position(|account| *account == proxy).ok_or(Error::::MainAccountNotFound)?; + let proxy_positon = account_info.proxies.iter().position(|account| *account == proxy).ok_or(Error::::ProxyNotFound)?; account_info.proxies.remove(proxy_positon); - Ok(()) - } else { - Err(Error::::MainAccountNotFound)) + >::mutate(|ingress_messages| { + ingress_messages.push(polkadex_primitives::ocex::IngressMessages::RemoveProxy( + main_account.clone(), + proxy.clone(), + )); + }); } + Ok(()) }) } From 6349122fd0107e6b38cc10c65349cb372a2824d0 Mon Sep 17 00:00:00 2001 From: zktony Date: Mon, 22 Aug 2022 21:52:40 +0530 Subject: [PATCH 3/3] Added remove proxy extrinsic --- pallets/ocex/src/lib.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pallets/ocex/src/lib.rs b/pallets/ocex/src/lib.rs index bd525b9bd..494f84a58 100644 --- a/pallets/ocex/src/lib.rs +++ b/pallets/ocex/src/lib.rs @@ -155,7 +155,9 @@ pub mod pallet { /// Storage overflow ocurred StorageOverflow, /// ProxyNotFound - ProxyNotFound + ProxyNotFound, + /// MinimumOneProxyRequried + MinimumOneProxyRequired } #[pallet::hooks] @@ -213,7 +215,7 @@ pub mod pallet { )); }); >::insert(&main_account, account_info); - Self::deposit_event(Event::MainAccountRegistered { main: main_account, proxy }); + Self::deposit_event(Event::NewProxyAdded { main: main_account, proxy }); } Ok(()) } @@ -226,6 +228,7 @@ pub mod pallet { >::try_mutate(&main_account, |account_info| { if let Some(account_info) = account_info { let proxy_positon = account_info.proxies.iter().position(|account| *account == proxy).ok_or(Error::::ProxyNotFound)?; + ensure!(account_info.proxies.len() > 1, Error::::MinimumOneProxyRequired); account_info.proxies.remove(proxy_positon); >::mutate(|ingress_messages| { ingress_messages.push(polkadex_primitives::ocex::IngressMessages::RemoveProxy( @@ -234,6 +237,7 @@ pub mod pallet { )); }); } + Self::deposit_event(Event::ProxyRemoved { main: main_account.clone(), proxy }); Ok(()) }) } @@ -473,6 +477,8 @@ pub mod pallet { #[pallet::generate_deposit(pub(super) fn deposit_event)] pub enum Event { MainAccountRegistered { main: T::AccountId, proxy: T::AccountId }, + NewProxyAdded { main: T::AccountId, proxy: T::AccountId }, + ProxyRemoved { main: T::AccountId, proxy: T::AccountId }, TradingPairRegistered { base: AssetId, quote: AssetId }, DepositSuccessful { pair: (AssetId, AssetId), asset: AssetId, amount: BalanceOf }, EnclaveShutdownRequest { id: T::AccountId },