Better Resource Management
This commit is contained in:
48
model.go
48
model.go
@@ -7,7 +7,36 @@ import (
|
||||
todotxt "github.com/br0xen/go-todotxt"
|
||||
)
|
||||
|
||||
// diskListChanged returns true if the task list in todo.txt
|
||||
// is different than what we have previously loaded.
|
||||
func (a *AppState) diskListChanged() bool {
|
||||
if !a.taskListLoaded {
|
||||
return false
|
||||
}
|
||||
curr, err := todotxt.LoadFromFilename(a.getTodoFile())
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
return curr.String() != a.TaskList.String()
|
||||
}
|
||||
|
||||
// diskDoneListChanged returns true if the task list in done.txt
|
||||
// is different than what we have previously loaded.
|
||||
func (a *AppState) diskDoneListChanged() bool {
|
||||
if !a.doneListLoaded {
|
||||
return false
|
||||
}
|
||||
curr, err := todotxt.LoadFromFilename(a.getDoneFile())
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
return curr.String() != a.DoneList.String()
|
||||
}
|
||||
|
||||
func (a *AppState) addTask(taskString string) error {
|
||||
if a.diskListChanged() {
|
||||
return a.e(ResStrListChanged)
|
||||
}
|
||||
t, err := todotxt.ParseTask(taskString)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -20,6 +49,9 @@ func (a *AppState) addTask(taskString string) error {
|
||||
}
|
||||
|
||||
func (a *AppState) toggleTaskComplete(id int) error {
|
||||
if a.diskListChanged() {
|
||||
return a.e(ResStrListChanged)
|
||||
}
|
||||
var task *todotxt.Task
|
||||
var err error
|
||||
if task, err = a.TaskList.GetTask(id); err != nil {
|
||||
@@ -34,12 +66,15 @@ func (a *AppState) toggleTaskComplete(id int) error {
|
||||
}
|
||||
|
||||
func (a *AppState) archiveTask(id int) error {
|
||||
if a.diskListChanged() {
|
||||
return a.e(ResStrListChanged)
|
||||
}
|
||||
var err error
|
||||
var task *todotxt.Task
|
||||
if task, err = a.TaskList.GetTask(id); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := a.TaskList.ArchiveTaskToFile(*task, app.getDoneFile()); err != nil {
|
||||
if err := a.TaskList.ArchiveTaskToFile(*task, a.getDoneFile()); err != nil {
|
||||
return err
|
||||
}
|
||||
a.TaskList.RemoveTask(*task)
|
||||
@@ -47,6 +82,9 @@ func (a *AppState) archiveTask(id int) error {
|
||||
}
|
||||
|
||||
func (a *AppState) unarchiveTask(id int) error {
|
||||
if a.diskListChanged() {
|
||||
return a.e(ResStrListChanged)
|
||||
}
|
||||
var err error
|
||||
var task *todotxt.Task
|
||||
if task, err = a.DoneList.GetTask(id); err != nil {
|
||||
@@ -112,6 +150,7 @@ func (a *AppState) LoadTaskList() error {
|
||||
var tl todotxt.TaskList
|
||||
tl, err = todotxt.LoadFromFilename(a.getTodoFile())
|
||||
a.TaskList = &tl
|
||||
a.taskListLoaded = true
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -120,13 +159,20 @@ func (a *AppState) LoadDoneList() error {
|
||||
var tl todotxt.TaskList
|
||||
tl, err = todotxt.LoadFromFilename(a.getDoneFile())
|
||||
a.DoneList = &tl
|
||||
a.doneListLoaded = true
|
||||
return err
|
||||
}
|
||||
|
||||
func (a *AppState) WriteList() error {
|
||||
if !a.taskListLoaded {
|
||||
return a.e(ResStrTaskListNotLoaded)
|
||||
}
|
||||
return a.TaskList.WriteToFilename(a.getTodoFile())
|
||||
}
|
||||
|
||||
func (a *AppState) WriteDoneList() error {
|
||||
if !a.doneListLoaded {
|
||||
return a.e(ResStrDoneListNotLoaded)
|
||||
}
|
||||
return a.DoneList.WriteToFilename(a.getDoneFile())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user