From 9641e15ed7f8aca4dc66953e5979c05f54be0857 Mon Sep 17 00:00:00 2001 From: MSghais Date: Tue, 18 Jun 2024 15:38:21 +0200 Subject: [PATCH] event escrow for deposit claim and cancel --- onchain/src/social/deposit.cairo | 42 ++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/onchain/src/social/deposit.cairo b/onchain/src/social/deposit.cairo index 0a6488ad..d43ee357 100644 --- a/onchain/src/social/deposit.cairo +++ b/onchain/src/social/deposit.cairo @@ -40,6 +40,33 @@ pub trait IDepositEscrow { fn claim(ref self: TContractState, request: SocialRequest); } +#[derive(Drop, starknet::Event)] +struct ClaimEvent { + #[key] + sender: ContractAddress, + amount: u256, + token_address: ContractAddress, + recipient: NostrPublicKey, +} + +#[derive(Drop, starknet::Event)] +struct DepositEvent { + #[key] + sender: ContractAddress, + amount: u256, + token_address: ContractAddress, + recipient: NostrPublicKey, +} + +#[derive(Drop, starknet::Event)] +struct CancelEvent { + #[key] + sender: ContractAddress, + amount: u256, + token_address: ContractAddress, + recipient: NostrPublicKey, +} + #[starknet::contract] pub mod DepositEscrow { @@ -55,7 +82,8 @@ pub mod DepositEscrow { }; use super::{ - Deposit, DepositId, DepositResult, IDepositEscrow, NostrPublicKey, DepositIdEncodeImpl + Deposit, DepositId, DepositResult, IDepositEscrow, NostrPublicKey, DepositIdEncodeImpl, + CancelEvent, DepositEvent, ClaimEvent }; impl DepositDefault of Default { @@ -78,6 +106,14 @@ pub mod DepositEscrow { nostr_to_sn: LegacyMap } + #[event] + #[derive(Drop, starknet::Event)] + enum Event { + ClaimEvent: ClaimEvent, + DepositEvent: DepositEvent, + CancelEvent: CancelEvent, + } + #[constructor] fn constructor(ref self: ContractState) { self.next_deposit_id.write(1); @@ -122,6 +158,7 @@ pub mod DepositEscrow { ttl: get_block_timestamp() + timelock } ); + self.emit(DepositEvent { sender:get_caller_address(), recipient:nostr_recipient, amount:amount, token_address:token_address }); DepositResult::Deposit(deposit_id) } @@ -137,7 +174,7 @@ pub mod DepositEscrow { let erc20 = IERC20Dispatcher { contract_address: deposit.token_address }; erc20.transfer(get_caller_address(), deposit.amount); - + self.emit(CancelEvent { sender:get_caller_address(), recipient:deposit.recipient, amount:deposit.amount, token_address:deposit.token_address }); self.deposits.write(deposit_id, Default::default()); } @@ -152,6 +189,7 @@ pub mod DepositEscrow { erc20.transfer(get_caller_address(), deposit.amount); self.nostr_to_sn.write(request.public_key, get_caller_address()); + self.emit(ClaimEvent { sender:get_caller_address(), recipient:request.public_key, amount:deposit.amount, token_address:deposit.token_address }); self.deposits.write(deposit_id, Default::default()); } }