From c6f90e24dfc0920b4a288b128ba98da5a7522c4c Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Fri, 20 Jan 2023 18:34:43 +0000 Subject: [PATCH] XXX: Adapt to new interface for metadata Signed-off-by: Alexandru Vasile --- subxt/src/client/online_client.rs | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/subxt/src/client/online_client.rs b/subxt/src/client/online_client.rs index 6babec8971..f1a934d1b2 100644 --- a/subxt/src/client/online_client.rs +++ b/subxt/src/client/online_client.rs @@ -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 OnlineClient { /// Fetch the metadata from substrate using the runtime API. async fn fetch_metadata(rpc: &Rpc) -> Result { let bytes = rpc.state_call("Metadata_metadata", None, None).await?; - let cursor = &mut &*bytes; - let _ = >::decode(cursor)?; - let meta: RuntimeMetadataPrefixed = Decode::decode(cursor)?; - Ok(meta.try_into()?) + + let decoded: (Vec, 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 _ = >::decode(cursor)?; + // let meta: RuntimeMetadataPrefixed = Decode::decode(cursor)?; + Ok(metadata) } /// Create an object which can be used to keep the runtime up to date