diff --git a/pkg/commands/docker.go b/pkg/commands/docker.go index 15407318..5220192d 100644 --- a/pkg/commands/docker.go +++ b/pkg/commands/docker.go @@ -330,11 +330,15 @@ func (c *DockerCommand) GetImages() ([]*Image, error) { } nameParts := strings.Split(name, ":") + tag := "" + if len(nameParts) > 1 { + tag = nameParts[1] + } ownImages[i] = &Image{ ID: image.ID, Name: nameParts[0], - Tag: nameParts[1], + Tag: tag, Image: image, Client: c.Client, OSCommand: c.OSCommand, diff --git a/pkg/gui/containers_panel.go b/pkg/gui/containers_panel.go index 3a511151..b1362aa3 100644 --- a/pkg/gui/containers_panel.go +++ b/pkg/gui/containers_panel.go @@ -355,24 +355,30 @@ func (gui *Gui) handleContainersRemoveMenu(g *gocui.Gui, v *gocui.View) error { return nil } configOptions := options[index].configOptions - if cerr := container.Remove(configOptions); cerr != nil { - var originalErr commands.ComplexError - if xerrors.As(cerr, &originalErr) { - if originalErr.Code == commands.MustStopContainer { - return gui.createConfirmationPanel(gui.g, v, gui.Tr.SLocalize("Confirm"), gui.Tr.SLocalize("mustForceToRemoveContainer"), func(g *gocui.Gui, v *gocui.View) error { - configOptions.Force = true - if err := container.Remove(configOptions); err != nil { - return err - } - return gui.refreshContainersAndServices() - }, nil) - } - } else { - return gui.createErrorPanel(gui.g, cerr.Error()) - } - } - return gui.refreshContainersAndServices() + return gui.WithWaitingStatus(gui.Tr.SLocalize("RemovingStatus"), func() error { + if cerr := container.Remove(configOptions); cerr != nil { + var originalErr commands.ComplexError + if xerrors.As(cerr, &originalErr) { + if originalErr.Code == commands.MustStopContainer { + return gui.createConfirmationPanel(gui.g, v, gui.Tr.SLocalize("Confirm"), gui.Tr.SLocalize("mustForceToRemoveContainer"), func(g *gocui.Gui, v *gocui.View) error { + return gui.WithWaitingStatus(gui.Tr.SLocalize("RemovingStatus"), func() error { + configOptions.Force = true + if err := container.Remove(configOptions); err != nil { + return err + } + return gui.refreshContainersAndServices() + }) + }, nil) + } + } else { + return gui.createErrorPanel(gui.g, cerr.Error()) + } + } + + return gui.refreshContainersAndServices() + }) + } return gui.createMenu("", options, len(options), handleMenuPress) diff --git a/pkg/gui/services_panel.go b/pkg/gui/services_panel.go index 6b72e587..5d2fd720 100644 --- a/pkg/gui/services_panel.go +++ b/pkg/gui/services_panel.go @@ -219,11 +219,13 @@ func (gui *Gui) handleServiceRemoveMenu(g *gocui.Gui, v *gocui.View) error { if options[index].command == "" { return nil } - if err := gui.OSCommand.RunCommand(options[index].command); err != nil { - return gui.createErrorPanel(gui.g, err.Error()) - } + return gui.WithWaitingStatus(gui.Tr.SLocalize("RemovingStatus"), func() error { + if err := gui.OSCommand.RunCommand(options[index].command); err != nil { + return gui.createErrorPanel(gui.g, err.Error()) + } - return gui.refreshContainersAndServices() + return gui.refreshContainersAndServices() + }) } return gui.createMenu("", options, len(options), handleMenuPress) diff --git a/pkg/i18n/english.go b/pkg/i18n/english.go index 1b52cf0c..581e5b72 100644 --- a/pkg/i18n/english.go +++ b/pkg/i18n/english.go @@ -784,6 +784,10 @@ func addEnglish(i18nObject *i18n.Bundle) error { ID: "StoppingStatus", Other: "stopping", }, + &i18n.Message{ + ID: "RemovingStatus", + Other: "removing", + }, &i18n.Message{ ID: "remove", Other: "remove",