Skip to content
Snippets Groups Projects

Fix #219 and #220

Merged Benjamin Gallois requested to merge 220-fix-smith-members-events into master
All threads resolved!
Files
2
@@ -172,9 +172,15 @@ pub mod pallet {
who: T::AccountId,
},
/// Distance rule was found valid.
EvaluatedValid { idty_index: T::IdtyIndex },
EvaluatedValid {
idty_index: T::IdtyIndex,
distance: Perbill,
},
/// Distance rule was found invalid.
EvaluatedInvalid { idty_index: T::IdtyIndex },
EvaluatedInvalid {
idty_index: T::IdtyIndex,
distance: Perbill,
},
}
// ERRORS //
@@ -313,7 +319,7 @@ pub mod pallet {
) -> DispatchResult {
ensure_root(origin)?;
Self::do_valid_distance_status(identity);
Self::do_valid_distance_status(identity, Perbill::one());
Ok(())
}
}
@@ -509,11 +515,17 @@ pub mod pallet {
}
/// Set the distance status using IdtyIndex and AccountId
pub fn do_valid_distance_status(idty: <T as pallet_identity::Config>::IdtyIndex) {
pub fn do_valid_distance_status(
idty: <T as pallet_identity::Config>::IdtyIndex,
distance: Perbill,
) {
// callback
T::OnValidDistanceStatus::on_valid_distance_status(idty);
// deposit event
Self::deposit_event(Event::EvaluatedValid { idty_index: idty });
Self::deposit_event(Event::EvaluatedValid {
idty_index: idty,
distance: distance,
});
}
pub fn do_evaluation(index: u32) -> Weight {
@@ -532,15 +544,16 @@ pub mod pallet {
for (idty, median_acc) in current_pool.evaluations.into_iter() {
// distance result
let mut distance_result: Option<bool> = None;
let mut distance = Perbill::zero();
// get result of the computation
if let Some(median_result) = median_acc.get_median() {
let median = match median_result {
distance = match median_result {
MedianResult::One(m) => m,
MedianResult::Two(m1, m2) => m1 + (m2 - m1) / 2, // Avoid overflow (since max is 1)
};
// update distance result
distance_result = Some(median >= T::MinAccessibleReferees::get());
distance_result = Some(distance >= T::MinAccessibleReferees::get());
}
// take requester and perform unreserve or slash
@@ -566,7 +579,7 @@ pub mod pallet {
&requester,
<T as Config>::EvaluationPrice::get(),
);
Self::do_valid_distance_status(idty);
Self::do_valid_distance_status(idty, distance);
weight = weight.saturating_add(
<T as pallet::Config>::WeightInfo::do_evaluation_success()
.saturating_sub(
@@ -580,7 +593,10 @@ pub mod pallet {
&requester,
<T as Config>::EvaluationPrice::get(),
);
Self::deposit_event(Event::EvaluatedInvalid { idty_index: idty });
Self::deposit_event(Event::EvaluatedInvalid {
idty_index: idty,
distance,
});
weight = weight.saturating_add(
<T as pallet::Config>::WeightInfo::do_evaluation_failure()
.saturating_sub(
Loading