difftreelog
fix property keys are optional in RPC
in: master
7 files changed
client/rpc/src/lib.rsdiffbeforeafterboth--- a/client/rpc/src/lib.rs
+++ b/client/rpc/src/lib.rs
@@ -76,7 +76,7 @@
fn collection_properties(
&self,
collection: CollectionId,
- keys: Vec<String>,
+ keys: Option<Vec<String>>,
at: Option<BlockHash>,
) -> Result<Vec<Property>>;
@@ -85,7 +85,7 @@
&self,
collection: CollectionId,
token_id: TokenId,
- properties: Vec<String>,
+ keys: Option<Vec<String>>,
at: Option<BlockHash>,
) -> Result<Vec<Property>>;
@@ -93,7 +93,7 @@
fn property_permissions(
&self,
collection: CollectionId,
- keys: Vec<String>,
+ keys: Option<Vec<String>>,
at: Option<BlockHash>,
) -> Result<Vec<PropertyKeyPermission>>;
@@ -102,7 +102,7 @@
&self,
collection: CollectionId,
token_id: TokenId,
- keys: Vec<String>,
+ keys: Option<Vec<String>>,
at: Option<BlockHash>,
) -> Result<TokenData<CrossAccountId>>;
@@ -277,7 +277,7 @@
collection: CollectionId,
#[map(|keys| string_keys_to_bytes_keys(keys))]
- keys: Vec<String>
+ keys: Option<Vec<String>>
) -> Vec<Property>);
pass_method!(token_properties(
@@ -285,14 +285,14 @@
token_id: TokenId,
#[map(|keys| string_keys_to_bytes_keys(keys))]
- properties: Vec<String>
+ keys: Option<Vec<String>>
) -> Vec<Property>);
pass_method!(property_permissions(
collection: CollectionId,
#[map(|keys| string_keys_to_bytes_keys(keys))]
- keys: Vec<String>
+ keys: Option<Vec<String>>
) -> Vec<PropertyKeyPermission>);
pass_method!(token_data(
@@ -300,7 +300,7 @@
token_id: TokenId,
#[map(|keys| string_keys_to_bytes_keys(keys))]
- keys: Vec<String>,
+ keys: Option<Vec<String>>,
) -> TokenData<CrossAccountId>);
pass_method!(total_supply(collection: CollectionId) -> u32);
@@ -318,6 +318,8 @@
pass_method!(effective_collection_limits(collection_id: CollectionId) -> Option<CollectionLimits>);
}
-fn string_keys_to_bytes_keys(keys: Vec<String>) -> Vec<Vec<u8>> {
- keys.into_iter().map(|key| key.into_bytes()).collect()
+fn string_keys_to_bytes_keys(keys: Option<Vec<String>>) -> Option<Vec<Vec<u8>>> {
+ keys.map(|keys| {
+ keys.into_iter().map(|key| key.into_bytes()).collect()
+ })
}
pallets/common/src/lib.rsdiffbeforeafterboth845845846 pub fn filter_collection_properties(846 pub fn filter_collection_properties(847 collection_id: CollectionId,847 collection_id: CollectionId,848 keys: Vec<PropertyKey>,848 keys: Option<Vec<PropertyKey>>,849 ) -> Result<Vec<Property>, DispatchError> {849 ) -> Result<Vec<Property>, DispatchError> {850 let properties = Self::collection_properties(collection_id);850 let properties = Self::collection_properties(collection_id);851851852 let properties = keys852 let properties = keys.map(|keys| {853 .into_iter()853 keys.into_iter()854 .filter_map(|key| {854 .filter_map(|key| {855 properties.get(&key).map(|value| Property {855 properties.get(&key).map(|value| Property {858 })858 })859 })859 })860 .collect();860 .collect()861 }).unwrap_or(862 properties.iter()863 .map(|(key, value)| Property {864 key: key.clone(),865 value: value.clone(),866 })867 .collect()868 );861869862 Ok(properties)870 Ok(properties)863 }871 }864872865 pub fn filter_property_permissions(873 pub fn filter_property_permissions(866 collection_id: CollectionId,874 collection_id: CollectionId,867 keys: Vec<PropertyKey>,875 keys: Option<Vec<PropertyKey>>,868 ) -> Result<Vec<PropertyKeyPermission>, DispatchError> {876 ) -> Result<Vec<PropertyKeyPermission>, DispatchError> {869 let permissions = Self::property_permissions(collection_id);877 let permissions = Self::property_permissions(collection_id);870878871 let key_permissions = keys879 let key_permissions = keys.map(|keys| {872 .into_iter()880 keys.into_iter()873 .filter_map(|key| {881 .filter_map(|key| {874 permissions882 permissions879 })887 })880 })888 })881 .collect();889 .collect()890 }).unwrap_or(891 permissions.iter()892 .map(|(key, permission)| PropertyKeyPermission {893 key: key.clone(),894 permission: permission.clone(),895 })896 .collect()897 );882898883 Ok(key_permissions)899 Ok(key_permissions)884 }900 }114811641149 fn token_owner(&self, token: TokenId) -> Option<T::CrossAccountId>;1165 fn token_owner(&self, token: TokenId) -> Option<T::CrossAccountId>;1150 fn const_metadata(&self, token: TokenId) -> Vec<u8>;1166 fn const_metadata(&self, token: TokenId) -> Vec<u8>;1151 fn token_properties(&self, token_id: TokenId, keys: Vec<PropertyKey>) -> Vec<Property>;1167 fn token_properties(&self, token_id: TokenId, keys: Option<Vec<PropertyKey>>) -> Vec<Property>;1152 /// Amount of unique collection tokens1168 /// Amount of unique collection tokens1153 fn total_supply(&self) -> u32;1169 fn total_supply(&self) -> u32;1154 /// Amount of different tokens account has (Applicable to nonfungible/refungible)1170 /// Amount of different tokens account has (Applicable to nonfungible/refungible)pallets/fungible/src/common.rsdiffbeforeafterboth--- a/pallets/fungible/src/common.rs
+++ b/pallets/fungible/src/common.rs
@@ -319,7 +319,7 @@
Vec::new()
}
- fn token_properties(&self, _token_id: TokenId, _keys: Vec<PropertyKey>) -> Vec<Property> {
+ fn token_properties(&self, _token_id: TokenId, _keys: Option<Vec<PropertyKey>>) -> Vec<Property> {
Vec::new()
}
pallets/nonfungible/src/common.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/common.rs
+++ b/pallets/nonfungible/src/common.rs
@@ -362,10 +362,11 @@
.into_inner()
}
- fn token_properties(&self, token_id: TokenId, keys: Vec<PropertyKey>) -> Vec<Property> {
+ fn token_properties(&self, token_id: TokenId, keys: Option<Vec<PropertyKey>>) -> Vec<Property> {
let properties = <Pallet<T>>::token_properties((self.id, token_id));
- keys.into_iter()
+ keys.map(|keys| {
+ keys.into_iter()
.filter_map(|key| {
properties.get(&key).map(|value| Property {
key,
@@ -373,6 +374,13 @@
})
})
.collect()
+ }).unwrap_or(
+ properties.iter().map(|(key, value)| Property {
+ key: key.clone(),
+ value: value.clone(),
+ })
+ .collect()
+ )
}
fn total_supply(&self) -> u32 {
pallets/refungible/src/common.rsdiffbeforeafterboth--- a/pallets/refungible/src/common.rs
+++ b/pallets/refungible/src/common.rs
@@ -340,7 +340,7 @@
.into_inner()
}
- fn token_properties(&self, _token_id: TokenId, _keys: Vec<PropertyKey>) -> Vec<Property> {
+ fn token_properties(&self, _token_id: TokenId, _keys: Option<Vec<PropertyKey>>) -> Vec<Property> {
Vec::new()
}
primitives/rpc/src/lib.rsdiffbeforeafterboth--- a/primitives/rpc/src/lib.rs
+++ b/primitives/rpc/src/lib.rs
@@ -43,20 +43,24 @@
fn topmost_token_owner(collection: CollectionId, token: TokenId) -> Result<Option<CrossAccountId>>;
fn const_metadata(collection: CollectionId, token: TokenId) -> Result<Vec<u8>>;
- fn collection_properties(collection: CollectionId, properties: Vec<Vec<u8>>) -> Result<Vec<Property>>;
+ fn collection_properties(collection: CollectionId, properties: Option<Vec<Vec<u8>>>) -> Result<Vec<Property>>;
fn token_properties(
collection: CollectionId,
token_id: TokenId,
- properties: Vec<Vec<u8>>
+ properties: Option<Vec<Vec<u8>>>
) -> Result<Vec<Property>>;
fn property_permissions(
collection: CollectionId,
- properties: Vec<Vec<u8>>
+ properties: Option<Vec<Vec<u8>>>
) -> Result<Vec<PropertyKeyPermission>>;
- fn token_data(collection: CollectionId, token_id: TokenId, keys: Vec<Vec<u8>>) -> Result<TokenData<CrossAccountId>>;
+ fn token_data(
+ collection: CollectionId,
+ token_id: TokenId,
+ keys: Option<Vec<Vec<u8>>>
+ ) -> Result<TokenData<CrossAccountId>>;
fn total_supply(collection: CollectionId) -> Result<u32>;
fn account_balance(collection: CollectionId, account: CrossAccountId) -> Result<u32>;
runtime/common/src/runtime_apis.rsdiffbeforeafterboth--- a/runtime/common/src/runtime_apis.rs
+++ b/runtime/common/src/runtime_apis.rs
@@ -35,9 +35,11 @@
fn collection_properties(
collection: CollectionId,
- keys: Vec<Vec<u8>>
+ keys: Option<Vec<Vec<u8>>>
) -> Result<Vec<Property>, DispatchError> {
- let keys = pallet_common::Pallet::<Runtime>::bytes_keys_to_property_keys(keys)?;
+ let keys = keys.map(
+ |keys| pallet_common::Pallet::<Runtime>::bytes_keys_to_property_keys(keys)
+ ).transpose()?;
pallet_common::Pallet::<Runtime>::filter_collection_properties(collection, keys)
}
@@ -45,17 +47,22 @@
fn token_properties(
collection: CollectionId,
token_id: TokenId,
- keys: Vec<Vec<u8>>
+ keys: Option<Vec<Vec<u8>>>
) -> Result<Vec<Property>, DispatchError> {
- let keys = pallet_common::Pallet::<Runtime>::bytes_keys_to_property_keys(keys)?;
+ let keys = keys.map(
+ |keys| pallet_common::Pallet::<Runtime>::bytes_keys_to_property_keys(keys)
+ ).transpose()?;
+
dispatch_unique_runtime!(collection.token_properties(token_id, keys))
}
fn property_permissions(
collection: CollectionId,
- keys: Vec<Vec<u8>>
+ keys: Option<Vec<Vec<u8>>>
) -> Result<Vec<PropertyKeyPermission>, DispatchError> {
- let keys = pallet_common::Pallet::<Runtime>::bytes_keys_to_property_keys(keys)?;
+ let keys = keys.map(
+ |keys| pallet_common::Pallet::<Runtime>::bytes_keys_to_property_keys(keys)
+ ).transpose()?;
pallet_common::Pallet::<Runtime>::filter_property_permissions(collection, keys)
}
@@ -63,7 +70,7 @@
fn token_data(
collection: CollectionId,
token_id: TokenId,
- keys: Vec<Vec<u8>>
+ keys: Option<Vec<Vec<u8>>>
) -> Result<TokenData<CrossAccountId>, DispatchError> {
let token_data = TokenData {
const_data: Self::const_metadata(collection, token_id)?,