bitpill 0.3.5

A personal medication management TUI application built in Rust.
Documentation
use crate::presentation::tui::app::App;
use crate::presentation::tui::presenters::create_medication_presenter::{
    CreateMedicationPresenter, CreateMedicationPresenterDto,
};
use crate::presentation::tui::renderers::ScreenRenderer;
use crate::presentation::tui::screen::Screen;
use ratatui::Frame;

const FREQUENCY_OPTIONS: &[&str] = &["Once Daily", "Twice Daily", "Thrice Daily", "Custom"];

pub struct CreateMedicationRenderer;

impl ScreenRenderer for CreateMedicationRenderer {
    fn render(&self, f: &mut Frame, app: &App) {
        let Screen::CreateMedication {
            name,
            amount_mg,
            selected_frequency,
            scheduled_time,
            scheduled_idx,
            focused_field,
            insert_mode,
        } = &app.current_screen
        else {
            return;
        };

        CreateMedicationPresenter.present(
            f,
            &CreateMedicationPresenterDto {
                name,
                amount_mg,
                scheduled_time: scheduled_time.as_slice(),
                scheduled_idx: *scheduled_idx,
                focused_field: *focused_field,
                insert_mode: *insert_mode,
                status_message: app.status_message.as_deref(),
                frequency_options: FREQUENCY_OPTIONS,
                selected_frequency: *selected_frequency,
            },
        );
    }
}