Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 98 additions & 0 deletions dongle-smartcontract/src/events.rs
Original file line number Diff line number Diff line change
Expand Up @@ -954,6 +954,35 @@ pub struct ClaimRequestRejectedEvent {
pub timestamp: u64,
}

#[contracttype]
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct ContractClaimSubmittedEvent {
pub project_id: u64,
pub contract_address: String,
pub claimant: Address,
pub proof_cid: String,
pub timestamp: u64,
}

#[contracttype]
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct ContractClaimApprovedEvent {
pub project_id: u64,
pub contract_address: String,
pub admin: Address,
pub timestamp: u64,
}

#[contracttype]
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct ContractClaimRejectedEvent {
pub project_id: u64,
pub contract_address: String,
pub admin: Address,
pub timestamp: u64,
}


pub fn publish_project_claimable_set_event(
env: &Env,
project_id: u64,
Expand Down Expand Up @@ -1051,6 +1080,75 @@ pub fn publish_claim_request_rejected_event(
);
}

pub fn publish_contract_claim_submitted_event(
env: &Env,
project_id: u64,
contract_address: String,
claimant: Address,
proof_cid: String,
) {
let event_data = ContractClaimSubmittedEvent {
project_id,
contract_address: contract_address.clone(),
claimant: claimant.clone(),
proof_cid,
timestamp: env.ledger().timestamp(),
};
env.events().publish(
(
symbol_short!("CCLAIM"),
symbol_short!("SUBMITTED"),
project_id,
),
event_data,
);
}

pub fn publish_contract_claim_approved_event(
env: &Env,
project_id: u64,
contract_address: String,
admin: Address,
) {
let event_data = ContractClaimApprovedEvent {
project_id,
contract_address: contract_address.clone(),
admin,
timestamp: env.ledger().timestamp(),
};
env.events().publish(
(
symbol_short!("CCLAIM"),
symbol_short!("APPROVED"),
project_id,
),
event_data,
);
}

pub fn publish_contract_claim_rejected_event(
env: &Env,
project_id: u64,
contract_address: String,
admin: Address,
) {
let event_data = ContractClaimRejectedEvent {
project_id,
contract_address: contract_address.clone(),
admin,
timestamp: env.ledger().timestamp(),
};
env.events().publish(
(
symbol_short!("CCLAIM"),
symbol_short!("REJECTED"),
project_id,
),
event_data,
);
}


pub fn publish_min_project_age_set_event(
env: &Env,
admin: Address,
Expand Down
43 changes: 42 additions & 1 deletion dongle-smartcontract/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ use crate::types::{
ProjectDependency, ProjectRegistrationParams, ProjectReport, ProjectStats, ProjectUpdateParams,
ProposalPayload, Review, ReviewSortMode, ReviewTombstone, SecurityContactStatus,
TimelockAction, VerificationRecord,
VerificationStatus,
VerificationStatus, ContractClaimRequest, ProjectSortMode,
};
use crate::verification_registry::VerificationRegistry;
use soroban_sdk::{contract, contractimpl, Address, Env, String, Vec};
Expand Down Expand Up @@ -257,6 +257,47 @@ impl DongleContract {
ProjectRegistry::list_projects_by_category(&env, category, start_id, limit)
}

pub fn list_projects_sorted(
env: Env,
sort_mode: ProjectSortMode,
start_id: u64,
limit: u32,
) -> Vec<Project> {
ProjectRegistry::list_projects_sorted(&env, sort_mode, start_id, limit)
}

pub fn claim_contract_address(
env: Env,
project_id: u64,
caller: Address,
contract_address: String,
proof_cid: String,
) -> Result<ContractClaimRequest, ContractError> {
ProjectRegistry::claim_contract_address(&env, project_id, caller, contract_address, proof_cid)
}

pub fn approve_contract_claim(
env: Env,
project_id: u64,
contract_address: String,
admin: Address,
) -> Result<ContractClaimRequest, ContractError> {
ProjectRegistry::approve_contract_claim(&env, project_id, contract_address, admin)
}

pub fn reject_contract_claim(
env: Env,
project_id: u64,
contract_address: String,
admin: Address,
) -> Result<ContractClaimRequest, ContractError> {
ProjectRegistry::reject_contract_claim(&env, project_id, contract_address, admin)
}

pub fn get_verified_contracts(env: Env, project_id: u64) -> Vec<String> {
ProjectRegistry::get_verified_contracts(&env, project_id)
}

pub fn archive_project(
env: Env,
project_id: u64,
Expand Down
Loading