From 2e6fa77dc1b2400112487ca9b3e9ceb8ea940f9a Mon Sep 17 00:00:00 2001 From: bgallois <benjamin@gallois.cc> Date: Wed, 6 Dec 2023 19:15:52 +0100 Subject: [PATCH] update metadata and docs --- docs/api/runtime-calls.md | 32 ++++----- docs/api/runtime-errors.md | 10 +-- docs/api/runtime-events.md | 118 ++++++++++++++++----------------- docs/dev/pallet_conventions.md | 4 +- pallets/quota/src/lib.rs | 2 +- resources/metadata.scale | Bin 133159 -> 133152 bytes 6 files changed, 81 insertions(+), 85 deletions(-) diff --git a/docs/api/runtime-calls.md b/docs/api/runtime-calls.md index f1ef287ed..f6b99dfcd 100644 --- a/docs/api/runtime-calls.md +++ b/docs/api/runtime-calls.md @@ -13,7 +13,7 @@ through on-chain governance mechanisms. ## User calls -There are **79** user calls from **23** pallets. +There are **80** user calls from **23** pallets. ### Account - 1 @@ -694,6 +694,20 @@ Revoke an identity using a revocation signature Any signed origin can execute this call. +#### force_remove_identity - 5 + +<details><summary><code>force_remove_identity(idty_index, idty_name, reason)</code></summary> + +```rust +idty_index: T::IdtyIndex +idty_name: Option<IdtyName> +reason: IdtyRemovalReason<T::IdtyRemovalOtherReason> +``` +</details> + + +remove an identity from storage + #### fix_sufficients - 7 <details><summary><code>fix_sufficients(owner_key, inc)</code></summary> @@ -1565,7 +1579,7 @@ exist altogether, thus there is no way it would have been approved in the first ## Root calls -There are **20** root calls from **10** pallets. +There are **19** root calls from **10** pallets. ### System - 0 @@ -1802,20 +1816,6 @@ O(P) where P is the number of max proposals ### Identity - 41 -#### remove_identity - 5 - -<details><summary><code>remove_identity(idty_index, idty_name, reason)</code></summary> - -```rust -idty_index: T::IdtyIndex -idty_name: Option<IdtyName> -reason: IdtyRemovalReason<T::IdtyRemovalOtherReason> -``` -</details> - - -remove an identity from storage - #### prune_item_identities_names - 6 <details><summary><code>prune_item_identities_names(names)</code></summary> diff --git a/docs/api/runtime-errors.md b/docs/api/runtime-errors.md index 1efc9f85c..1bb46f090 100644 --- a/docs/api/runtime-errors.md +++ b/docs/api/runtime-errors.md @@ -638,7 +638,7 @@ Insufficient certifications received to claim membership. <li> <details> <summary> -<code>DistanceNotOK</code> - 1</summary> +<code>DistanceNotOk</code> - 1</summary> Distance has not received a positive evaluation. </details> </li> @@ -906,14 +906,14 @@ Distance is already under evaluation. <li> <details> <summary> -<code>ManyEvaluationsByAuthor</code> - 1</summary> -Author requests too many evaluations. +<code>TooManyEvaluationsByAuthor</code> - 1</summary> +Too many evaluations requested by author. </details> </li> <li> <details> <summary> -<code>ManyEvaluationsInBlock</code> - 2</summary> +<code>TooManyEvaluationsInBlock</code> - 2</summary> Too many evaluations for this block. </details> </li> @@ -966,7 +966,7 @@ Insufficient certifications received to claim membership. <li> <details> <summary> -<code>DistanceNotOK</code> - 1</summary> +<code>DistanceNotOk</code> - 1</summary> Distance has not received a positive evaluation. </details> </li> diff --git a/docs/api/runtime-events.md b/docs/api/runtime-events.md index a326fd833..ab06c6d7a 100644 --- a/docs/api/runtime-events.md +++ b/docs/api/runtime-events.md @@ -1,6 +1,6 @@ # Runtime events -There are **130** events from **37** pallets. +There are **129** events from **37** pallets. <ul> <li>System - 0 @@ -1182,11 +1182,12 @@ reason: IdtyRemovalReason<T::IdtyRemovalOtherReason> <li> <details> <summary> -<code>MembershipAcquired()</code> - 0</summary> +<code>MembershipAcquired(member, expire_on)</code> - 0</summary> A membership was acquired. ```rust -: T::IdtyId +member: T::IdtyId +expire_on: BlockNumberFor<T> ``` </details> @@ -1194,11 +1195,12 @@ A membership was acquired. <li> <details> <summary> -<code>MembershipExpired()</code> - 1</summary> -A membership expired. +<code>MembershipTerminated(member, reason)</code> - 1</summary> +A membership was terminated. ```rust -: T::IdtyId +member: T::IdtyId +reason: MembershipTerminationReason ``` </details> @@ -1206,11 +1208,12 @@ A membership expired. <li> <details> <summary> -<code>MembershipRenewed()</code> - 2</summary> -A membership was renewed. +<code>PendingMembershipAdded(member, expire_on)</code> - 2</summary> +A pending membership was added. ```rust -: T::IdtyId +member: T::IdtyId +expire_on: BlockNumberFor<T> ``` </details> @@ -1218,35 +1221,11 @@ A membership was renewed. <li> <details> <summary> -<code>MembershipRequested()</code> - 3</summary> -A membership was requested. +<code>PendingMembershipExpired(member)</code> - 3</summary> +A pending membership has expired. ```rust -: T::IdtyId -``` - -</details> -</li> -<li> -<details> -<summary> -<code>MembershipRevoked()</code> - 4</summary> -A membership was revoked. - -```rust -: T::IdtyId -``` - -</details> -</li> -<li> -<details> -<summary> -<code>PendingMembershipExpired()</code> - 5</summary> -A pending membership request has expired. - -```rust -: T::IdtyId +member: T::IdtyId ``` </details> @@ -1303,22 +1282,27 @@ receiver: T::IdtyIndex </li> <li>Distance - 44 <ul> -</ul> -</li> -<li>SmithSubWot - 50 -<ul> -</ul> +<li> +<details> +<summary> +<code>EvaluationRequested(idty_index, who)</code> - 0</summary> +A distance evaluation was requested. + +```rust +idty_index: T::IdtyIndex +who: T::AccountId +``` + +</details> </li> -<li>SmithMembership - 52 -<ul> <li> <details> <summary> -<code>MembershipAcquired()</code> - 0</summary> -A membership was acquired. +<code>EvaluationUpdated(evaluator)</code> - 1</summary> +A distance evaluation was updated. ```rust -: T::IdtyId +evaluator: T::AccountId ``` </details> @@ -1326,23 +1310,33 @@ A membership was acquired. <li> <details> <summary> -<code>MembershipExpired()</code> - 1</summary> -A membership expired. +<code>EvaluationStatusForced(idty_index, status)</code> - 2</summary> +A distance status was forced. ```rust -: T::IdtyId +idty_index: T::IdtyIndex +status: Option<(<T as frame_system::Config>::AccountId, DistanceStatus)> ``` </details> </li> +</ul> +</li> +<li>SmithSubWot - 50 +<ul> +</ul> +</li> +<li>SmithMembership - 52 +<ul> <li> <details> <summary> -<code>MembershipRenewed()</code> - 2</summary> -A membership was renewed. +<code>MembershipAcquired(member, expire_on)</code> - 0</summary> +A membership was acquired. ```rust -: T::IdtyId +member: T::IdtyId +expire_on: BlockNumberFor<T> ``` </details> @@ -1350,11 +1344,12 @@ A membership was renewed. <li> <details> <summary> -<code>MembershipRequested()</code> - 3</summary> -A membership was requested. +<code>MembershipTerminated(member, reason)</code> - 1</summary> +A membership was terminated. ```rust -: T::IdtyId +member: T::IdtyId +reason: MembershipTerminationReason ``` </details> @@ -1362,11 +1357,12 @@ A membership was requested. <li> <details> <summary> -<code>MembershipRevoked()</code> - 4</summary> -A membership was revoked. +<code>PendingMembershipAdded(member, expire_on)</code> - 2</summary> +A pending membership was added. ```rust -: T::IdtyId +member: T::IdtyId +expire_on: BlockNumberFor<T> ``` </details> @@ -1374,11 +1370,11 @@ A membership was revoked. <li> <details> <summary> -<code>PendingMembershipExpired()</code> - 5</summary> -A pending membership request has expired. +<code>PendingMembershipExpired(member)</code> - 3</summary> +A pending membership has expired. ```rust -: T::IdtyId +member: T::IdtyId ``` </details> diff --git a/docs/dev/pallet_conventions.md b/docs/dev/pallet_conventions.md index c9ae7f7bc..e5175f305 100644 --- a/docs/dev/pallet_conventions.md +++ b/docs/dev/pallet_conventions.md @@ -30,6 +30,6 @@ Hooks are inherently infallible, and no errors should be emitted within them. To Internal functions should adhere to the following naming convention: -- `do_action` for regular functions executing the base logic of a call (e.g., `do_remove_identity`). These functions should directly emit events and trigger errors as needed. -- `force_action` for privileged functions that bypass any checks. This can be useful for specific benchmarking functions. +- `do_action_` for regular functions executing the base logic of a call (e.g., `do_remove_identity_`). These functions should directly emit events and trigger errors as needed. +- `force_action_` for privileged functions that bypass any checks. This can be useful for specific benchmarking functions. - `check_` for functions performing checks and triggering errors in case of failure. diff --git a/pallets/quota/src/lib.rs b/pallets/quota/src/lib.rs index 8431af5d6..f3a579cb2 100644 --- a/pallets/quota/src/lib.rs +++ b/pallets/quota/src/lib.rs @@ -130,7 +130,7 @@ pub mod pallet { } // This pallet only contains the `on_idle` hook and no call. - // Hooks are infallible by definition, so there are no error. To monitor errors + // Hooks are infallible by definition, so there are no error. To monitor no-ops // from inside the quota pallet, we use events as mentioned in // https://substrate.stackexchange.com/questions/9854/emitting-errors-from-hooks-like-on-initialize diff --git a/resources/metadata.scale b/resources/metadata.scale index 8cba70d82084d4a6c13159a9585ad29f6c8e7c00..a4239406fb5544df7692aff4f117176809213953 100644 GIT binary patch delta 12920 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 DA#`KM delta 12709 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 -- GitLab