applied fixes to no_yaml_found

This commit is contained in:
Thomas Eppers 2023-02-17 17:23:14 +01:00
parent f4132d4125
commit 1f2a098c26
2 changed files with 41 additions and 64 deletions

View File

@ -8,7 +8,7 @@ use tui::Terminal;
use std::sync::{Arc, Mutex}; use std::sync::{Arc, Mutex};
use std::{io, thread}; use std::{io, thread};
use crate::widget::async_tag_list; use crate::widget::async_tag_list::{self, TagList};
use crate::widget::info; use crate::widget::info;
use crate::widget::repo_entry; use crate::widget::repo_entry;
use crate::Opt; use crate::Opt;
@ -61,18 +61,33 @@ impl Ui {
match event.recv() { match event.recv() {
Ok(UiEvent::Quit) => break, Ok(UiEvent::Quit) => break,
Ok(UiEvent::NewRepo(name)) => { Ok(UiEvent::NewRepo(name)) => {
{
let mut ui = ui.lock().unwrap();
ui.tags = TagList::with_status("fetching new tags...");
}
let list = async_tag_list::TagList::with_repo_name(name).await; let list = async_tag_list::TagList::with_repo_name(name).await;
let mut ui = ui.lock().unwrap(); let mut ui = ui.lock().unwrap();
ui.tags = list; ui.tags = list;
} }
Ok(UiEvent::TagInput(key)) => { Ok(UiEvent::TagInput(key)) => {
let mut tags = { let (fetch_new, mut tags) = {
let ui_data = ui.lock().unwrap(); let mut ui_data = ui.lock().unwrap();
ui_data.tags.clone() if (key == Key::Down || key == Key::Char('j'))
&& ui_data.tags.at_end_of_list()
{
ui_data.info.set_text("Fetching more tags...");
(true, ui_data.tags.clone())
} else {
(false, ui_data.tags.clone())
}
}; };
tags.handle_input(key).await; tags.handle_input(key).await;
let mut ui = ui.lock().unwrap(); let mut ui = ui.lock().unwrap();
ui.tags = tags; ui.tags = tags;
ui.details = ui.tags.create_detail_widget();
if fetch_new {
ui.info.set_text("Fetching tags done");
}
} }
Err(e) => { Err(e) => {
let mut ui = ui.lock().unwrap(); let mut ui = ui.lock().unwrap();
@ -154,59 +169,25 @@ impl Ui {
ui_data.repo.confirm(); ui_data.repo.confirm();
sender.send(UiEvent::NewRepo(ui_data.repo.get())).unwrap(); sender.send(UiEvent::NewRepo(ui_data.repo.get())).unwrap();
} }
Ok(Key::Char('\n')) => match ui_data.state { Ok(Key::Char('\n')) if ui_data.state == State::EditRepo => {
State::EditRepo => { ui_data.repo.confirm();
ui_data.repo.confirm(); sender.send(UiEvent::NewRepo(ui_data.repo.get())).unwrap();
sender.send(UiEvent::NewRepo(ui_data.repo.get())).unwrap();
}
State::SelectTag => {} // {
// let mut repo = ui_data.repo.get();
// let tag = match ui_data.tags.get_selected() {
// Err(async_tag_list::Error::NextPageSelected) => continue,
// Err(e) => {
// ui_data.info.set_info(&format!("{}", e));
// continue;
// }
// Ok(tag) => tag,
// };
// repo.push(':');
// repo.push_str(&tag);
// ui_data.services.change_current_line(repo);
// }
},
Ok(Key::Char(key)) => match ui_data.state {
State::EditRepo => {
ui_data.info.set_text("Editing Repository");
ui_data.repo.handle_input(Key::Char(key));
}
State::SelectTag => {}
},
Ok(Key::Backspace) => match ui_data.state {
State::EditRepo => {
ui_data.info.set_text("Editing Repository");
ui_data.repo.handle_input(Key::Backspace);
}
State::SelectTag => {}
},
Ok(Key::Up) => {
let state = ui_data.state.clone();
match state {
State::EditRepo => {}
State::SelectTag => {
sender.send(UiEvent::TagInput(Key::Up)).unwrap();
ui_data.details = ui_data.tags.create_detail_widget();
}
}
} }
Ok(Key::Down) => { Ok(Key::Backspace) if ui_data.state == State::EditRepo => {
let state = ui_data.state.clone(); ui_data.info.set_text("Editing Repository");
match state { ui_data.repo.handle_input(Key::Backspace);
State::EditRepo => {} }
State::SelectTag => { Ok(Key::Up) | Ok(Key::Char('k')) if ui_data.state == State::SelectTag => {
sender.send(UiEvent::TagInput(Key::Down)).unwrap(); sender.send(UiEvent::TagInput(Key::Up)).unwrap();
ui_data.details = ui_data.tags.create_detail_widget(); ui_data.details = ui_data.tags.create_detail_widget();
} }
} Ok(Key::Down) | Ok(Key::Char('j')) if ui_data.state == State::SelectTag => {
sender.send(UiEvent::TagInput(Key::Down)).unwrap();
ui_data.details = ui_data.tags.create_detail_widget();
}
Ok(Key::Char(key)) if ui_data.state == State::EditRepo => {
ui_data.info.set_text("Editing Repository");
ui_data.repo.handle_input(Key::Char(key));
} }
_ => {} _ => {}
} }

View File

@ -212,14 +212,10 @@ impl Ui {
ui_data.repo.confirm(); ui_data.repo.confirm();
sender.send(UiEvent::NewRepo(ui_data.repo.get())).unwrap(); sender.send(UiEvent::NewRepo(ui_data.repo.get())).unwrap();
} }
Ok(Key::Backspace) => match ui_data.state { Ok(Key::Backspace) if ui_data.state == State::EditRepo => {
State::SelectService => (), ui_data.info.set_text("Editing Repository");
State::EditRepo => { ui_data.repo.handle_input(Key::Backspace);
ui_data.info.set_text("Editing Repository"); }
ui_data.repo.handle_input(Key::Backspace);
}
State::SelectTag => (),
},
Ok(Key::Up) | Ok(Key::Char('k')) Ok(Key::Up) | Ok(Key::Char('k'))
if ui_data.state == State::SelectService if ui_data.state == State::SelectService
&& ui_data.services.find_previous_match() => && ui_data.services.find_previous_match() =>