at main 1.0 kB view raw
1package main 2 3import ( 4 "errors" 5 6 tea "github.com/charmbracelet/bubbletea" 7) 8 9type fetchedRfcMsg string 10 11// todo: this should probably set the Fetching appmode 12func (m *Model) fetchRfc() tea.Cmd { 13 return func() tea.Msg { 14 cachedContent, err := m.cache.Get(m.rfcNumber) 15 if errors.Is(err, ErrCacheNotFound) { 16 content, ferr := m.client.Fetch(m.rfcNumber) 17 if ferr != nil { 18 return errMsg{ferr} 19 } 20 21 if ferr := m.cache.Store(m.rfcNumber, content); ferr != nil { 22 return errMsg{ferr} 23 } 24 25 return fetchedRfcMsg(content) 26 } 27 28 if err != nil { 29 return errMsg{err} 30 } 31 32 return fetchedRfcMsg(cachedContent) 33 } 34} 35 36type fetchedCachedRFCSMsg []string 37 38func (m *Model) getCachedRFCs() tea.Cmd { 39 return func() tea.Msg { 40 keys, err := m.cache.GetAllKeys() 41 if err != nil { 42 return errMsg{err} 43 } 44 return fetchedCachedRFCSMsg(keys) 45 } 46} 47 48type requestedRfcChangeMsg int 49 50func (m *Model) requestRfcChange(newRfc int) tea.Cmd { 51 return func() tea.Msg { 52 return requestedRfcChangeMsg(newRfc) 53 } 54}