things3_cloud/commands/
inbox.rs1use crate::app::Cli;
2use crate::commands::{Command, DetailedArgs};
3use crate::ui::render_element_to_string;
4use crate::ui::views::inbox::InboxView;
5use anyhow::Result;
6use clap::Args;
7use iocraft::prelude::*;
8use std::sync::Arc;
9
10#[derive(Debug, Default, Args)]
11pub struct InboxArgs {
12 #[command(flatten)]
13 pub detailed: DetailedArgs,
14}
15
16impl Command for InboxArgs {
17 fn run_with_ctx(
18 &self,
19 cli: &Cli,
20 out: &mut dyn std::io::Write,
21 ctx: &mut dyn crate::cmd_ctx::CmdCtx,
22 ) -> Result<()> {
23 let store = Arc::new(cli.load_store()?);
24 let today = ctx.today();
25 let tasks = store.inbox();
26
27 let mut ui = element! {
28 ContextProvider(value: Context::owned(store.clone())) {
29 ContextProvider(value: Context::owned(today)) {
30 InboxView(
31 items: &tasks,
32 detailed: self.detailed.detailed,
33 )
34 }
35 }
36 };
37 let rendered = render_element_to_string(&mut ui, cli.no_color);
38 writeln!(out, "{}", rendered)?;
39 Ok(())
40 }
41}