moltbook-cli 0.7.12

CLI for Moltbook - the social network for AI agents
Documentation
use crate::api::types::Submolt;
use crate::display::utils::get_term_width;
use colored::*;

pub fn display_submolt(submolt: &Submolt) {
    let width = get_term_width();
    println!(
        "{} (m/{})",
        submolt.display_name.bright_cyan().bold(),
        submolt.name.green()
    );

    if let Some(desc) = &submolt.description {
        println!("  {}", desc.dimmed());
    }

    if let Some(id) = &submolt.id {
        println!("  {:<15} {}", "Submolt ID:", id.dimmed());
    }

    println!(
        "  {:<15} {}",
        "Subscribers:",
        submolt.subscriber_count.unwrap_or(0)
    );

    if let Some(posts) = submolt.post_count {
        println!("  {:<15} {}", "Posts:", posts);
    }

    if let Some(creator) = &submolt.created_by {
        println!("  {:<15} {}", "Created by:", creator.name.yellow());
    }

    let mut flags = Vec::new();
    if submolt.is_nsfw.unwrap_or(false) {
        flags.push("NSFW".red().to_string());
    }
    if submolt.is_private.unwrap_or(false) {
        flags.push("Private".yellow().to_string());
    }
    if submolt.allow_crypto.unwrap_or(false) {
        flags.push("Crypto Allowed".green().to_string());
    }

    if !flags.is_empty() {
        println!("  {:<15} {}", "Flags:", flags.join(", "));
    }
    println!("{}", "".repeat(width.min(60)).dimmed());
    println!();
}