Skip to content
Open
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
18 changes: 15 additions & 3 deletions campaign/src/get_all_milestones.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
use soroban_sdk::{panic_with_error, Env, Vec};

use crate::storage::get_campaign;
use crate::storage::{get_campaign, get_milestone};
use crate::types::Error;
use crate::views::{self, MilestoneView};
use crate::views::{find_next_pending_index, MilestoneView};

/// Issue #200 – Returns enriched views for ALL milestones in the campaign.
///
Expand All @@ -16,9 +16,21 @@ pub fn get_all_milestones_view(env: &Env) -> Vec<MilestoneView> {
let campaign =
get_campaign(env).unwrap_or_else(|| panic_with_error!(env, Error::NotInitialized));

let next_pending = find_next_pending_index(env);

let mut result: Vec<MilestoneView> = Vec::new(env);
for i in 0..campaign.milestone_count {
result.push_back(views::get_milestone_by_index(env, i));
let data = get_milestone(env, i)
.unwrap_or_else(|| panic_with_error!(env, Error::MilestoneNotFound));
let pending_release = data.pending_release();
let is_fully_released = data.is_fully_released();
let is_next_pending = next_pending == i;
result.push_back(MilestoneView {
data,
pending_release,
is_fully_released,
is_next_pending,
});
}
result
}
Expand Down