diff --git a/src/main.rs b/src/main.rs index 0ee5136..8241206 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,5 +3,5 @@ mod ui; mod widget; fn main() { - ui::Ui::run(); + ui::Ui::run("rocketchat/rocket.chat"); } diff --git a/src/ui.rs b/src/ui.rs index cab365a..4f7718c 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -11,7 +11,6 @@ use tui::Terminal; use crate::tags; use crate::widget::repo_entry; use crate::widget::tag_list; -// use crate::widget::Widget; pub struct Ui { state: State, @@ -26,12 +25,13 @@ pub enum State { } impl Ui { - pub fn run() { + pub fn run(repo_id: &str) { let mut ui = Ui { state: State::EditRepo, - repo: repo_entry::RepoEntry::new("This is a text"), - tags: tag_list::TagList::new(vec![String::from("editing Repository")]), + repo: repo_entry::RepoEntry::new(repo_id), + tags: tag_list::TagList::new(vec![String::from("Fetching Tags")]), }; + ui.tags = tag_list::TagList::new_with_result(tags::Tags::get_tags(ui.repo.get())); //setup tui let stdout = io::stdout().into_raw_mode().unwrap(); @@ -74,14 +74,8 @@ impl Ui { Ok(Key::Char('\n')) => { if ui.state == State::EditRepo { ui.repo.confirm(); - match tags::Tags::get_tags(ui.repo.get()) { - Ok(lines) => ui.tags = tag_list::TagList::new(lines), - Err(_) => { - ui.tags = tag_list::TagList::new_line( - "Error fetich tags. Is there a typo in the Repository?", - ); - } - } + ui.tags = + tag_list::TagList::new_with_result(tags::Tags::get_tags(ui.repo.get())); } } Ok(Key::Char(key)) => { diff --git a/src/widget/tag_list.rs b/src/widget/tag_list.rs index a25f397..332ae7c 100644 --- a/src/widget/tag_list.rs +++ b/src/widget/tag_list.rs @@ -2,6 +2,7 @@ use termion::event::Key; use tui::style::{Color, Style}; use tui::widgets::{Block, Borders, List, ListState}; +use crate::tags::Error; use crate::ui::State; pub struct TagList { @@ -24,6 +25,13 @@ impl TagList { } } + pub fn new_with_result(result: Result, Error>) -> Self { + match result { + Ok(lines) => Self::new(lines), + Err(_) => Self::new_line("Error fetching tags. Is there a typo in the Repository?"), + } + } + pub fn render(&mut self, state: &State) -> (List, &mut ListState) { let border_style = if state == &State::SelectTag { Style::default().fg(Color::Green)