Skip to content

Commit

Permalink
Merge pull request #86 from multiversx/launchpad-v2-add-tickets-new-p…
Browse files Browse the repository at this point in the history
…arameters

launchpad v2 addTickets new parameter types
  • Loading branch information
psorinionut authored Nov 18, 2024
2 parents 374929e + 18a1d54 commit b7064ef
Show file tree
Hide file tree
Showing 4 changed files with 97 additions and 86 deletions.
26 changes: 19 additions & 7 deletions launchpad-guaranteed-tickets-v2/src/guaranteed_tickets_init.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ impl<M: ManagedTypeApi> UserTicketsStatus<M> {
}

pub struct AddTicketsResult {
pub total_users_count: usize,
pub total_tickets_added: usize,
pub total_guaranteed_tickets_added: usize,
}
Expand All @@ -39,7 +40,7 @@ pub trait GuaranteedTicketsInitModule:
fn add_tickets_with_guaranteed_winners(
&self,
address_number_pairs: MultiValueEncoded<
MultiValue3<ManagedAddress, usize, ManagedVec<GuaranteedTicketInfo>>,
MultiValue3<ManagedAddress, usize, MultiValueEncodedCounted<MultiValue2<usize, usize>>>,
>,
) -> AddTicketsResult {
self.require_add_tickets_period();
Expand All @@ -48,13 +49,14 @@ pub trait GuaranteedTicketsInitModule:
let mut total_winning_tickets = self.nr_winning_tickets().get();
let mut total_guaranteed_tickets = self.total_guaranteed_tickets().get();

let mut total_users_count = 0;
let mut total_tickets_added = 0;
let mut total_guaranteed_tickets_added = 0;

for multi_arg in address_number_pairs {
let (buyer, total_tickets_allowance, guaranteed_ticket_infos) = multi_arg.into_tuple();
for multi_arg in address_number_pairs.into_iter() {
let (buyer, total_tickets_allowance, guaranteed_ticket_raw) = multi_arg.into_tuple();
require!(
guaranteed_ticket_infos.len() <= MAX_GUARANTEED_TICKETS_ENTRIES,
guaranteed_ticket_raw.len() <= MAX_GUARANTEED_TICKETS_ENTRIES,
"Number of guaranteed tickets entries exceeds maximum allowed"
);

Expand All @@ -64,12 +66,20 @@ pub trait GuaranteedTicketsInitModule:

let mut user_guaranteed_tickets = 0;

for info in guaranteed_ticket_infos.iter() {
let mut guaranteed_ticket_infos = ManagedVec::new();
for info in guaranteed_ticket_raw.into_iter() {
let (guaranteed_tickets, min_confirmed_tickets) = info.into_tuple();
require!(
info.guaranteed_tickets <= info.min_confirmed_tickets,
guaranteed_tickets <= min_confirmed_tickets,
"Invalid guaranteed ticket min confirmed tickets"
);
user_guaranteed_tickets += info.guaranteed_tickets;
user_guaranteed_tickets += guaranteed_tickets;

let guaranteed_ticket_info = GuaranteedTicketInfo {
guaranteed_tickets,
min_confirmed_tickets,
};
guaranteed_ticket_infos.push(guaranteed_ticket_info);
}

if user_guaranteed_tickets > 0 {
Expand All @@ -85,6 +95,7 @@ pub trait GuaranteedTicketsInitModule:
}
total_tickets_added += total_tickets_allowance;

total_users_count += 1;
self.user_ticket_status(&buyer).set(user_ticket_status);
}

Expand All @@ -93,6 +104,7 @@ pub trait GuaranteedTicketsInitModule:
self.nr_winning_tickets().set(total_winning_tickets);

AddTicketsResult {
total_users_count,
total_tickets_added,
total_guaranteed_tickets_added,
}
Expand Down
5 changes: 2 additions & 3 deletions launchpad-guaranteed-tickets-v2/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -72,14 +72,13 @@ pub trait LaunchpadGuaranteedTickets:
fn add_tickets_endpoint(
&self,
address_number_pairs: MultiValueEncoded<
MultiValue3<ManagedAddress, usize, ManagedVec<GuaranteedTicketInfo>>,
MultiValue3<ManagedAddress, usize, MultiValueEncodedCounted<MultiValue2<usize, usize>>>,
>,
) {
let total_users_count = address_number_pairs.len();
let add_tickets_result = self.add_tickets_with_guaranteed_winners(address_number_pairs);

self.emit_add_tickets_event(
total_users_count,
add_tickets_result.total_users_count,
add_tickets_result.total_tickets_added,
add_tickets_result.total_guaranteed_tickets_added,
);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
use multiversx_sc::types::{
Address, EgldOrEsdtTokenIdentifier, ManagedVec, MultiValueEncoded, OperationCompletionStatus,
Address, EgldOrEsdtTokenIdentifier, MultiValueEncoded, MultiValueEncodedCounted,
OperationCompletionStatus,
};

use launchpad_common::{
Expand All @@ -9,9 +10,7 @@ use launchpad_common::{
user_interactions::UserInteractionsModule,
winner_selection::WinnerSelectionModule,
};
use launchpad_guaranteed_tickets_v2::{
guaranteed_tickets_init::GuaranteedTicketInfo, token_release::TokenReleaseModule,
};
use launchpad_guaranteed_tickets_v2::token_release::TokenReleaseModule;
use launchpad_guaranteed_tickets_v2::{
guaranteed_tickets_init::GuaranteedTicketsInitModule, LaunchpadGuaranteedTickets,
};
Expand Down Expand Up @@ -97,16 +96,29 @@ where
b_mock
.execute_tx(&owner_address, &lp_wrapper, &rust_zero, |sc| {
let mut args = MultiValueEncoded::new();
args.push((managed_address!(&participants[0]), 1, ManagedVec::new()).into());
args.push((managed_address!(&participants[1]), 2, ManagedVec::new()).into());
args.push(
(
managed_address!(&participants[0]),
1,
MultiValueEncodedCounted::new(),
)
.into(),
);
args.push(
(
managed_address!(&participants[1]),
2,
MultiValueEncodedCounted::new(),
)
.into(),
);
let mut guaranteed_tickets_info = MultiValueEncodedCounted::new();
guaranteed_tickets_info.push((1, 3).into());
args.push(
(
managed_address!(&participants[2]),
MAX_TIER_TICKETS,
ManagedVec::from_single_item(GuaranteedTicketInfo {
guaranteed_tickets: 1,
min_confirmed_tickets: 3,
}),
guaranteed_tickets_info,
)
.into(),
);
Expand Down
Loading

0 comments on commit b7064ef

Please sign in to comment.