From 40404150e389c7ae04639d1611156fe65e0e17ba Mon Sep 17 00:00:00 2001
From: bgallois <benjamin@gallois.cc>
Date: Tue, 12 Nov 2024 20:31:20 +0100
Subject: [PATCH] move handle dust

---
 runtime/common/src/handlers.rs       | 27 ++++++++++++++++++++++++++-
 runtime/common/src/pallets_config.rs | 21 +++++----------------
 runtime/g1/src/lib.rs                |  5 +----
 runtime/gdev/src/lib.rs              |  5 +----
 runtime/gtest/src/lib.rs             |  5 +----
 5 files changed, 34 insertions(+), 29 deletions(-)

diff --git a/runtime/common/src/handlers.rs b/runtime/common/src/handlers.rs
index 197e35743..11d546209 100644
--- a/runtime/common/src/handlers.rs
+++ b/runtime/common/src/handlers.rs
@@ -15,7 +15,10 @@
 // along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
 use super::{entities::*, AccountId, IdtyIndex};
-use frame_support::{pallet_prelude::Weight, traits::UnfilteredDispatchable};
+use frame_support::{
+    pallet_prelude::Weight,
+    traits::{Imbalance, UnfilteredDispatchable},
+};
 use pallet_smith_members::SmithRemovalReason;
 use sp_core::Get;
 
@@ -178,3 +181,25 @@ impl<
         !pallet_authority_members::Pallet::<Runtime>::online().contains(idty_index)
     }
 }
+
+type CreditOf<Runtime, Balances> =
+    frame_support::traits::tokens::fungible::Credit<Runtime, Balances>;
+pub struct HandleFees<Runtime, Balances>(
+    frame_support::pallet_prelude::PhantomData<Runtime>,
+    frame_support::pallet_prelude::PhantomData<Balances>,
+);
+impl<Runtime, Balances> frame_support::traits::OnUnbalanced<CreditOf<Runtime::AccountId, Balances>>
+    for HandleFees<Runtime, Balances>
+where
+    Runtime: pallet_treasury::Config,
+    Balances: frame_support::traits::fungible::Balanced<Runtime::AccountId>,
+{
+    fn on_nonzero_unbalanced(amount: CreditOf<Runtime::AccountId, Balances>) {
+        // fee is moved to treasury
+        let _ = Balances::deposit(
+            &pallet_treasury::Pallet::<Runtime>::account_id(),
+            amount.peek(),
+            frame_support::traits::tokens::Precision::Exact,
+        );
+    }
+}
diff --git a/runtime/common/src/pallets_config.rs b/runtime/common/src/pallets_config.rs
index 0b906cddb..b69440907 100644
--- a/runtime/common/src/pallets_config.rs
+++ b/runtime/common/src/pallets_config.rs
@@ -104,7 +104,8 @@ macro_rules! pallets_config {
 
         impl pallet_duniter_account::Config for Runtime {
             // does currency adapter in any case, but adds "refund with quota" feature
-            type InnerOnChargeTransaction = FungibleAdapter<Balances, HandleFees>;
+            type InnerOnChargeTransaction =
+                FungibleAdapter<Balances, HandleFees<Runtime, Balances>>;
             type Refund = Quota;
             type RuntimeEvent = RuntimeEvent;
             type WeightInfo = weights::pallet_duniter_account::WeightInfo<Runtime>;
@@ -162,7 +163,7 @@ macro_rules! pallets_config {
         impl pallet_balances::Config for Runtime {
             type AccountStore = Account;
             type Balance = Balance;
-            type DustRemoval = HandleFees;
+            type DustRemoval = HandleFees<Runtime, Balances>;
             type ExistentialDeposit = ExistentialDeposit;
             type FreezeIdentifier = ();
             type MaxFreezes = frame_support::pallet_prelude::ConstU32<0>;
@@ -175,18 +176,6 @@ macro_rules! pallets_config {
             type WeightInfo = weights::pallet_balances::WeightInfo<Runtime>;
         }
 
-        type CreditOf = frame_support::traits::tokens::fungible::Credit<AccountId, Balances>;
-        pub struct HandleFees;
-        impl frame_support::traits::OnUnbalanced<CreditOf> for HandleFees {
-            fn on_nonzero_unbalanced(amount: CreditOf) {
-                // fee is moved to treasury
-                let _ = Balances::deposit(
-                    &Treasury::account_id(),
-                    amount.peek(),
-                    frame_support::traits::tokens::Precision::Exact,
-                );
-            }
-        }
         pub struct OnChargeTransaction;
 
         parameter_types! {
@@ -336,7 +325,7 @@ macro_rules! pallets_config {
             type GetCurrentEpochIndex = GetCurrentEpochIndex<Self>;
             type MaxRequests = frame_support::traits::ConstU32<100>;
             type OnFilledRandomness = ();
-            type OnUnbalanced = HandleFees;
+            type OnUnbalanced = HandleFees<Runtime, Balances>;
             type ParentBlockRandomness = pallet_babe::ParentBlockRandomness<Self>;
             type RandomnessFromOneEpochAgo = pallet_babe::RandomnessFromOneEpochAgo<Self>;
             type RequestPrice = frame_support::traits::ConstU64<2_000>;
@@ -518,7 +507,7 @@ macro_rules! pallets_config {
             type EvaluationPrice = frame_support::traits::ConstU64<1000>;
             type MaxRefereeDistance = MaxRefereeDistance;
             type MinAccessibleReferees = MinAccessibleReferees;
-            type OnUnbalanced = HandleFees;
+            type OnUnbalanced = HandleFees<Runtime, Balances>;
             type OnValidDistanceStatus = Wot;
             type RuntimeEvent = RuntimeEvent;
             type RuntimeHoldReason = RuntimeHoldReason;
diff --git a/runtime/g1/src/lib.rs b/runtime/g1/src/lib.rs
index c2b192a24..8dccda2f1 100644
--- a/runtime/g1/src/lib.rs
+++ b/runtime/g1/src/lib.rs
@@ -35,10 +35,7 @@ pub use common_runtime::{
     constants::*, entities::*, handlers::*, AccountId, Address, Balance, BlockNumber,
     FullIdentificationOfImpl, GetCurrentEpochIndex, Hash, Header, IdtyIndex, Index, Signature,
 };
-use frame_support::{
-    traits::{fungible::Balanced, Contains, Imbalance},
-    PalletId,
-};
+use frame_support::{traits::Contains, PalletId};
 pub use frame_system::Call as SystemCall;
 use frame_system::EnsureRoot;
 pub use pallet_balances::Call as BalancesCall;
diff --git a/runtime/gdev/src/lib.rs b/runtime/gdev/src/lib.rs
index a2b0ec5d8..cecb06be5 100644
--- a/runtime/gdev/src/lib.rs
+++ b/runtime/gdev/src/lib.rs
@@ -35,10 +35,7 @@ pub use common_runtime::{
     constants::*, entities::*, handlers::*, AccountId, Address, Balance, BlockNumber,
     FullIdentificationOfImpl, GetCurrentEpochIndex, Hash, Header, IdtyIndex, Index, Signature,
 };
-use frame_support::{
-    traits::{fungible::Balanced, Contains, Imbalance},
-    PalletId,
-};
+use frame_support::{traits::Contains, PalletId};
 pub use frame_system::Call as SystemCall;
 use frame_system::EnsureRoot;
 pub use pallet_balances::Call as BalancesCall;
diff --git a/runtime/gtest/src/lib.rs b/runtime/gtest/src/lib.rs
index 6be12db81..842fc6a38 100644
--- a/runtime/gtest/src/lib.rs
+++ b/runtime/gtest/src/lib.rs
@@ -35,10 +35,7 @@ pub use common_runtime::{
     constants::*, entities::*, handlers::*, AccountId, Address, Balance, BlockNumber,
     FullIdentificationOfImpl, GetCurrentEpochIndex, Hash, Header, IdtyIndex, Index, Signature,
 };
-use frame_support::{
-    traits::{fungible::Balanced, Contains, Imbalance},
-    PalletId,
-};
+use frame_support::{traits::Contains, PalletId};
 pub use frame_system::Call as SystemCall;
 use frame_system::EnsureRoot;
 pub use pallet_balances::Call as BalancesCall;
-- 
GitLab