diff --git a/src/base/types.cairo b/src/base/types.cairo index fba9bb7..6708c17 100644 --- a/src/base/types.cairo +++ b/src/base/types.cairo @@ -132,7 +132,7 @@ pub struct MirrorParams { // * @param pointed_profile_address The profile address of the publication author that is quoted. // * @param pointed_pub_id The publication ID that is quoted. // */ -#[derive(Drop, Serde, starknet::Store)] +#[derive(Drop, Serde, starknet::Store, Clone)] pub struct QuoteParams { profile_address: ContractAddress, content_URI: ByteArray, diff --git a/src/publication/publication.cairo b/src/publication/publication.cairo index cb8e2b9..12efeeb 100644 --- a/src/publication/publication.cairo +++ b/src/publication/publication.cairo @@ -79,6 +79,7 @@ pub mod Publications { pub enum Event { Post: Post, MirrorCreated: MirrorCreated, + QuoteCreated: QuoteCreated, } // ************************************************************************* @@ -101,6 +102,14 @@ pub mod Publications { pub block_timestamp: u64, } + #[derive(Drop, starknet::Event)] + pub struct QuoteCreated { + pub quoteParams: QuoteParams, + pub publication_id: u256, + pub transaction_executor: ContractAddress, + pub block_timestamp: u64, + } + // ************************************************************************* // EXTERNAL FUNCTIONS @@ -217,7 +226,9 @@ pub mod Publications { quoteParams: QuoteParams, profile_contract_address: ContractAddress ) -> u256 { - let pubIdAssigned = self + let ref_quoteParams = quoteParams.clone(); + + let pub_id_assigned = self ._createReferencePublication( quoteParams.profile_address, quoteParams.content_URI, @@ -226,7 +237,17 @@ pub mod Publications { PublicationType::Quote, profile_contract_address ); - pubIdAssigned + + self + .emit( + QuoteCreated { + quoteParams: ref_quoteParams, + publication_id: pub_id_assigned, + transaction_executor: quoteParams.profile_address, + block_timestamp: get_block_timestamp(), + } + ); + pub_id_assigned } // ************************************************************************* // GETTERS