awstools: Fixed some bugs with the item view UI model

- The item view model is now being updated when the item itself is being updated
- Fixed a NPE when the item view model receives a nil item
This commit is contained in:
Leon Mika 2022-07-18 08:04:03 +10:00
parent 0f0bf70d01
commit cc7ead496f
4 changed files with 8 additions and 8 deletions

View file

@ -60,10 +60,7 @@ func (c *CommandController) Alias(commandName string) Command {
return events.SetError(errors.New("no such command: " + commandName)) return events.SetError(errors.New("no such command: " + commandName))
} }
if len(args) > 1 { return command(args)
return command(args[1:])
}
return command([]string{})
} }
} }

View file

@ -28,6 +28,7 @@ type Model struct {
root tea.Model root tea.Model
tableView *dynamotableview.Model tableView *dynamotableview.Model
itemView *dynamoitemview.Model
} }
func NewModel(rc *controllers.TableReadController, wc *controllers.TableWriteController, cc *commandctrl.CommandController) Model { func NewModel(rc *controllers.TableReadController, wc *controllers.TableWriteController, cc *commandctrl.CommandController) Model {
@ -122,6 +123,7 @@ func NewModel(rc *controllers.TableReadController, wc *controllers.TableWriteCon
tableSelect: tableSelect, tableSelect: tableSelect,
root: root, root: root,
tableView: dtv, tableView: dtv,
itemView: div,
} }
} }
@ -132,7 +134,7 @@ func (m Model) Init() tea.Cmd {
func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
switch msg := msg.(type) { switch msg := msg.(type) {
case controllers.ResultSetUpdated: case controllers.ResultSetUpdated:
m.tableView.Refresh() return m, m.tableView.Refresh()
case tea.KeyMsg: case tea.KeyMsg:
if !m.statusAndPrompt.InPrompt() && !m.tableSelect.Visible() { if !m.statusAndPrompt.InPrompt() && !m.tableSelect.Visible() {
switch msg.String() { switch msg.String() {

View file

@ -85,6 +85,7 @@ func (m *Model) Resize(w, h int) layout.ResizingModel {
func (m *Model) updateViewportToSelectedMessage() { func (m *Model) updateViewportToSelectedMessage() {
if m.selectedItem == nil { if m.selectedItem == nil {
m.viewport.SetContent("") m.viewport.SetContent("")
return
} }
viewportContent := &strings.Builder{} viewportContent := &strings.Builder{}

View file

@ -197,13 +197,13 @@ func (m *Model) selectedItem() (itemTableRow, bool) {
func (m *Model) postSelectedItemChanged() tea.Msg { func (m *Model) postSelectedItemChanged() tea.Msg {
item, ok := m.selectedItem() item, ok := m.selectedItem()
if !ok { if !ok {
return nil return dynamoitemview.NewItemSelected{ResultSet: item.resultSet, Item: nil}
} }
return dynamoitemview.NewItemSelected{ResultSet: item.resultSet, Item: item.item} return dynamoitemview.NewItemSelected{ResultSet: item.resultSet, Item: item.item}
} }
func (m *Model) Refresh() { func (m *Model) Refresh() tea.Cmd {
m.table.SetRows(m.rows) m.table.SetRows(m.rows)
return m.postSelectedItemChanged
} }