use crate::client::{ProjectFleetView, fleet_state_glyph};
use super::{html_escape, short_id};
pub fn format_fleet_by_project(fleet: &[ProjectFleetView]) -> String {
if fleet.is_empty() {
return "No registered projects.".to_string();
}
let mut text = String::from("<b>fleet by project</b>");
for pf in fleet {
text.push_str(&format!(
"\n\n<b>{}</b> — <code>{}</code>",
html_escape(&pf.project_name),
html_escape(&pf.repo_url),
));
if pf.sessions.is_empty() {
text.push_str("\n —");
} else {
for s in &pf.sessions {
let dot = fleet_state_glyph(&s.state);
let flag = if s.pending_decision.is_some() {
" ⚠️"
} else {
""
};
text.push_str(&format!(
"\n {dot} <code>{}</code> {} [{}]{flag}",
short_id(&s.id),
html_escape(&s.name),
html_escape(&s.state),
));
}
}
}
text
}