mirror of
https://github.com/jesseduffield/lazygit.git
synced 2024-11-28 09:08:41 +02:00
Add GetItemOperation/SetItemOperation/ClearItemOperation to IStateAccessor
Not used by anything yet; committing this separately in the interest of having smaller independent commits.
This commit is contained in:
parent
cc9a20c4ab
commit
9d55d71fdd
@ -110,6 +110,12 @@ type Gui struct {
|
|||||||
// lazygit was opened in, or if we'll retain the one we're currently in.
|
// lazygit was opened in, or if we'll retain the one we're currently in.
|
||||||
RetainOriginalDir bool
|
RetainOriginalDir bool
|
||||||
|
|
||||||
|
// stores long-running operations associated with items (e.g. when a branch
|
||||||
|
// is being pushed). At the moment the rule is to use an item operation when
|
||||||
|
// we need to talk to the remote.
|
||||||
|
itemOperations map[string]types.ItemOperation
|
||||||
|
itemOperationsMutex *deadlock.Mutex
|
||||||
|
|
||||||
PrevLayout PrevLayout
|
PrevLayout PrevLayout
|
||||||
|
|
||||||
// this is the initial dir we are in upon opening lazygit. We hold onto this
|
// this is the initial dir we are in upon opening lazygit. We hold onto this
|
||||||
@ -180,6 +186,27 @@ func (self *StateAccessor) SetRetainOriginalDir(value bool) {
|
|||||||
self.gui.RetainOriginalDir = value
|
self.gui.RetainOriginalDir = value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (self *StateAccessor) GetItemOperation(item types.HasUrn) types.ItemOperation {
|
||||||
|
self.gui.itemOperationsMutex.Lock()
|
||||||
|
defer self.gui.itemOperationsMutex.Unlock()
|
||||||
|
|
||||||
|
return self.gui.itemOperations[item.URN()]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *StateAccessor) SetItemOperation(item types.HasUrn, operation types.ItemOperation) {
|
||||||
|
self.gui.itemOperationsMutex.Lock()
|
||||||
|
defer self.gui.itemOperationsMutex.Unlock()
|
||||||
|
|
||||||
|
self.gui.itemOperations[item.URN()] = operation
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *StateAccessor) ClearItemOperation(item types.HasUrn) {
|
||||||
|
self.gui.itemOperationsMutex.Lock()
|
||||||
|
defer self.gui.itemOperationsMutex.Unlock()
|
||||||
|
|
||||||
|
delete(self.gui.itemOperations, item.URN())
|
||||||
|
}
|
||||||
|
|
||||||
// we keep track of some stuff from one render to the next to see if certain
|
// we keep track of some stuff from one render to the next to see if certain
|
||||||
// things have changed
|
// things have changed
|
||||||
type PrevLayout struct {
|
type PrevLayout struct {
|
||||||
@ -473,6 +500,9 @@ func NewGui(
|
|||||||
},
|
},
|
||||||
InitialDir: initialDir,
|
InitialDir: initialDir,
|
||||||
afterLayoutFuncs: make(chan func() error, 1000),
|
afterLayoutFuncs: make(chan func() error, 1000),
|
||||||
|
|
||||||
|
itemOperations: make(map[string]types.ItemOperation),
|
||||||
|
itemOperationsMutex: &deadlock.Mutex{},
|
||||||
}
|
}
|
||||||
|
|
||||||
gui.PopupHandler = popup.NewPopupHandler(
|
gui.PopupHandler = popup.NewPopupHandler(
|
||||||
|
@ -265,6 +265,24 @@ type Mutexes struct {
|
|||||||
PtyMutex *deadlock.Mutex
|
PtyMutex *deadlock.Mutex
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// A long-running operation associated with an item. For example, we'll show
|
||||||
|
// that a branch is being pushed from so that there's visual feedback about
|
||||||
|
// what's happening and so that you can see multiple branches' concurrent
|
||||||
|
// operations
|
||||||
|
type ItemOperation int
|
||||||
|
|
||||||
|
const (
|
||||||
|
ItemOperationNone ItemOperation = iota
|
||||||
|
ItemOperationPushing
|
||||||
|
ItemOperationPulling
|
||||||
|
ItemOperationFastForwarding
|
||||||
|
ItemOperationDeleting
|
||||||
|
)
|
||||||
|
|
||||||
|
type HasUrn interface {
|
||||||
|
URN() string
|
||||||
|
}
|
||||||
|
|
||||||
type IStateAccessor interface {
|
type IStateAccessor interface {
|
||||||
GetRepoPathStack() *utils.StringStack
|
GetRepoPathStack() *utils.StringStack
|
||||||
GetRepoState() IRepoStateAccessor
|
GetRepoState() IRepoStateAccessor
|
||||||
@ -277,6 +295,9 @@ type IStateAccessor interface {
|
|||||||
SetShowExtrasWindow(bool)
|
SetShowExtrasWindow(bool)
|
||||||
GetRetainOriginalDir() bool
|
GetRetainOriginalDir() bool
|
||||||
SetRetainOriginalDir(bool)
|
SetRetainOriginalDir(bool)
|
||||||
|
GetItemOperation(item HasUrn) ItemOperation
|
||||||
|
SetItemOperation(item HasUrn, operation ItemOperation)
|
||||||
|
ClearItemOperation(item HasUrn)
|
||||||
}
|
}
|
||||||
|
|
||||||
type IRepoStateAccessor interface {
|
type IRepoStateAccessor interface {
|
||||||
|
Loading…
Reference in New Issue
Block a user