diff --git a/internal/view/components/deckview/deckview.go b/internal/view/components/deckview/deckview.go index 431a1d7..b5e2139 100644 --- a/internal/view/components/deckview/deckview.go +++ b/internal/view/components/deckview/deckview.go @@ -88,9 +88,11 @@ func (m Model) View() string { card := renderCard( value, m.deck, - m.voteCursor.Match(i), - m.finishCursor.Match(i), - value == m.myVote, + renderCardFlags{ + voteCursor: m.voteCursor.Match(i), + finishCursor: m.finishCursor.Match(i), + voted: value == m.myVote, + }, ) cards = append(cards, card, " ") // Add a space between cards } @@ -121,10 +123,16 @@ func (m *Model) FinishCursor() int { return m.finishCursor.Position() } -func renderCard(value protocol.VoteValue, deck protocol.Deck, voteCursor bool, finishCursor bool, voted bool) string { +type renderCardFlags struct { + voteCursor bool + finishCursor bool + voted bool +} + +func renderCard(value protocol.VoteValue, deck protocol.Deck, flags renderCardFlags) string { card := table.New(). Border(lipgloss.RoundedBorder()). - BorderStyle(*cardBorderStyle(voted, finishCursor)). + BorderStyle(*cardBorderStyle(flags.voted, flags.finishCursor)). StyleFunc(func(row, col int) lipgloss.Style { return *voteview.VoteStyle(value, deck) }). @@ -134,14 +142,14 @@ func renderCard(value protocol.VoteValue, deck protocol.Deck, voteCursor bool, f var column []string column = []string{} - if !voted { + if !flags.voted { column = append(column, "") } column = append(column, card) - if voteCursor { - if voted { + if flags.voteCursor { + if flags.voted { column = append(column, "") } column = append(column, " ^") diff --git a/internal/view/components/deckview/deckview_test.go b/internal/view/components/deckview/deckview_test.go index 06c255c..1182e7f 100644 --- a/internal/view/components/deckview/deckview_test.go +++ b/internal/view/components/deckview/deckview_test.go @@ -37,7 +37,11 @@ func (s *Suite) TestRenderCard() { } for _, tc := range testCases { - result := renderCard(tc.value, deck, tc.cursor, false, tc.voted) + result := renderCard(tc.value, deck, renderCardFlags{ + voteCursor: tc.cursor, + finishCursor: false, + voted: tc.voted}, + ) s.Require().Equal(tc.expected, result) } }