ctrlret: replaced return types of controllers from tea.Cmd to tea.Msg

This dramatically cuts downs the number of closures.
This commit is contained in:
Leon Mika 2022-08-18 21:39:13 +10:00
parent 931b11cd0d
commit 5b6bf1f0ae
17 changed files with 472 additions and 562 deletions

View file

@ -39,26 +39,24 @@ func (c *SSMController) Fetch() tea.Cmd {
}
}
func (c *SSMController) ChangePrefix(newPrefix string) tea.Cmd {
return func() tea.Msg {
res, err := c.service.List(context.Background(), newPrefix)
if err != nil {
return events.Error(err)
}
func (c *SSMController) ChangePrefix(newPrefix string) tea.Msg {
res, err := c.service.List(context.Background(), newPrefix)
if err != nil {
return events.Error(err)
}
c.mutex.Lock()
defer c.mutex.Unlock()
c.prefix = newPrefix
c.mutex.Lock()
defer c.mutex.Unlock()
c.prefix = newPrefix
return NewParameterListMsg{
Prefix: c.prefix,
Parameters: res,
}
return NewParameterListMsg{
Prefix: c.prefix,
Parameters: res,
}
}
func (c *SSMController) Clone(param models.SSMParameter) tea.Cmd {
return events.PromptForInput("New key: ", func(value string) tea.Cmd {
func (c *SSMController) Clone(param models.SSMParameter) tea.Msg {
return events.PromptForInput("New key: ", func(value string) tea.Msg {
return func() tea.Msg {
ctx := context.Background()
if err := c.service.Clone(ctx, param, value); err != nil {
@ -78,23 +76,21 @@ func (c *SSMController) Clone(param models.SSMParameter) tea.Cmd {
})
}
func (c *SSMController) DeleteParameter(param models.SSMParameter) tea.Cmd {
return events.Confirm("delete parameter? ", func() tea.Cmd {
return func() tea.Msg {
ctx := context.Background()
if err := c.service.Delete(ctx, param); err != nil {
return events.Error(err)
}
func (c *SSMController) DeleteParameter(param models.SSMParameter) tea.Msg {
return events.Confirm("delete parameter? ", func() tea.Msg {
ctx := context.Background()
if err := c.service.Delete(ctx, param); err != nil {
return events.Error(err)
}
res, err := c.service.List(context.Background(), c.prefix)
if err != nil {
return events.Error(err)
}
res, err := c.service.List(context.Background(), c.prefix)
if err != nil {
return events.Error(err)
}
return NewParameterListMsg{
Prefix: c.prefix,
Parameters: res,
}
return NewParameterListMsg{
Prefix: c.prefix,
Parameters: res,
}
})
}

View file

@ -32,17 +32,17 @@ func NewModel(controller *controllers.SSMController, cmdController *commandctrl.
cmdController.AddCommands(&commandctrl.CommandContext{
Commands: map[string]commandctrl.Command{
"clone": func(args []string) tea.Cmd {
"clone": func(args []string) tea.Msg {
if currentParam := ssmList.CurrentParameter(); currentParam != nil {
return controller.Clone(*currentParam)
}
return events.SetError(errors.New("no parameter selected"))
return events.Error(errors.New("no parameter selected"))
},
"delete": func(args []string) tea.Cmd {
"delete": func(args []string) tea.Msg {
if currentParam := ssmList.CurrentParameter(); currentParam != nil {
return controller.DeleteParameter(*currentParam)
}
return events.SetError(errors.New("no parameter selected"))
return events.Error(errors.New("no parameter selected"))
},
},
})
@ -75,7 +75,7 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
switch msg.String() {
// TEMP
case ":":
return m, m.cmdController.Prompt()
return m, func() tea.Msg { return m.cmdController.Prompt() }
// END TEMP
case "ctrl+c", "q":