From 9dae85bf1dc7c42ad1c65d045016774ab1af8be1 Mon Sep 17 00:00:00 2001 From: Omar Abdulla Date: Mon, 27 Jan 2025 09:22:32 +0300 Subject: [PATCH] Expose new access rule functions in Uniffi --- .../src/common/access_rules.rs | 16 ++++++++++++++++ .../src/internal_prelude.rs | 3 +++ 2 files changed, 19 insertions(+) diff --git a/crates/radix-engine-toolkit-uniffi/src/common/access_rules.rs b/crates/radix-engine-toolkit-uniffi/src/common/access_rules.rs index 98d0fe1c..27722815 100644 --- a/crates/radix-engine-toolkit-uniffi/src/common/access_rules.rs +++ b/crates/radix-engine-toolkit-uniffi/src/common/access_rules.rs @@ -24,6 +24,14 @@ pub struct AccessRule(pub NativeAccessRule); #[uniffi::export] impl AccessRule { + #[uniffi::constructor] + pub fn from_scrypto_sbor_payloda(payload: Vec) -> Result> { + native_scrypto_decode(&payload) + .map_err(RadixEngineToolkitError::from) + .map(Self) + .map(Arc::new) + } + #[uniffi::constructor] pub fn require( resource_or_non_fungible: ResourceOrNonFungible, @@ -158,6 +166,14 @@ impl AccessRule { }; Arc::new(AccessRule(access_rule)) } + + pub fn extract_entities(&self, network_id: u8) -> Vec { + let extraced_entities = core_extract_entities(&self.0); + extraced_entities + .into_iter() + .map(|item| ResourceOrNonFungible::from_native(item, network_id)) + .collect() + } } #[derive(Clone, Debug, Enum, Hash, PartialEq, Eq)] diff --git a/crates/radix-engine-toolkit-uniffi/src/internal_prelude.rs b/crates/radix-engine-toolkit-uniffi/src/internal_prelude.rs index 94c46043..af2212f3 100644 --- a/crates/radix-engine-toolkit-uniffi/src/internal_prelude.rs +++ b/crates/radix-engine-toolkit-uniffi/src/internal_prelude.rs @@ -58,6 +58,9 @@ mod core { pub use radix_engine_toolkit::functions::utils::{ decode_transaction_id as core_decode_transaction_id }; + pub use radix_engine_toolkit::functions::access_rule::{ + extract_entities as core_extract_entities + }; pub use radix_engine_toolkit::functions::transaction_v1::manifest::{ to_payload_bytes as core_transaction_v1_manifest_to_payload_bytes, from_payload_bytes as core_transaction_v1_manifest_from_payload_bytes,