From c1479a4f5da777ef37dbe56899be06dfc60320f2 Mon Sep 17 00:00:00 2001
From: cgeek <cem.moreau@gmail.com>
Date: Sun, 14 Jan 2024 21:44:24 +0100
Subject: [PATCH] review: lost membership is to be handled by
 `OnMembershipEventHandler`

---
 Cargo.lock                           |  1 -
 pallets/smith-members/Cargo.toml     |  2 +-
 pallets/smith-members/src/impls.rs   | 19 -------------------
 pallets/smith-members/src/lib.rs     |  2 +-
 runtime/common/src/handlers.rs       |  2 ++
 runtime/common/src/pallets_config.rs |  2 +-
 6 files changed, 5 insertions(+), 23 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 2ba755f7b..d4e07f05f 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -6363,7 +6363,6 @@ dependencies = [
  "maplit",
  "pallet-authority-members",
  "pallet-balances",
- "pallet-identity",
  "parity-scale-codec",
  "scale-info",
  "serde",
diff --git a/pallets/smith-members/Cargo.toml b/pallets/smith-members/Cargo.toml
index 03321cc92..5ced90e2c 100644
--- a/pallets/smith-members/Cargo.toml
+++ b/pallets/smith-members/Cargo.toml
@@ -18,7 +18,6 @@ log = { version = "0.4.17", default-features = false }
 scale-info = { version = "2.1.1", default-features = false, features = ["derive"] }
 serde = { version = "1.0.101", default-features = false, optional = true }
 pallet-authority-members = { path = "../authority-members", default-features = false }
-pallet-identity = { path = "../identity", default-features = false }
 frame-support = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.42', default-features = false }
 frame-system = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.42', default-features = false }
 pallet-balances = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.42', default-features = false }
@@ -40,6 +39,7 @@ std = [
 	'frame-benchmarking/std',
 	"log/std",
 	"pallet-balances/std",
+	"pallet-authority-members/std",
 	"scale-info/std",
 	"serde",
 	"sp-runtime/std",
diff --git a/pallets/smith-members/src/impls.rs b/pallets/smith-members/src/impls.rs
index 12c0b7592..34bbb4773 100644
--- a/pallets/smith-members/src/impls.rs
+++ b/pallets/smith-members/src/impls.rs
@@ -1,7 +1,5 @@
 use crate::{Config, CurrentSession, Pallet};
-use frame_support::Parameter;
 use pallet_authority_members::SessionIndex;
-use pallet_identity::IdtyEvent;
 use sp_runtime::traits::Convert;
 
 impl<T: Config> pallet_authority_members::OnOutgoingMember<T::MemberId> for Pallet<T> {
@@ -28,20 +26,3 @@ impl<T: Config> pallet_authority_members::OnNewSession for Pallet<T> {
         Pallet::<T>::on_exclude_expired_smiths(index);
     }
 }
-
-// implement identity event handler
-impl<
-        IdtyIndex: Copy + Parameter,
-        T: Config<IdtyIndex = IdtyIndex> + pallet_identity::Config<IdtyIndex = IdtyIndex>,
-    > pallet_identity::traits::OnIdtyChange<T> for Pallet<T>
-{
-    fn on_idty_change(idty_id: IdtyIndex, idty_event: &IdtyEvent<T>) {
-        match idty_event {
-            // initialize quota on identity creation
-            IdtyEvent::Created { .. } => {}
-            IdtyEvent::Removed { .. } => {
-                Pallet::<T>::on_removed_wot_member(idty_id);
-            }
-        }
-    }
-}
diff --git a/pallets/smith-members/src/lib.rs b/pallets/smith-members/src/lib.rs
index 68c45f944..5d896994a 100644
--- a/pallets/smith-members/src/lib.rs
+++ b/pallets/smith-members/src/lib.rs
@@ -471,7 +471,7 @@ impl<T: Config> Pallet<T> {
         }
     }
 
-    fn on_removed_wot_member(idty_index: T::IdtyIndex) {
+    pub fn on_removed_wot_member(idty_index: T::IdtyIndex) {
         if Smiths::<T>::get(idty_index).is_some() {
             Self::_do_exclude_smith(idty_index, SmithRemovalReason::LostMembership);
         }
diff --git a/runtime/common/src/handlers.rs b/runtime/common/src/handlers.rs
index cb01cd3c4..c52925272 100644
--- a/runtime/common/src/handlers.rs
+++ b/runtime/common/src/handlers.rs
@@ -39,6 +39,7 @@ impl<
         Runtime: frame_system::Config<AccountId = AccountId>
             + pallet_identity::Config<IdtyData = IdtyData, IdtyIndex = IdtyIndex>
             + pallet_membership::Config
+            + pallet_smith_members::Config<IdtyIndex = IdtyIndex>
             + pallet_universal_dividend::Config,
     > sp_membership::traits::OnEvent<IdtyIndex> for OnMembershipEventHandler<Inner, Runtime>
 {
@@ -54,6 +55,7 @@ impl<
                         );
                     }
                 }
+                pallet_smith_members::Pallet::<Runtime>::on_removed_wot_member(*idty_index);
             }
             // when main membership is acquired, it starts getting right to UD
             sp_membership::Event::MembershipAdded(idty_index) => {
diff --git a/runtime/common/src/pallets_config.rs b/runtime/common/src/pallets_config.rs
index 6a831be04..f1cfbf299 100644
--- a/runtime/common/src/pallets_config.rs
+++ b/runtime/common/src/pallets_config.rs
@@ -480,7 +480,7 @@ macro_rules! pallets_config {
             type IdtyNameValidator = IdtyNameValidatorImpl;
             type Signer = <Signature as sp_runtime::traits::Verify>::Signer;
 			type Signature = Signature;
-            type OnIdtyChange = (Wot, SmithMembers, Quota);
+            type OnIdtyChange = (Wot, Quota);
             type RuntimeEvent = RuntimeEvent;
             type WeightInfo = common_runtime::weights::pallet_identity::WeightInfo<Runtime>;
         }
-- 
GitLab