mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-14 06:21:11 +00:00
Metadata V16: Implement support for Pallet View Functions (#1981)
* Support Pallet View Functions in Subxt * fmt * clippy * Move a little view function logic to subxt_core * clippy * Add back check that prob isnt needed * avoid vec macro in core * Add view funciton test and apply various fixes to get it working * Add test for dynamic view fn call and fix issues * clippy * fix test-runtime * fmt * remove export * avoid vec for nostd core * use const instead of fn for view fn call name * Update to support latest unstable metadata * Update metadata stripping tests for new v16 version
This commit is contained in:
@@ -6,8 +6,8 @@
|
||||
|
||||
use crate::{
|
||||
CustomMetadata, CustomValueMetadata, ExtrinsicMetadata, Metadata, PalletMetadata,
|
||||
PalletViewFunctionMetadata, RuntimeApiMetadata, RuntimeApiMethodMetadata, StorageEntryMetadata,
|
||||
StorageEntryType,
|
||||
RuntimeApiMetadata, RuntimeApiMethodMetadata, StorageEntryMetadata, StorageEntryType,
|
||||
ViewFunctionMetadata,
|
||||
};
|
||||
use alloc::vec::Vec;
|
||||
use hashbrown::HashMap;
|
||||
@@ -406,12 +406,12 @@ pub fn get_runtime_apis_hash(trait_metadata: RuntimeApiMetadata) -> Hash {
|
||||
})
|
||||
}
|
||||
|
||||
/// Obtain the hash of a specific pallet view function, or an error if it's not found.
|
||||
pub fn get_pallet_view_function_hash(view_function: &PalletViewFunctionMetadata) -> Hash {
|
||||
/// Obtain the hash of a specific view function, or an error if it's not found.
|
||||
pub fn get_view_function_hash(view_function: &ViewFunctionMetadata) -> Hash {
|
||||
let registry = view_function.types;
|
||||
|
||||
// The Query ID is `twox_128(pallet_name) ++ twox_128("fn_name(fnarg_types) -> return_ty")`.
|
||||
let mut bytes = view_function.query_id();
|
||||
let mut bytes = *view_function.query_id();
|
||||
|
||||
// This only takes type _names_ into account, so we beef this up by combining with actual
|
||||
// type hashes, in a similar approach to runtime APIs..
|
||||
@@ -439,7 +439,7 @@ fn get_pallet_view_functions_hash(pallet_metadata: &PalletMetadata) -> Hash {
|
||||
// be identical regardless. For this, we can just XOR the hashes for each method
|
||||
// together; we'll get the same output whichever order they are XOR'd together in,
|
||||
// so long as each individual method is the same.
|
||||
xor(bytes, get_pallet_view_function_hash(&method_metadata))
|
||||
xor(bytes, get_view_function_hash(&method_metadata))
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user