Diff
1diff --git a/ui.go b/ui.go
2index 7a9cd717dad722c004a0407a23a027f670d28a87..12e10454e3a114381258c50ac620e73e12eef1d7 100644
3--- a/ui.go
4+++ b/ui.go
5@@ -34,9 +34,11 @@ type model struct {
6 order []int
7 pos int
8 rounds int
9- played int
10- score int
11- resultParts []string
12+ played int
13+ score int
14+ resultParts []string
15+ guesses []string
16+ fieldCorrect []bool
17
18 inputs []textinput.Model
19 active int
20@@ -221,9 +223,14 @@ func (m *model) submitGuess() tea.Cmd {
21
22 points := 0
23 var parts []string
24+ m.guesses = make([]string, len(m.inputs))
25+ m.fieldCorrect = make([]bool, len(m.inputs))
26 for i, input := range m.inputs {
27- if v := input.Value(); v != "" && fuzzyMatch(v, answers[i]) {
28+ v := input.Value()
29+ m.guesses[i] = v
30+ if v != "" && fuzzyMatch(v, answers[i]) {
31 points += fieldWeights[i]
32+ m.fieldCorrect[i] = true
33 parts = append(parts, fieldLabels[i])
34 }
35 }
36@@ -248,6 +255,7 @@ func (m *model) submitGuess() tea.Cmd {
37 }
38
39 var red = lipgloss.NewStyle().Foreground(lipgloss.Color("#cc241d"))
40+var strikeRed = lipgloss.NewStyle().Foreground(lipgloss.Color("#cc241d")).Strikethrough(true)
41 var green = lipgloss.NewStyle().Foreground(lipgloss.Color("#98971a"))
42 var yellow = lipgloss.NewStyle().Foreground(lipgloss.Color("#d79921"))
43 var orange = lipgloss.NewStyle().Foreground(lipgloss.Color("#d65a00"))
44@@ -296,14 +304,26 @@ func (m model) View() string {
45 style, mark = yellow, "✔ "
46 }
47 b.WriteString(style.Render(mark + m.resultMsg))
48- b.WriteString("\n\n")
49- b.WriteString(dim.Render("Title: ") + bright.Render(m.answer.Title))
50- b.WriteString("\n")
51- b.WriteString(dim.Render("Album: ") + bright.Render(m.answer.Album))
52- b.WriteString("\n")
53- b.WriteString(dim.Render("Artist: ") + bright.Render(m.answer.Artist))
54- b.WriteString("\n\n")
55+ if !m.done {
56+ b.WriteString("\n\n")
57+ for i, label := range fieldPrompts {
58+ if i > 0 {
59+ b.WriteString("\n")
60+ }
61+ answer := []string{m.answer.Title, m.answer.Album, m.answer.Artist}[i]
62+ switch {
63+ case m.fieldCorrect[i]:
64+ b.WriteString(dim.Render(label) + green.Render(answer))
65+ case m.guesses[i] == "":
66+ b.WriteString(dim.Render(label) + yellow.Render(answer))
67+ default:
68+ b.WriteString(dim.Render(label) + strikeRed.Render(m.guesses[i]) + dim.Render(" ") + green.Render(answer))
69+ }
70+ }
71+ b.WriteString("\n\n")
72+ }
73 if m.done {
74+ b.WriteString("\n\n")
75 b.WriteString(dim.Render("Press Enter to quit."))
76 } else {
77 b.WriteString(dim.Render("Press Enter for the next song."))