summaryrefslogtreecommitdiffstats
path: root/pkg/gui/files_panel.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/gui/files_panel.go')
-rw-r--r--pkg/gui/files_panel.go62
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
}