diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2020-02-16 08:59:48 +1100 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2020-02-16 09:57:49 +1100 |
commit | 5b1f60b7eb2b2a73f582b2add0843cc26068bae5 (patch) | |
tree | 0d87906ef5b998c35c0309352ecbdcc80ef9881b /pkg/gui/reset_menu_panel.go | |
parent | 2e1344f6118e9fb9173c1b4ea7225e4766167c06 (diff) |
refactor create reset menu logic
Diffstat (limited to 'pkg/gui/reset_menu_panel.go')
-rw-r--r-- | pkg/gui/reset_menu_panel.go | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/pkg/gui/reset_menu_panel.go b/pkg/gui/reset_menu_panel.go new file mode 100644 index 000000000..10f2705dc --- /dev/null +++ b/pkg/gui/reset_menu_panel.go @@ -0,0 +1,43 @@ +package gui + +import ( + "fmt" + + "github.com/fatih/color" +) + +func (gui *Gui) createResetMenu(ref string) error { + strengths := []string{"soft", "mixed", "hard"} + menuItems := make([]*menuItem, len(strengths)) + for i, strength := range strengths { + innerStrength := strength + menuItems[i] = &menuItem{ + displayStrings: []string{ + fmt.Sprintf("%s reset", strength), + color.New(color.FgRed).Sprint( + fmt.Sprintf("reset --%s %s", strength, ref), + ), + }, + onPress: func() error { + if err := gui.GitCommand.ResetToCommit(ref, innerStrength); err != nil { + return err + } + + if err := gui.refreshCommits(gui.g); err != nil { + return err + } + if err := gui.refreshFiles(); err != nil { + return err + } + if err := gui.resetOrigin(gui.getCommitsView()); err != nil { + return err + } + + gui.State.Panels.Commits.SelectedLine = 0 + return gui.handleCommitSelect(gui.g, gui.getCommitsView()) + }, + } + } + + return gui.createMenu(fmt.Sprintf("%s %s", gui.Tr.SLocalize("resetTo"), ref), menuItems, createMenuOptions{showCancel: true}) +} |