prime8dev

prime8dev
git clone https://git.prime8.dev/prime8dev.git
Log | Files | Refs | README | LICENSE

waka_footer.go (905B)


      1 package tui
      2 
      3 import (
      4 	"git.prime8.dev/moncheeta/prime8dev/internal/external"
      5 	tea "github.com/charmbracelet/bubbletea"
      6 )
      7 
      8 type wakaFooterMsg struct {
      9 	hours  string
     10 	weekly *external.WeeklyStats
     11 	ok     bool
     12 }
     13 
     14 type wakaFooterInitMsg struct{}
     15 
     16 func initWakaFooterCmd() tea.Cmd {
     17 	return func() tea.Msg {
     18 		return wakaFooterInitMsg{}
     19 	}
     20 }
     21 
     22 func (m *portfolioModel) maybeLoadWakaFooterCmd() tea.Cmd {
     23 	if m.wakaLoaded || m.wakaLoading || m.wakaTime == nil {
     24 		return nil
     25 	}
     26 
     27 	m.wakaLoading = true
     28 	return fetchWakaFooterCmd(m.wakaTime)
     29 }
     30 
     31 func fetchWakaFooterCmd(service *external.WakaTime) tea.Cmd {
     32 	return func() tea.Msg {
     33 		stats, err := service.FetchStats()
     34 		if err != nil || stats == nil {
     35 			return wakaFooterMsg{ok: false}
     36 		}
     37 
     38 		hasData := stats.AllTime.TotalText != "" || len(stats.Weekly.Days) > 0
     39 		return wakaFooterMsg{hours: stats.AllTime.TotalText, weekly: &stats.Weekly, ok: hasData}
     40 	}
     41 }