Skip to content

Commit 74ba653

Browse files
committed
added edit collection
1 parent 5b3b803 commit 74ba653

4 files changed

Lines changed: 28 additions & 4 deletions

File tree

internal/tui/components/OptionsProvider/component.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,14 +65,24 @@ func (o OptionsProvider[T, U]) Update(msg tea.Msg) (OptionsProvider[T, U], tea.C
6565
return o, tea.Batch(cmds...)
6666
case key.Matches(msg, keybinds.Keys.Remove):
6767
return o, func() tea.Msg { return messages.DeleteItem{ItemID: int64(o.GetSelected().ID)} }
68+
case key.Matches(msg, keybinds.Keys.EditItem):
69+
o.list.SetSize(o.list.Width(), o.height-lipgloss.Height(o.input.View()))
70+
o.input.SetInput(o.GetSelected().Name)
71+
o.input.OnFocus(o.GetSelected().ID)
72+
o.focused = textComponent
73+
return o, tea.Batch(cmds...)
6874
}
6975
}
7076
}
71-
case messages.ItemAdded:
77+
case messages.ItemAdded, messages.ItemEdited:
7278
o.input.OnBlur()
7379
o.focused = listComponent
7480
o.list.SetSize(o.list.Width(), o.height)
7581
o.RefreshItems()
82+
case messages.DeactivateView:
83+
o.input.OnBlur()
84+
o.focused = listComponent
85+
o.list.SetSize(o.list.Width(), o.height)
7686
}
7787
switch o.focused {
7888
case listComponent:

internal/tui/components/OptionsProvider/input.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ type OptionsInput struct {
1313
input textinput.Model
1414
height int
1515
width int
16-
editId int
16+
editId int64
1717
}
1818

1919
func NewOptionsInput(config *InputConfig) OptionsInput {
@@ -41,7 +41,14 @@ func (i OptionsInput) Update(msg tea.Msg) (OptionsInput, tea.Cmd) {
4141
case tea.KeyMsg:
4242
switch {
4343
case key.Matches(msg, keybinds.Keys.Choose):
44-
return i, func() tea.Msg { return messages.ItemAdded{Item: i.input.Value()} }
44+
itemName := i.input.Value()
45+
i.input.SetValue("")
46+
if i.editId == -1 {
47+
return i, func() tea.Msg { return messages.ItemAdded{Item: itemName} }
48+
}
49+
return i, func() tea.Msg { return messages.ItemEdited{Item: itemName, ItemID: i.editId} }
50+
case key.Matches(msg, keybinds.Keys.Back):
51+
return i, func() tea.Msg { return messages.DeactivateView{} }
4552
}
4653
}
4754

@@ -59,7 +66,7 @@ func (i *OptionsInput) SetInput(text string) {
5966
i.input.SetValue(text)
6067
}
6168

62-
func (i *OptionsInput) OnFocus(id ...int) {
69+
func (i *OptionsInput) OnFocus(id ...int64) {
6370
if len(id) > 0 {
6471
i.editId = id[0]
6572
}

internal/tui/messages/messages.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@ package messages
33
type ItemAdded struct {
44
Item string
55
}
6+
type ItemEdited struct {
7+
Item string
8+
ItemID int64
9+
}
610
type DeleteItem struct {
711
ItemID int64
812
}
13+
type DeactivateView struct{}

internal/tui/views/collections-view.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ func (c CollectionsView) Update(msg tea.Msg) (ViewInterface, tea.Cmd) {
4545
cmds = append(cmds, cmd)
4646
case messages.ItemAdded:
4747
c.manager.Create(context.Background(), msg.Item)
48+
case messages.ItemEdited:
49+
c.manager.Update(context.Background(), msg.ItemID, msg.Item)
4850
case messages.DeleteItem:
4951
c.manager.Delete(context.Background(), msg.ItemID)
5052
c.list.RefreshItems()

0 commit comments

Comments
 (0)