2024-06-17 08:06:32 +00:00
|
|
|
|
package main
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
|
|
|
|
"os"
|
|
|
|
|
"sync"
|
2024-06-19 19:27:13 +00:00
|
|
|
|
"time"
|
2024-06-21 18:38:41 +00:00
|
|
|
|
|
|
|
|
|
tea "github.com/charmbracelet/bubbletea"
|
|
|
|
|
"github.com/charmbracelet/bubbles/list"
|
|
|
|
|
|
|
|
|
|
// "strconv"
|
|
|
|
|
)
|
2024-06-17 08:06:32 +00:00
|
|
|
|
|
|
|
|
|
var waitGroup sync.WaitGroup
|
|
|
|
|
|
2024-06-19 19:27:13 +00:00
|
|
|
|
func errHandler(err error, message string) {
|
|
|
|
|
if err != nil {
|
|
|
|
|
fmt.Printf("\n\n%s: %s\n", message, err)
|
|
|
|
|
os.Exit(1)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2024-06-17 08:06:32 +00:00
|
|
|
|
func main() {
|
|
|
|
|
options, err := ParseOptions()
|
|
|
|
|
errHandler(err, "Error parsing options")
|
|
|
|
|
|
2024-06-21 18:38:41 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// debugKeyring()
|
|
|
|
|
|
|
|
|
|
err = storeCredentialsToKeyring("https://pkg.go.dev/encoding/base64#Encoding.EncodeToString","casual","h>ÕdzPlÇqQ+çCQ{ð±;Kм7¸Âhð~Ümy)v")
|
|
|
|
|
errHandler(err, "Error parsing options")
|
|
|
|
|
|
|
|
|
|
// url1,login1,password1,err := getCredentialsFromKeyring()
|
|
|
|
|
// errHandler(err, "Error parsing options")
|
|
|
|
|
// m.loginInputs[url].Value()
|
|
|
|
|
// m.loginInputs[login].Value()
|
|
|
|
|
// m.loginInputs[pass].Value()
|
|
|
|
|
|
|
|
|
|
// if true {os.Exit(1)}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-06-19 19:27:13 +00:00
|
|
|
|
options.InitDAVclients()
|
2024-06-17 08:06:32 +00:00
|
|
|
|
|
2024-06-19 19:27:13 +00:00
|
|
|
|
calendars, err := GetCalendars()
|
|
|
|
|
errHandler(err, "Error getting calendars")
|
2024-06-17 08:06:32 +00:00
|
|
|
|
|
2024-06-21 18:38:41 +00:00
|
|
|
|
for _, calendar := range calendars {
|
2024-06-19 19:27:13 +00:00
|
|
|
|
fmt.Println(calendar.Name, "-", calendar.Path)
|
2024-06-17 08:06:32 +00:00
|
|
|
|
}
|
|
|
|
|
|
2024-06-19 19:27:13 +00:00
|
|
|
|
calendarObjects, err := GetTODOs(calendars[1].Path)
|
2024-06-21 18:38:41 +00:00
|
|
|
|
errHandler(err, "Error getting TODOs")
|
2024-06-17 08:06:32 +00:00
|
|
|
|
|
2024-06-19 19:27:13 +00:00
|
|
|
|
today := time.Now()
|
2024-06-21 18:38:41 +00:00
|
|
|
|
todayTodos, err := ParseDueDateTODOs(calendarObjects, today)
|
|
|
|
|
tomorrow := time.Now().AddDate(0,0,1)
|
|
|
|
|
tomorrowTodos, err := ParseDueDateTODOs(calendarObjects, tomorrow)
|
2024-06-19 19:27:13 +00:00
|
|
|
|
|
2024-06-21 18:38:41 +00:00
|
|
|
|
// fmt.Println(todos)
|
|
|
|
|
|
|
|
|
|
fmt.Println("In total we have", len(calendarObjects), "todos")
|
2024-06-19 19:27:13 +00:00
|
|
|
|
|
2024-06-21 18:38:41 +00:00
|
|
|
|
var itemsToday []list.Item
|
|
|
|
|
var itemsTomorrow []list.Item
|
2024-06-19 19:27:13 +00:00
|
|
|
|
|
2024-06-21 18:38:41 +00:00
|
|
|
|
for _,todo := range todayTodos {
|
|
|
|
|
itemsToday = append(itemsToday,todo)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for _,todo := range tomorrowTodos {
|
|
|
|
|
itemsTomorrow = append(itemsTomorrow,todo)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
m := InitModel()
|
|
|
|
|
m.TodayTab = list.New(itemsToday, list.NewDefaultDelegate(), 0, 0)
|
|
|
|
|
m.TodayTab.Title = "Today"
|
|
|
|
|
m.TomorrowTab = list.New(itemsTomorrow, list.NewDefaultDelegate(), 0, 0)
|
|
|
|
|
m.TomorrowTab.Title = "Tomorrow"
|
|
|
|
|
// m.LoggedIn = true
|
|
|
|
|
m.ActiveWindow = "login"
|
|
|
|
|
|
|
|
|
|
p := tea.NewProgram(m, tea.WithAltScreen())
|
|
|
|
|
if _, err := p.Run(); err != nil {
|
|
|
|
|
fmt.Println("Error running program:", err)
|
|
|
|
|
os.Exit(1)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fmt.Println(m.loginInputs[login].Value())
|
|
|
|
|
}
|