summaryrefslogtreecommitdiff
path: root/pkg/gui/mainview.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/gui/mainview.go')
-rw-r--r--pkg/gui/mainview.go40
1 files changed, 22 insertions, 18 deletions
diff --git a/pkg/gui/mainview.go b/pkg/gui/mainview.go
index 6cd43bb..8ee31ba 100644
--- a/pkg/gui/mainview.go
+++ b/pkg/gui/mainview.go
@@ -231,29 +231,33 @@ func (gui *Gui) removeFromQueue(entity *git.RepoEntity) error {
// this function starts the queue and updates the gui with the result of an
// operation
func (gui *Gui) startQueue(g *gocui.Gui, v *gocui.View) error {
- go func(gui_go *Gui, g_go *gocui.Gui) {
- for {
- job, finished, err := gui_go.State.Queue.StartNext()
+ go func(gui_go *Gui) {
+ fails := gui_go.State.Queue.StartJobsAsync()
+ gui_go.State.Queue = git.CreateJobQueue()
+ for j, err := range fails {
+ if err == git.ErrAuthenticationRequired {
+ j.Entity.SetState(git.Paused)
+ gui_go.State.FailoverQueue.AddJob(j)
+ }
+ }
+ }(gui)
+ return nil
+}
+func (gui *Gui) submitCredentials(g *gocui.Gui, v *gocui.View) error {
+ if is, j := gui.State.FailoverQueue.IsInTheQueue(gui.getSelectedRepository()); is {
+ if j.Entity.State() == git.Paused {
+ gui.State.FailoverQueue.RemoveFromQueue(j.Entity)
+ err := gui.openAuthenticationView(g, gui.State.Queue, j, v.Name())
if err != nil {
- if err == git.ErrAuthenticationRequired {
- // pause the job, so it will be indicated to being blocking
- job.Entity.SetState(git.Paused)
- err := gui_go.openAuthenticationView(g, gui_go.State.Queue, job, v.Name())
- if err != nil {
- log.Warn(err.Error())
- return
- }
- }
- return
- // with not returning here, we simply ignore and continue
+ log.Warn(err.Error())
+ return err
}
- // if queue is finished simply return from this goroutine
- if finished {
- return
+ if isnt, _ := gui.State.Queue.IsInTheQueue(j.Entity); !isnt {
+ gui.State.FailoverQueue.AddJob(j)
}
}
- }(gui, g)
+ }
return nil
}