difftreelog
feat:make rmrk_property! use enum values
in: master
2 files changed
pallets/proxy-rmrk-core/src/lib.rsdiffbeforeafterboth--- a/pallets/proxy-rmrk-core/src/lib.rs
+++ b/pallets/proxy-rmrk-core/src/lib.rs
@@ -238,7 +238,7 @@
fn get_collection_type(collection_id: CollectionId) -> Result<CollectionType, DispatchError> {
let collection_type: CollectionType = <PalletCommon<T>>::collection_properties(collection_id)
- .get(&rmrk_property!(Config=T, CollectionType)?)
+ .get(&rmrk_property!(Config=T, key: CollectionType)?)
.ok_or(<Error<T>>::CollectionUnknown)?
.try_into()
.map_err(<Error<T>>::from)?;
pallets/proxy-rmrk-core/src/property.rsdiffbeforeafterboth1use super::*;2use core::convert::AsRef;34pub enum RmrkProperty {5 Metadata,6 CollectionType,7 Recipient,8 Royalty,9 Equipped,10 Pending,11 ResourceCollection,12 ResourcePriorities,13 PendingRemoval,14 Parts,15 Base,16 Src,17 Slot,18 License,19 Thumb,20 EquippedNft,21 BaseType,22 // // RmrkPartId(/* Id type? */)23 EquippableList,24 ZIndex,25 ThemeName,26 ThemeProperty(RmrkString),27 ThemeInherit,28}2930impl RmrkProperty {31 pub fn to_key<T: Config>(self) -> Result<PropertyKey, Error<T>> {32 fn get_bytes<T: AsRef<[u8]>>(container: &T) -> &[u8] {33 container.as_ref()34 }3536 macro_rules! key {37 ($($component:expr),+) => {38 PropertyKey::try_from([$(key!(@ &$component)),+].concat())39 .map_err(|_| <Error<T>>::RmrkPropertyKeyIsTooLong)40 };4142 (@ $key:expr) => {43 get_bytes($key)44 };45 }4647 match self {48 Self::Metadata => key!("metadata"),49 Self::CollectionType => key!("collection-type"),50 Self::Recipient => key!("recipient"),51 Self::Royalty => key!("royalty"),52 Self::Equipped => key!("equipped"),53 Self::Pending => key!("pending"),54 Self::ResourceCollection => key!("resource-collection"),55 Self::ResourcePriorities => key!("resource-priorities"),56 Self::PendingRemoval => key!("pending-removal"),57 Self::Parts => key!("parts"),58 Self::Base => key!("base"),59 Self::Src => key!("src"),60 Self::Slot => key!("slot"),61 Self::License => key!("license"),62 Self::Thumb => key!("thumb"),63 Self::EquippedNft => key!("equipped-nft"),64 Self::BaseType => key!("base-type"),65 // RmrkResourceId(/* Id type? */)66 // RmrkPartId(/* Id type? */)67 Self::EquippableList => key!("equippable-list"),68 Self::ZIndex => key!("z-index"),69 Self::ThemeName => key!("theme-name"),70 Self::ThemeProperty(name) => key!("theme-property-", name),71 Self::ThemeInherit => key!("theme-inherit"),72 }73 }74}7576#[macro_export]77macro_rules! rmrk_property {78 (Config=$cfg:ty, $key:ident $(($key_ext:expr))?: $value:expr) => {{79 let key = rmrk_property!(@$cfg, $key $(($key_ext))?)?;8081 let value = $value.into_property_value()82 .map_err(<$crate::Error<$cfg>>::from)?;8384 Ok::<_, $crate::Error<$cfg>>(Property {85 key,86 value,87 })88 }};8990 (@$cfg:ty, $key:ident $(($key_ext:expr))?) => {91 $crate::RmrkProperty::$key $(($key_ext))?.to_key::<$cfg>()92 };9394 (Config=$cfg:ty, $key:ident $(($key_ext:expr))?) => {95 PropertyScope::Rmrk.apply(rmrk_property!(@$cfg, $key $(($key_ext))?)?)96 .map_err(|_| <$crate::Error<$cfg>>::RmrkPropertyKeyIsTooLong)97 };98}1use super::*;2use core::convert::AsRef;34pub enum RmrkProperty {5 Metadata,6 CollectionType,7 Recipient,8 Royalty,9 Equipped,10 Pending,11 ResourceCollection,12 ResourcePriorities,13 PendingRemoval,14 Parts,15 Base,16 Src,17 Slot,18 License,19 Thumb,20 EquippedNft,21 BaseType,22 // // RmrkPartId(/* Id type? */)23 EquippableList,24 ZIndex,25 ThemeName,26 ThemeProperty(RmrkString),27 ThemeInherit,28}2930impl RmrkProperty {31 pub fn to_key<T: Config>(self) -> Result<PropertyKey, Error<T>> {32 fn get_bytes<T: AsRef<[u8]>>(container: &T) -> &[u8] {33 container.as_ref()34 }3536 macro_rules! key {37 ($($component:expr),+) => {38 PropertyKey::try_from([$(key!(@ &$component)),+].concat())39 .map_err(|_| <Error<T>>::RmrkPropertyKeyIsTooLong)40 };4142 (@ $key:expr) => {43 get_bytes($key)44 };45 }4647 match self {48 Self::Metadata => key!("metadata"),49 Self::CollectionType => key!("collection-type"),50 Self::Recipient => key!("recipient"),51 Self::Royalty => key!("royalty"),52 Self::Equipped => key!("equipped"),53 Self::Pending => key!("pending"),54 Self::ResourceCollection => key!("resource-collection"),55 Self::ResourcePriorities => key!("resource-priorities"),56 Self::PendingRemoval => key!("pending-removal"),57 Self::Parts => key!("parts"),58 Self::Base => key!("base"),59 Self::Src => key!("src"),60 Self::Slot => key!("slot"),61 Self::License => key!("license"),62 Self::Thumb => key!("thumb"),63 Self::EquippedNft => key!("equipped-nft"),64 Self::BaseType => key!("base-type"),65 // RmrkResourceId(/* Id type? */)66 // RmrkPartId(/* Id type? */)67 Self::EquippableList => key!("equippable-list"),68 Self::ZIndex => key!("z-index"),69 Self::ThemeName => key!("theme-name"),70 Self::ThemeProperty(name) => key!("theme-property-", name),71 Self::ThemeInherit => key!("theme-inherit"),72 }73 }74}7576#[macro_export]77macro_rules! rmrk_property {78 (Config=$cfg:ty, key: $key:ident $(($key_ext:expr))?) => {79 rmrk_property!(Config=$cfg, $crate::RmrkProperty::$key $(($key_ext))?)80 };8182 (Config=$cfg:ty, $key:ident $(($key_ext:expr))?: $value:expr) => {{83 let key = rmrk_property!(@$cfg, $crate::RmrkProperty::$key $(($key_ext))?)?;8485 let value = $value.into_property_value()86 .map_err(<$crate::Error<$cfg>>::from)?;8788 Ok::<_, $crate::Error<$cfg>>(Property {89 key,90 value,91 })92 }};9394 (@$cfg:ty, $key_enum:expr) => {95 $key_enum.to_key::<$cfg>()96 };9798 (Config=$cfg:ty, $key_enum:expr) => {99 PropertyScope::Rmrk.apply(rmrk_property!(@$cfg, $key_enum)?)100 .map_err(|_| <$crate::Error<$cfg>>::RmrkPropertyKeyIsTooLong)101 };102}