diff options
Diffstat (limited to 'pkg/gui/files_panel.go')
-rw-r--r-- | pkg/gui/files_panel.go | 62 |
1 files changed, 46 insertions, 16 deletions
diff --git a/pkg/gui/files_panel.go b/pkg/gui/files_panel.go index 95b4f80a4..7942e421b 100644 --- a/pkg/gui/files_panel.go +++ b/pkg/gui/files_panel.go @@ -379,31 +379,61 @@ func (gui *Gui) catSelectedFile(g *gocui.Gui) (string, error) { } func (gui *Gui) pullFiles(g *gocui.Gui, v *gocui.View) error { - gui.createMessagePanel(g, v, "", gui.Tr.SLocalize("PullWait")) + if err := gui.createMessagePanel(gui.g, v, "", gui.Tr.SLocalize("PullWait")); err != nil { + return err + } go func() { - if err := gui.GitCommand.Pull(); err != nil { - gui.createErrorPanel(g, err.Error()) - } else { - gui.closeConfirmationPrompt(g) - gui.refreshCommits(g) - gui.refreshStatus(g) + unamePassOpend := false + err := gui.GitCommand.Pull(func(passOrUname string) string { + unamePassOpend = true + return gui.waitForPassUname(g, v, passOrUname) + }) + if err != nil { + errMessage := err.Error() + if errMessage == "exit status 128" { + errMessage = gui.Tr.SLocalize("PassUnameWrong") + } + _ = gui.createErrorPanel(g, errMessage) + } + if unamePassOpend { + _, _ = g.SetViewOnBottom("pushPassUname") + _ = g.DeleteView("pushPassUname") + } + if err == nil { + _ = gui.closeConfirmationPrompt(g) + _ = gui.refreshCommits(g) + _ = gui.refreshStatus(g) } gui.refreshFiles(g) }() return nil } -func (gui *Gui) pushWithForceFlag(currentView *gocui.View, force bool) error { - if err := gui.createMessagePanel(gui.g, currentView, "", gui.Tr.SLocalize("PushWait")); err != nil { +func (gui *Gui) pushWithForceFlag(g *gocui.Gui, v *gocui.View, force bool) error { + if err := gui.createMessagePanel(g, v, "", gui.Tr.SLocalize("PushWait")); err != nil { return err } go func() { + unamePassOpend := false branchName := gui.State.Branches[0].Name - if err := gui.GitCommand.Push(branchName, force); err != nil { - _ = gui.createErrorPanel(gui.g, err.Error()) - } else { - _ = gui.closeConfirmationPrompt(gui.g) - _ = gui.refreshSidePanels(gui.g) + err := gui.GitCommand.Push(branchName, force, func(passOrUname string) string { + unamePassOpend = true + return gui.waitForPassUname(g, v, passOrUname) + }) + if err != nil { + errMessage := err.Error() + if errMessage == "exit status 128" { + errMessage = gui.Tr.SLocalize("PassUnameWrong") + } + _ = gui.createErrorPanel(g, errMessage) + } + if unamePassOpend { + _, _ = g.SetViewOnBottom("pushPassUname") + _ = g.DeleteView("pushPassUname") + } + if err == nil { + _ = gui.closeConfirmationPrompt(g) + _ = gui.refreshSidePanels(g) } }() return nil @@ -413,10 +443,10 @@ func (gui *Gui) pushFiles(g *gocui.Gui, v *gocui.View) error { // if we have pullables we'll ask if the user wants to force push _, pullables := gui.GitCommand.GetCurrentBranchUpstreamDifferenceCount() if pullables == "?" || pullables == "0" { - return gui.pushWithForceFlag(v, false) + return gui.pushWithForceFlag(g, v, false) } err := gui.createConfirmationPanel(g, nil, gui.Tr.SLocalize("ForcePush"), gui.Tr.SLocalize("ForcePushPrompt"), func(g *gocui.Gui, v *gocui.View) error { - return gui.pushWithForceFlag(v, true) + return gui.pushWithForceFlag(g, v, true) }, nil) return err } |