himitsu/main.go

65 lines
1.0 KiB
Go
Raw Normal View History

2024-04-28 21:35:37 +02:00
package main
import (
"fmt"
"himitsu/config"
"himitsu/ui/components"
"log"
"time"
tea "github.com/charmbracelet/bubbletea"
)
func main() {
2024-04-28 22:08:34 +02:00
config.Init()
2024-04-28 21:35:37 +02:00
p := tea.NewProgram(initialModel())
if _, err := p.Run(); err != nil {
log.Fatal(err)
}
}
type (
tickMsg struct{}
)
func tick() tea.Cmd {
return tea.Tick(time.Second, func(time.Time) tea.Msg {
return tickMsg{}
})
}
type model struct {
}
func initialModel() model {
return model{}
}
func (m model) Init() tea.Cmd {
return tick()
}
func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
var cmd tea.Cmd
switch msg := msg.(type) {
case tea.KeyMsg:
switch msg.Type {
case tea.KeyEnter, tea.KeyCtrlC, tea.KeyEsc:
return m, tea.Quit
}
case tickMsg:
return m, tick()
}
return m, cmd
}
func (m model) View() string {
tpl := components.VersionNumber() + "\n\n"
for _, totp := range config.Config {
tpl += components.TOTP(totp)
}
tpl += "\n" + components.KeybindsHints([]string{"esc: quit"}) + "\n"
return fmt.Sprintf(tpl)
}