git.delta.rocks / unique-network / refs/commits / f42d2466b923

difftreelog

feat:make rmrk_property! use enum values

Daniel Shiposha2022-05-23parent: #7e71176.patch.diff
in: master

2 files changed

modifiedpallets/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)?;
modifiedpallets/proxy-rmrk-core/src/property.rsdiffbeforeafterboth
before · pallets/proxy-rmrk-core/src/property.rs
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: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}