working_group.rs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. use frame_support::StorageMap;
  2. use sp_std::marker::PhantomData;
  3. use crate::{ContentDirectoryWorkingGroupInstance, StorageWorkingGroupInstance};
  4. use stake::{BalanceOf, NegativeImbalance};
  5. pub struct ContentDirectoryWGStakingEventsHandler<T> {
  6. pub marker: PhantomData<T>,
  7. }
  8. impl<T: stake::Trait + working_group::Trait<ContentDirectoryWorkingGroupInstance>>
  9. stake::StakingEventsHandler<T> for ContentDirectoryWGStakingEventsHandler<T>
  10. {
  11. /// Unstake remaining sum back to the source_account_id
  12. fn unstaked(
  13. stake_id: &<T as stake::Trait>::StakeId,
  14. _unstaked_amount: BalanceOf<T>,
  15. remaining_imbalance: NegativeImbalance<T>,
  16. ) -> NegativeImbalance<T> {
  17. // Stake not related to a staked role managed by the hiring module.
  18. if !hiring::ApplicationIdByStakingId::<T>::contains_key(*stake_id) {
  19. return remaining_imbalance;
  20. }
  21. let hiring_application_id = hiring::ApplicationIdByStakingId::<T>::get(*stake_id);
  22. if working_group::MemberIdByHiringApplicationId::<T, ContentDirectoryWorkingGroupInstance>::contains_key(
  23. hiring_application_id,
  24. ) {
  25. return <working_group::Module<T, ContentDirectoryWorkingGroupInstance>>::refund_working_group_stake(
  26. *stake_id,
  27. remaining_imbalance,
  28. );
  29. }
  30. remaining_imbalance
  31. }
  32. /// Empty handler for the slashing.
  33. fn slashed(
  34. _: &<T as stake::Trait>::StakeId,
  35. _: Option<<T as stake::Trait>::SlashId>,
  36. _: BalanceOf<T>,
  37. _: BalanceOf<T>,
  38. remaining_imbalance: NegativeImbalance<T>,
  39. ) -> NegativeImbalance<T> {
  40. remaining_imbalance
  41. }
  42. }
  43. pub struct StorageWgStakingEventsHandler<T> {
  44. pub marker: PhantomData<T>,
  45. }
  46. impl<T: stake::Trait + working_group::Trait<StorageWorkingGroupInstance>>
  47. stake::StakingEventsHandler<T> for StorageWgStakingEventsHandler<T>
  48. {
  49. /// Unstake remaining sum back to the source_account_id
  50. fn unstaked(
  51. stake_id: &<T as stake::Trait>::StakeId,
  52. _unstaked_amount: BalanceOf<T>,
  53. remaining_imbalance: NegativeImbalance<T>,
  54. ) -> NegativeImbalance<T> {
  55. // Stake not related to a staked role managed by the hiring module.
  56. if !hiring::ApplicationIdByStakingId::<T>::contains_key(*stake_id) {
  57. return remaining_imbalance;
  58. }
  59. let hiring_application_id = hiring::ApplicationIdByStakingId::<T>::get(*stake_id);
  60. if working_group::MemberIdByHiringApplicationId::<T, StorageWorkingGroupInstance>::contains_key(
  61. hiring_application_id,
  62. ) {
  63. return <working_group::Module<T, StorageWorkingGroupInstance>>::refund_working_group_stake(
  64. *stake_id,
  65. remaining_imbalance,
  66. );
  67. }
  68. remaining_imbalance
  69. }
  70. /// Empty handler for the slashing.
  71. fn slashed(
  72. _: &<T as stake::Trait>::StakeId,
  73. _: Option<<T as stake::Trait>::SlashId>,
  74. _: BalanceOf<T>,
  75. _: BalanceOf<T>,
  76. remaining_imbalance: NegativeImbalance<T>,
  77. ) -> NegativeImbalance<T> {
  78. remaining_imbalance
  79. }
  80. }