mirror of
https://github.com/kdheepak/taskwarrior-tui.git
synced 2025-08-25 08:47:18 +02:00
Call refresh on every action from user
This commit is contained in:
parent
ee738f8852
commit
e5ad0ce1ed
2 changed files with 54 additions and 26 deletions
54
src/app.rs
54
src/app.rs
|
@ -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(" ")))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
26
src/main.rs
26
src/main.rs
|
@ -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() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue