use ratatui::{prelude::*, style::Style, widgets::Clear};
use semver::Version;
use crate::config::Theme;
#[derive(Clone)]
pub struct NewVersionBanner {
style: Style,
new_version: Version,
}
impl NewVersionBanner {
pub fn new(theme: &Theme, new_version: Version) -> Self {
Self {
style: theme.accent.into(),
new_version,
}
}
pub fn render_in(&mut self, frame: &mut Frame, area: Rect) {
let error_overlay_rect = Rect {
x: area.x,
y: area.bottom() - 1,
width: area.width,
height: 1,
};
let message = format!(
"🚀 New Version Available: {} → {}",
env!("CARGO_PKG_VERSION"),
self.new_version
);
let text = Line::from(message).centered().style(self.style);
frame.render_widget(Clear, error_overlay_rect);
frame.render_widget(text, error_overlay_rect);
}
}