mirror of
				https://github.com/taigrr/wtf
				synced 2025-01-18 04:03:14 -08:00 
			
		
		
		
	* Create generalized todo module Makes existing modules "backends" This gives us a consistent interface * Fix check issues * Fix lint errors * Make changes to stay on wtfutil todoist fork
		
			
				
	
	
		
			67 lines
		
	
	
		
			1021 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1021 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package backend
 | |
| 
 | |
| type Task struct {
 | |
| 	ID        string
 | |
| 	Completed bool
 | |
| 	Name      string
 | |
| }
 | |
| 
 | |
| type Project struct {
 | |
| 	ID   string
 | |
| 	Name string
 | |
| 
 | |
| 	Index   int
 | |
| 	Tasks   []Task
 | |
| 	Err     error
 | |
| 	backend Backend
 | |
| }
 | |
| 
 | |
| func (proj *Project) IsLast() bool {
 | |
| 	return proj.Index >= len(proj.Tasks)-1
 | |
| }
 | |
| 
 | |
| func (proj *Project) loadTasks() {
 | |
| 	Tasks, err := proj.backend.LoadTasks(proj.ID)
 | |
| 	proj.Err = err
 | |
| 	proj.Tasks = Tasks
 | |
| }
 | |
| 
 | |
| func (proj *Project) LongestLine() int {
 | |
| 	maxLen := 0
 | |
| 
 | |
| 	for _, task := range proj.Tasks {
 | |
| 		if len(task.Name) > maxLen {
 | |
| 			maxLen = len(task.Name)
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	return maxLen
 | |
| }
 | |
| 
 | |
| func (proj *Project) currentTask() *Task {
 | |
| 	if proj.Index < 0 {
 | |
| 		return nil
 | |
| 	}
 | |
| 
 | |
| 	return &proj.Tasks[proj.Index]
 | |
| }
 | |
| 
 | |
| func (proj *Project) CloseSelectedTask() {
 | |
| 	currTask := proj.currentTask()
 | |
| 
 | |
| 	if currTask != nil {
 | |
| 		_ = proj.backend.CloseTask(currTask)
 | |
| 		proj.loadTasks()
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func (proj *Project) DeleteSelectedTask() {
 | |
| 	currTask := proj.currentTask()
 | |
| 
 | |
| 	if currTask != nil {
 | |
| 		_ = proj.backend.DeleteTask(currTask)
 | |
| 
 | |
| 		proj.loadTasks()
 | |
| 	}
 | |
| }
 |