github.com/andrewrech/lazygit@v0.8.1/pkg/gui/updates.go (about)

     1  package gui
     2  
     3  import "github.com/jesseduffield/gocui"
     4  
     5  func (gui *Gui) showUpdatePrompt(newVersion string) error {
     6  	title := "New version available!"
     7  	message := "Download latest version? (enter/esc)"
     8  	currentView := gui.g.CurrentView()
     9  	return gui.createConfirmationPanel(gui.g, currentView, title, message, func(g *gocui.Gui, v *gocui.View) error {
    10  		gui.startUpdating(newVersion)
    11  		return nil
    12  	}, nil)
    13  }
    14  
    15  func (gui *Gui) onUserUpdateCheckFinish(newVersion string, err error) error {
    16  	if err != nil {
    17  		return gui.createErrorPanel(gui.g, err.Error())
    18  	}
    19  	if newVersion == "" {
    20  		return gui.createErrorPanel(gui.g, "New version not found")
    21  	}
    22  	return gui.showUpdatePrompt(newVersion)
    23  }
    24  
    25  func (gui *Gui) onBackgroundUpdateCheckFinish(newVersion string, err error) error {
    26  	if err != nil {
    27  		// ignoring the error for now so that I'm not annoying users
    28  		gui.Log.Error(err.Error())
    29  		return nil
    30  	}
    31  	if newVersion == "" {
    32  		return nil
    33  	}
    34  	if gui.Config.GetUserConfig().Get("update.method") == "background" {
    35  		gui.startUpdating(newVersion)
    36  		return nil
    37  	}
    38  	return gui.showUpdatePrompt(newVersion)
    39  }
    40  
    41  func (gui *Gui) startUpdating(newVersion string) {
    42  	gui.State.Updating = true
    43  	gui.statusManager.addWaitingStatus("updating")
    44  	gui.Updater.Update(newVersion, gui.onUpdateFinish)
    45  }
    46  
    47  func (gui *Gui) onUpdateFinish(err error) error {
    48  	gui.State.Updating = false
    49  	gui.statusManager.removeStatus("updating")
    50  	if err := gui.renderString(gui.g, "appStatus", ""); err != nil {
    51  		return err
    52  	}
    53  	if err != nil {
    54  		return gui.createErrorPanel(gui.g, "Update failed: "+err.Error())
    55  	}
    56  	return nil
    57  }
    58  
    59  func (gui *Gui) createUpdateQuitConfirmation(g *gocui.Gui, v *gocui.View) error {
    60  	title := "Currently Updating"
    61  	message := "An update is in progress. Are you sure you want to quit?"
    62  	return gui.createConfirmationPanel(gui.g, v, title, message, func(g *gocui.Gui, v *gocui.View) error {
    63  		return gocui.ErrQuit
    64  	}, nil)
    65  }