From 94022056b146875ff3012b0cebd99f66a3b52579 Mon Sep 17 00:00:00 2001 From: eddnewgate Date: Sun, 11 Aug 2024 22:34:10 +0545 Subject: [PATCH] interface separation --- src/interface.cairo | 38 ++++++++++++++++++++++++++++++++ src/lib.cairo | 40 ++++------------------------------ tests/test_channel_alias.cairo | 2 +- tests/test_push_admin.cairo | 2 +- 4 files changed, 44 insertions(+), 38 deletions(-) create mode 100644 src/interface.cairo diff --git a/src/interface.cairo b/src/interface.cairo new file mode 100644 index 0000000..862abb2 --- /dev/null +++ b/src/interface.cairo @@ -0,0 +1,38 @@ +use starknet::ContractAddress; + +#[starknet::interface] +pub trait IPushComm { + // Push Admin + fn complete_migration(ref self: TContractState); + fn get_migration_status(self: @TContractState) -> bool; + fn set_push_core_address(ref self: TContractState, core_address: felt252); + fn get_push_core_address(self: @TContractState) -> felt252; + fn get_push_governance_address(self: @TContractState) -> felt252; + fn set_push_governance_address(ref self: TContractState, governance_address: felt252); + fn get_push_token_address(self: @TContractState) -> felt252; + fn set_push_token_address(ref self: TContractState, push_token_address: felt252); + // Channel + fn verify_channel_alias(ref self: TContractState, channel_address: felt252); + fn add_delegate(ref self: TContractState, delegate: ContractAddress); + fn remove_delegate(ref self: TContractState, delegate: ContractAddress); + fn send_notification( + ref self: TContractState, + channel: ContractAddress, + recipient: ContractAddress, + identity: ByteArray + ) -> bool; + fn change_user_channel_settings( + ref self: TContractState, + channel: ContractAddress, + notif_id: u256, + notif_settings: ByteArray + ); + // User + fn is_user_subscribed( + self: @TContractState, channel: ContractAddress, user: ContractAddress + ) -> bool; + fn subscribe(ref self: TContractState, channel: ContractAddress); + fn unsubscribe(ref self: TContractState, channel: ContractAddress); + fn batch_subscribe(ref self: TContractState, channels: Array); + fn batch_unsubscribe(ref self: TContractState, channels: Array); +} diff --git a/src/lib.cairo b/src/lib.cairo index 426059e..102693e 100644 --- a/src/lib.cairo +++ b/src/lib.cairo @@ -1,41 +1,8 @@ +pub mod interface; + use starknet::ContractAddress; +pub use interface::IPushComm; -#[starknet::interface] -pub trait IPushComm { - // Push Admin - fn complete_migration(ref self: TContractState); - fn get_migration_status(self: @TContractState) -> bool; - fn set_push_core_address(ref self: TContractState, core_address: felt252); - fn get_push_core_address(self: @TContractState) -> felt252; - fn get_push_governance_address(self: @TContractState) -> felt252; - fn set_push_governance_address(ref self: TContractState, governance_address: felt252); - fn get_push_token_address(self: @TContractState) -> felt252; - fn set_push_token_address(ref self: TContractState, push_token_address: felt252); - // Channel - fn verify_channel_alias(ref self: TContractState, channel_address: felt252); - fn add_delegate(ref self: TContractState, delegate: ContractAddress); - fn remove_delegate(ref self: TContractState, delegate: ContractAddress); - fn send_notification( - ref self: TContractState, - channel: ContractAddress, - recipient: ContractAddress, - identity: ByteArray - ) -> bool; - fn change_user_channel_settings( - ref self: TContractState, - channel: ContractAddress, - notif_id: u256, - notif_settings: ByteArray - ); - // User - fn is_user_subscribed( - self: @TContractState, channel: ContractAddress, user: ContractAddress - ) -> bool; - fn subscribe(ref self: TContractState, channel: ContractAddress); - fn unsubscribe(ref self: TContractState, channel: ContractAddress); - fn batch_subscribe(ref self: TContractState, channels: Array); - fn batch_unsubscribe(ref self: TContractState, channels: Array); -} #[starknet::contract] pub mod PushComm { @@ -50,6 +17,7 @@ pub mod PushComm { use core::starknet::storage::StoragePointerWriteAccess; use starknet::storage::{Map, StorageMapReadAccess, StorageMapWriteAccess}; use starknet::{ContractAddress, get_caller_address}; + use starknet::{get_execution_info}; use openzeppelin::access::ownable::OwnableComponent; component!(path: OwnableComponent, storage: ownable, event: OwnableEvent); diff --git a/tests/test_channel_alias.cairo b/tests/test_channel_alias.cairo index 4805568..ebdd46b 100644 --- a/tests/test_channel_alias.cairo +++ b/tests/test_channel_alias.cairo @@ -4,7 +4,7 @@ use snforge_std::{ declare, ContractClassTrait, cheat_caller_address, CheatSpan, spy_events, EventSpyAssertionsTrait, Event, EventSpyTrait }; -use push_comm::{PushComm, IPushCommDispatcher, IPushCommDispatcherTrait}; +use push_comm::{PushComm, interface::IPushCommDispatcher, interface::IPushCommDispatcherTrait}; use super::common::{USER_1, deploy_contract, CHAIN_NAME, CHAIN_ID}; #[test] diff --git a/tests/test_push_admin.cairo b/tests/test_push_admin.cairo index 5a8cecb..3501fe0 100644 --- a/tests/test_push_admin.cairo +++ b/tests/test_push_admin.cairo @@ -1,7 +1,7 @@ use starknet::ContractAddress; use snforge_std::{declare, ContractClassTrait, cheat_caller_address, CheatSpan, spy_events}; -use push_comm::{IPushCommDispatcher, IPushCommDispatcherTrait}; +use push_comm::interface::{IPushCommDispatcher, IPushCommDispatcherTrait}; use super::common::{PUSH_ADMIN, deploy_contract}; #[test]