mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-07 21:18:01 +00:00
Specialize metadata errors (#633)
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
This commit is contained in:
@@ -47,7 +47,11 @@ impl<T: Config, Client: OfflineClientT<T>> ConstantsClient<T, Client> {
|
||||
.metadata()
|
||||
.constant_hash(address.pallet_name(), address.constant_name())?;
|
||||
if actual_hash != expected_hash {
|
||||
return Err(MetadataError::IncompatibleMetadata.into())
|
||||
return Err(MetadataError::IncompatibleConstantMetadata(
|
||||
address.pallet_name().into(),
|
||||
address.constant_name().into(),
|
||||
)
|
||||
.into())
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
|
||||
@@ -60,9 +60,15 @@ pub enum MetadataError {
|
||||
/// Type is not in metadata.
|
||||
#[error("Type {0} missing from type registry")]
|
||||
TypeNotFound(u32),
|
||||
/// Runtime pallet metadata is incompatible with the static one.
|
||||
#[error("Pallet {0} has incompatible metadata")]
|
||||
IncompatiblePalletMetadata(&'static str),
|
||||
/// Runtime constant metadata is incompatible with the static one.
|
||||
#[error("Pallet {0} Constant {0} has incompatible metadata")]
|
||||
IncompatibleConstantMetadata(String, String),
|
||||
/// Runtime call metadata is incompatible with the static one.
|
||||
#[error("Pallet {0} Call {0} has incompatible metadata")]
|
||||
IncompatibleCallMetadata(String, String),
|
||||
/// Runtime storage metadata is incompatible with the static one.
|
||||
#[error("Pallet {0} Storage {0} has incompatible metadata")]
|
||||
IncompatibleStorageMetadata(String, String),
|
||||
/// Runtime metadata is not fully compatible with the static one.
|
||||
#[error("Node metadata is not fully compatible")]
|
||||
IncompatibleMetadata,
|
||||
|
||||
@@ -386,7 +386,13 @@ fn validate_storage(
|
||||
};
|
||||
match expected_hash == hash {
|
||||
true => Ok(()),
|
||||
false => Err(crate::error::MetadataError::IncompatibleMetadata.into()),
|
||||
false => {
|
||||
Err(crate::error::MetadataError::IncompatibleStorageMetadata(
|
||||
pallet_name.into(),
|
||||
storage_name.into(),
|
||||
)
|
||||
.into())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -62,7 +62,11 @@ impl<T: Config, C: OfflineClientT<T>> TxClient<T, C> {
|
||||
let expected_hash =
|
||||
metadata.call_hash(call.pallet_name(), call.call_name())?;
|
||||
if actual_hash != expected_hash {
|
||||
return Err(crate::metadata::MetadataError::IncompatibleMetadata.into())
|
||||
return Err(crate::metadata::MetadataError::IncompatibleCallMetadata(
|
||||
call.pallet_name().into(),
|
||||
call.call_name().into(),
|
||||
)
|
||||
.into())
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
|
||||
Reference in New Issue
Block a user