[subxt-historic]: extract call and event types from metadata at a block (#2095)

* Inject call and event types from metadata too at some block in subxt-historic

* bump subxt-historic to 0.0.4

* Fix unrelated doc things to try and fix this job

* Other Rust 1.90 fixes

* 'Fix' Test

* Try fixing clippy WASM job

* Try again to get clippy wasm working

* trybuild fix

* trybuild fix take 2
This commit is contained in:
James Wilson
2025-09-25 13:37:09 +01:00
committed by GitHub
parent b1a3a3afcc
commit b13b8ec8d0
10 changed files with 31 additions and 23 deletions
+7 -1
View File
@@ -132,7 +132,13 @@ impl<T: Config> OnlineClient<T> {
metadata
};
let historic_types = config.legacy_types_for_spec_version(spec_version);
let mut historic_types = config.legacy_types_for_spec_version(spec_version);
// The metadata can be used to construct call and event types instead of us havign to hardcode them all for every spec version:
let types_from_metadata = frame_decode::helpers::type_registry_from_metadata_any(&metadata)
.map_err(
|parse_error| OnlineClientAtBlockError::CannotInjectMetadataTypes { parse_error },
)?;
historic_types.prepend(types_from_metadata);
Ok(ClientAtBlock::new(OnlineClientAtBlock {
config,
+7
View File
@@ -102,6 +102,13 @@ pub enum OnlineClientAtBlockError {
/// The error we encountered.
reason: String,
},
#[error(
"Cannot inject types from metadata: failure to parse a type found in the metadata: {parse_error}"
)]
CannotInjectMetadataTypes {
/// Error parsing a type found in the metadata.
parse_error: scale_info_legacy::lookup_name::ParseError,
},
}
/// Errors working with extrinsics.
+1 -5
View File
@@ -66,11 +66,7 @@ impl<K: Clone + Copy + Display + PartialOrd + Ord, V> RangeMapBuilder<K, V> {
return Err(RangeMapError::EmptyRange(start));
}
if let Some(&(s, e, _)) = self
.mapping
.iter()
.find(|&&(s, e, _)| (start < e && end > s))
{
if let Some(&(s, e, _)) = self.mapping.iter().find(|&&(s, e, _)| start < e && end > s) {
return Err(RangeMapError::OverlappingRanges {
proposed: (start, end),
existing: (s, e),