yet another tui rfc reader
olexsmir.xyz/rfcr
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}