Select Git revision
-
Cédric Moreau authoredCédric Moreau authored
impls.rs 2.51 KiB
use crate::{Config, CurrentSession, Pallet};
use frame_support::Parameter;
use pallet_authority_members::SessionIndex;
use pallet_identity::IdtyEvent;
use sp_runtime::traits::Convert;
/// We want to remove a Smith when he is removed from the higher level set of "authorities".
impl<T: Config> pallet_authority_members::OnRemovedMember<T> for Pallet<T> {
fn on_removed_member(_: T) {
todo!("Remove smith as well")
// TODO: not sure if we should listen authority-members or rather the initial pallet that called the removal
}
}
// TODO: /// or //! ?
/// We want to remove a Smith when he is removed (blacklisted) from the higher level set of "authorities".
/// A blacklisting means the user does not respect the operational conditions for an authority, so
/// he does not deserve the Smith role.
impl<T: Config> pallet_authority_members::OnBlacklistedMember<T::MemberId> for Pallet<T> {
fn on_blacklisted_member(member_id: T::MemberId) {
Pallet::<T>::smith_goes_blacklisted(
T::IdtyIdOfAuthorityId::convert(member_id).expect("convertion should be ok"),
);
}
}
///
impl<T: Config> pallet_authority_members::OnOutgoingMember<T::MemberId> for Pallet<T> {
fn on_outgoing_member(member_id: T::MemberId) {
Pallet::<T>::smith_goes_offline(
T::IdtyIdOfAuthorityId::convert(member_id).expect("convertion should be ok"),
);
}
}
/// As long as a Smith is in the authority set, he will not expire.
impl<T: Config> pallet_authority_members::OnIncomingMember<T::MemberId> for Pallet<T> {
fn on_incoming_member(member_id: T::MemberId) {
Pallet::<T>::smith_goes_online(
T::IdtyIdOfAuthorityId::convert(member_id).expect("convertion should be ok"),
);
}
}
///
impl<T: Config> pallet_authority_members::OnNewSession for Pallet<T> {
fn on_new_session(index: SessionIndex) {
CurrentSession::<T>::put(index);
Pallet::<T>::do_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>::do_exclude_removed_wot_member(idty_id);
}
}
}
}