Skip to content

Commit

Permalink
feat: add into impls to Hooks
Browse files Browse the repository at this point in the history
  • Loading branch information
JhChoy committed Aug 8, 2024
1 parent 5aade6c commit 6437e27
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 8 deletions.
2 changes: 1 addition & 1 deletion src/book_manager.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -359,7 +359,7 @@ pub mod BookManager {
unit_size: key.unit_size,
maker_policy: key.maker_policy,
taker_policy: key.taker_policy,
hooks: key.hooks.address
hooks: key.hooks.into()
}
);

Expand Down
4 changes: 2 additions & 2 deletions src/libraries/book_key.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ impl BookKeyStorePacking of StorePacking<BookKey, [felt252; 4]> {
let packed: u128 = value.unit_size.into()
+ TWO_POW_64 * value.maker_policy.encode().into()
+ TWO_POW_96 * value.taker_policy.encode().into();
[value.base.into(), value.quote.into(), value.hooks.address.into(), packed.into()]
[value.base.into(), value.quote.into(), value.hooks.into(), packed.into()]
}

fn unpack(value: [felt252; 4]) -> BookKey {
Expand All @@ -47,7 +47,7 @@ impl BookKeyStorePacking of StorePacking<BookKey, [felt252; 4]> {
BookKey {
base: (*v[0]).try_into().unwrap(),
quote: (*v[1]).try_into().unwrap(),
hooks: Hooks { address: (*v[2]).try_into().unwrap() },
hooks: (*v[2]).try_into().unwrap(),
unit_size: unit_size.try_into().unwrap(),
maker_policy,
taker_policy,
Expand Down
26 changes: 25 additions & 1 deletion src/libraries/hooks.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use starknet::ContractAddress;

#[derive(Copy, Drop, Hash, Serde, starknet::Store)]
pub struct Hooks {
pub address: ContractAddress,
address: ContractAddress,
}

pub struct Permissions {
Expand Down Expand Up @@ -31,6 +31,30 @@ pub mod Permission {
pub const AFTER_CLAIM: u256 = 0x200; // 1 << 9
}

impl HooksIntoContractAddress of Into<Hooks, ContractAddress> {
fn into(self: Hooks) -> ContractAddress {
self.address
}
}

impl ContractAddressIntoHooks of Into<ContractAddress, Hooks> {
fn into(self: ContractAddress) -> Hooks {
Hooks { address: self }
}
}

impl HooksIntoFelt252 of Into<Hooks, felt252> {
fn into(self: Hooks) -> felt252 {
self.address.into()
}
}

impl Felt252TryIntoHooks of TryInto<felt252, Hooks> {
fn try_into(self: felt252) -> Option<Hooks> {
Option::Some(Hooks { address: self.try_into()? })
}
}

#[generate_trait]
pub impl HooksImpl of HooksTrait {
fn has_permission(self: @Hooks, flag: u256) -> bool {
Expand Down
8 changes: 4 additions & 4 deletions src/libraries/hooks_caller.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use clober_cairo::interfaces::params::{MakeParams, TakeParams, CancelParams};

#[derive(Copy, Drop, starknet::Store)]
pub struct HooksCaller {
pub hooks_list: StorageArray<Hooks>,
hooks_list: StorageArray<Hooks>,
}

#[generate_trait]
Expand All @@ -18,12 +18,12 @@ pub impl HooksCallerImpl of HooksCallerTrait {
if length == 0 {
ZERO_ADDRESS()
} else {
self.hooks_list.read_at(length - 1).address
self.hooks_list.read_at(length - 1).into()
}
}

fn get_hook(self: @HooksCaller, i: u32) -> ContractAddress {
self.hooks_list.read_at(i).address
self.hooks_list.read_at(i).into()
}

fn call_hook(
Expand All @@ -32,7 +32,7 @@ pub impl HooksCallerImpl of HooksCallerTrait {
// @dev Set current hook here
self.hooks_list.append(*hooks);

let mut res = syscalls::call_contract_syscall(*hooks.address, expected_selector, hook_data)
let mut res = syscalls::call_contract_syscall((*hooks).into(), expected_selector, hook_data)
.unwrap_syscall();

let selector = Serde::<felt252>::deserialize(ref res).unwrap();
Expand Down

0 comments on commit 6437e27

Please sign in to comment.