diff options
| author | Kyren223 <Kyren223@proton.me> | 2025-01-25 18:54:03 +0200 |
|---|---|---|
| committer | Kyren223 <Kyren223@proton.me> | 2025-01-25 18:54:03 +0200 |
| commit | f3b89094c5f0bbce82899416356aab1d08100376 (patch) | |
| tree | d71e5e4ed642f7d1bcdb7091050b30e751b4911b /internal/client/ui/core/banview/banview.go | |
| parent | 5c96cb4e606298c5a1ef05b5b2dcba099189d079 (diff) | |
Implemented client-side ban reason view in banlist
Diffstat (limited to 'internal/client/ui/core/banview/banview.go')
| -rw-r--r-- | internal/client/ui/core/banview/banview.go | 64 |
1 files changed, 64 insertions, 0 deletions
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 +} |
