From f3b89094c5f0bbce82899416356aab1d08100376 Mon Sep 17 00:00:00 2001 From: Kyren223 Date: Sat, 25 Jan 2025 18:54:03 +0200 Subject: Implemented client-side ban reason view in banlist --- internal/client/ui/core/banview/banview.go | 64 ++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 internal/client/ui/core/banview/banview.go (limited to 'internal/client/ui/core/banview/banview.go') diff --git a/internal/client/ui/core/banview/banview.go b/internal/client/ui/core/banview/banview.go new file mode 100644 index 0000000..51636f1 --- /dev/null +++ b/internal/client/ui/core/banview/banview.go @@ -0,0 +1,64 @@ +package banview + +import ( + "strconv" + + tea "github.com/charmbracelet/bubbletea" + "github.com/charmbracelet/lipgloss" + "github.com/kyren223/eko/internal/client/ui/colors" + "github.com/kyren223/eko/internal/client/ui/core/state" + "github.com/kyren223/eko/internal/client/ui/layouts/flex" + "github.com/kyren223/eko/pkg/snowflake" +) + +var ( + width = 48 + + style = lipgloss.NewStyle(). + Border(lipgloss.ThickBorder()). + Padding(1, 4). + Align(lipgloss.Center, lipgloss.Center) + + headerStyle = lipgloss.NewStyle().Foreground(colors.Focus) + grayStyle = lipgloss.NewStyle().Foreground(colors.LightGray) +) + +const ( + BanReasonField = iota + BanField + FieldCount +) + +type Model struct { + banReason string + name string + id string +} + +func New(userId, networkId snowflake.ID) Model { + return Model{ + banReason: *state.State.Members[networkId][userId].BanReason, + name: state.State.Users[userId].Name, + id: strconv.FormatInt(int64(userId), 10), + } +} + +func (m Model) Init() tea.Cmd { + return nil +} + +func (m Model) View() string { + nameHeader := headerStyle.Render("Banned Username:") + name := m.name + grayStyle.Render(" ("+m.id+")") + name = lipgloss.NewStyle().Width(width).Render(name) + + banReasonHeader := headerStyle.Render("Ban Reason:") + banReason := lipgloss.NewStyle().Width(width).Render(m.banReason) + + content := flex.NewVertical(nameHeader, name, banReasonHeader, banReason).WithGap(1).View() + return style.Render(content) +} + +func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) { + return m, nil +} -- cgit v1.3.1