waka_footer.go (882B)
1 package tui 2 3 import ( 4 "git.prime8.dev/moncheeta/prime8dev/internal/config" 5 "git.prime8.dev/moncheeta/prime8dev/internal/external" 6 tea "github.com/charmbracelet/bubbletea" 7 ) 8 9 type wakaFooterMsg struct { 10 hours string 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 config.WakaTimeUser == "" || 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.FetchTotal() 34 if err != nil || stats == nil { 35 return wakaFooterMsg{ok: false} 36 } 37 38 return wakaFooterMsg{hours: stats.AllTime.TotalText, ok: stats.AllTime.TotalText != ""} 39 } 40 }