Call refresh on every action from user

This commit is contained in:
Dheepak Krishnamurthy 2020-08-04 17:30:05 -06:00
parent ee738f8852
commit e5ad0ce1ed
2 changed files with 54 additions and 26 deletions

View file

@ -134,6 +134,7 @@ impl TTApp {
let tasks = self.tasks.clone();
let filter = self.filter.clone();
thread::spawn(move || loop {
thread::sleep(Duration::from_secs(10));
let mut task = Command::new("task");
task.arg("rc.json.array=on");
@ -160,26 +161,23 @@ impl TTApp {
*(tasks.lock().unwrap()) = i;
tasks.lock().unwrap().sort_by(cmp);
}
{
let mut tasks = tasks.lock().unwrap();
for i in 0..tasks.len() {
let task_id = tasks[i].id().unwrap();
let tags = TTApp::task_virtual_tags(task_id).unwrap();
let task = &mut tasks[i];
match task.tags_mut() {
Some(t) => {
for tag in tags.split(" ") {
t.push(tag.to_string())
}
},
None => {
task.set_tags(Some(tags.split(" ")))
let tasks_len = tasks.lock().unwrap().len();
for i in 0..tasks_len {
let task_id = tasks.lock().unwrap()[i].id().unwrap();
let tags = TTApp::task_virtual_tags(task_id).unwrap();
let task = &mut tasks.lock().unwrap()[i];
match task.tags_mut() {
Some(t) => {
for tag in tags.split(" ") {
t.push(tag.to_string())
}
},
None => {
task.set_tags(Some(tags.split(" ")))
}
}
}
}
thread::sleep(Duration::from_millis(5000));
});
}
@ -648,9 +646,29 @@ impl TTApp {
.expect("Unable to run `task export`. Check documentation for more information.");
let data = String::from_utf8(output.stdout).unwrap();
let imported = import(data.as_bytes());
if let Ok(i) = imported {
*(self.tasks.lock().unwrap()) = i;
self.tasks.lock().unwrap().sort_by(cmp);
{
if let Ok(i) = imported {
*(self.tasks.lock().unwrap()) = i;
self.tasks.lock().unwrap().sort_by(cmp);
}
{
let mut tasks = self.tasks.lock().unwrap();
for i in 0..tasks.len() {
let task_id = tasks[i].id().unwrap();
let tags = TTApp::task_virtual_tags(task_id).unwrap();
let task = &mut tasks[i];
match task.tags_mut() {
Some(t) => {
for tag in tags.split(" ") {
t.push(tag.to_string())
}
},
None => {
task.set_tags(Some(tags.split(" ")))
}
}
}
}
}
}

View file

@ -63,28 +63,28 @@ fn tui_main(_config: &str) -> Result<(), Box<dyn Error>> {
Key::Down | Key::Char('j') => app.next(),
Key::Up | Key::Char('k') => app.previous(),
Key::Char('d') => match app.task_done() {
Ok(_) => (),
Ok(_) => app.update(),
Err(e) => {
app.mode = AppMode::TaskError;
app.error = e;
}
},
Key::Char('x') => match app.task_delete() {
Ok(_) => (),
Ok(_) => app.update(),
Err(e) => {
app.mode = AppMode::TaskError;
app.error = e;
}
},
Key::Char('s') => match app.task_start_or_stop() {
Ok(_) => (),
Ok(_) => app.update(),
Err(e) => {
app.mode = AppMode::TaskError;
app.error = e;
}
},
Key::Char('u') => match app.task_undo() {
Ok(_) => (),
Ok(_) => app.update(),
Err(e) => {
app.mode = AppMode::TaskError;
app.error = e;
@ -95,7 +95,7 @@ fn tui_main(_config: &str) -> Result<(), Box<dyn Error>> {
let r = app.task_edit();
events.resume_event_loop(&mut terminal);
match r {
Ok(_) => (),
Ok(_) => app.update(),
Err(e) => {
app.mode = AppMode::TaskError;
app.error = e;
@ -134,7 +134,10 @@ fn tui_main(_config: &str) -> Result<(), Box<dyn Error>> {
},
AppMode::ModifyTask => match input {
Key::Char('\n') => match app.task_modify() {
Ok(_) => app.mode = AppMode::Report,
Ok(_) => {
app.mode = AppMode::Report;
app.update();
},
Err(e) => {
app.mode = AppMode::TaskError;
app.error = e;
@ -172,7 +175,10 @@ fn tui_main(_config: &str) -> Result<(), Box<dyn Error>> {
},
AppMode::LogTask => match input {
Key::Char('\n') => match app.task_log() {
Ok(_) => app.mode = AppMode::Report,
Ok(_) => {
app.mode = AppMode::Report;
app.update();
}
Err(e) => {
app.mode = AppMode::TaskError;
app.error = e;
@ -210,7 +216,10 @@ fn tui_main(_config: &str) -> Result<(), Box<dyn Error>> {
},
AppMode::AddTask => match input {
Key::Char('\n') => match app.task_add() {
Ok(_) => app.mode = AppMode::Report,
Ok(_) => {
app.mode = AppMode::Report;
app.update();
}
Err(e) => {
app.mode = AppMode::TaskError;
app.error = e;
@ -249,6 +258,7 @@ fn tui_main(_config: &str) -> Result<(), Box<dyn Error>> {
AppMode::Filter => match input {
Key::Char('\n') | Key::Esc => {
app.mode = AppMode::Report;
app.update();
}
Key::Right => {
if app.cursor_location < app.filter.len() {