XXX: Adapt to new interface for metadata

Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
This commit is contained in:
Alexandru Vasile
2023-01-20 18:34:43 +00:00
parent 439c8725a2
commit c6f90e24df
+18 -5
View File
@@ -30,7 +30,10 @@ use codec::{
Decode,
};
use derivative::Derivative;
use frame_metadata::RuntimeMetadataPrefixed;
use frame_metadata::{
OpaqueMetadata,
RuntimeMetadataPrefixed,
};
use futures::future;
use parking_lot::RwLock;
use std::sync::Arc;
@@ -153,10 +156,20 @@ impl<T: Config> OnlineClient<T> {
/// Fetch the metadata from substrate using the runtime API.
async fn fetch_metadata(rpc: &Rpc<T>) -> Result<Metadata, Error> {
let bytes = rpc.state_call("Metadata_metadata", None, None).await?;
let cursor = &mut &*bytes;
let _ = <Compact<u32>>::decode(cursor)?;
let meta: RuntimeMetadataPrefixed = Decode::decode(cursor)?;
Ok(meta.try_into()?)
let decoded: (Vec<String>, OpaqueMetadata) = Decode::decode(&mut &*bytes)?;
let bytes = decoded.1 .0;
let meta: RuntimeMetadataPrefixed = Decode::decode(&mut &bytes[..])?;
let metadata: Metadata = meta.try_into()?;
println!("Availb methods {:?}", decoded.0);
// let cursor = &mut &*bytes;
// let _ = <Compact<u32>>::decode(cursor)?;
// let meta: RuntimeMetadataPrefixed = Decode::decode(cursor)?;
Ok(metadata)
}
/// Create an object which can be used to keep the runtime up to date