summaryrefslogtreecommitdiff
path: root/internal/client/ui/core/usersettings
diff options
context:
space:
mode:
Diffstat (limited to 'internal/client/ui/core/usersettings')
-rw-r--r--internal/client/ui/core/usersettings/usersettings.go42
1 files changed, 41 insertions, 1 deletions
diff --git a/internal/client/ui/core/usersettings/usersettings.go b/internal/client/ui/core/usersettings/usersettings.go
index c833b5c..f7664fc 100644
--- a/internal/client/ui/core/usersettings/usersettings.go
+++ b/internal/client/ui/core/usersettings/usersettings.go
@@ -18,12 +18,14 @@ package usersettings
import (
"errors"
+ "log"
"strings"
tea "github.com/charmbracelet/bubbletea"
"github.com/charmbracelet/lipgloss"
"github.com/kyren223/eko/internal/client/config"
"github.com/kyren223/eko/internal/client/gateway"
+ "github.com/kyren223/eko/internal/client/ui"
"github.com/kyren223/eko/internal/client/ui/colors"
"github.com/kyren223/eko/internal/client/ui/core/state"
"github.com/kyren223/eko/internal/client/ui/field"
@@ -46,6 +48,17 @@ var (
Render("Update User Settings")
}
+ blurredDelete = func() string {
+ return lipgloss.NewStyle().Padding(0, 1).
+ Background(colors.DarkGray).Foreground(colors.Red).
+ Render("Delete User Permanently")
+ }
+ focusedDelete = func() string {
+ return lipgloss.NewStyle().Padding(0, 1).
+ Background(colors.Red).Foreground(colors.Black).
+ Render("Delete User Permanently")
+ }
+
highlightedStyle = func() lipgloss.Style {
return lipgloss.NewStyle().Padding(0, 0).
Background(colors.BackgroundHighlight).Foreground(colors.White)
@@ -57,6 +70,7 @@ const (
Description
PrivateField
UpdateField
+ DeleteField
FieldCount
)
@@ -65,6 +79,7 @@ type Model struct {
description field.Model
privateDM bool
update string
+ delete string
selected int
nameWidth int
@@ -126,6 +141,7 @@ func New() Model {
description: description,
privateDM: !user.IsPublicDM,
update: blurredUpdate(),
+ delete: blurredDelete(),
selected: 0,
nameWidth: nameWidth,
}
@@ -158,6 +174,12 @@ func (m Model) View() string {
Align(lipgloss.Center).
Render(m.update)
+ del := lipgloss.NewStyle().
+ Width(m.nameWidth).
+ Background(colors.Background).
+ Align(lipgloss.Center).
+ Render(m.delete)
+
configFile := "Config File: " + highlightedStyle().Render(config.ConfigFile)
configFile = lipgloss.NewStyle().
Background(colors.Background).Foreground(colors.White).
@@ -172,7 +194,7 @@ func (m Model) View() string {
Render(analyticsOptOut)
content := flex.NewVertical(
- analyticsOptOut, configFile, name, description, private, update,
+ analyticsOptOut, configFile, name, description, private, update, del,
).WithGap(1).View()
return lipgloss.NewStyle().
@@ -225,6 +247,7 @@ func (m *Model) updateFocus() tea.Cmd {
m.name.Blur()
m.description.Blur()
m.update = blurredUpdate()
+ m.delete = blurredDelete()
switch m.selected {
case NameField:
return m.name.Focus()
@@ -235,6 +258,9 @@ func (m *Model) updateFocus() tea.Cmd {
case UpdateField:
m.update = focusedUpdate()
return nil
+ case DeleteField:
+ m.delete = focusedDelete()
+ return nil
default:
assert.Never("missing switch statement field in update focus", "selected", m.selected)
return nil
@@ -247,6 +273,20 @@ func (m *Model) Select() tea.Cmd {
return nil
}
+ if m.selected == DeleteField {
+ log.Println("DELETING CLIENT")
+ // PERMA DELETE USER and return to login screen
+ state.Reset()
+ return tea.Batch(func() tea.Msg {
+ msg := gateway.Send(&packet.SetUserData{
+ Data: nil,
+ User: &data.User{IsDeleted: true},
+ })() // Important, call this function to block
+ gateway.Disconnect()
+ return msg
+ }, ui.Transition(ui.NewAuth()))
+ }
+
if m.selected != UpdateField {
return nil
}