feat: queued mutations while reloading or offline
This commit is contained in:
23
pr_editor.go
23
pr_editor.go
@@ -100,8 +100,11 @@ func (m App) pullRequestUpdateUnavailable() string {
|
||||
if m.loading {
|
||||
return "pull request update unavailable while PR data is refreshing"
|
||||
}
|
||||
if m.details.FromCache {
|
||||
return "pull request update unavailable from an offline cached snapshot"
|
||||
if m.details.FromCache && m.mutations == nil {
|
||||
return "offline mutation queue is unavailable"
|
||||
}
|
||||
if m.mutations != nil && m.mutations.loadErr != nil {
|
||||
return "mutation queue is unavailable: " + m.mutations.loadErr.Error()
|
||||
}
|
||||
if _, ok := m.service.(GitHubPullRequestWriteService); !ok {
|
||||
return "configured GitHub service does not support pull request updates"
|
||||
@@ -302,6 +305,21 @@ func (m App) positionPREditHardwareCursor(scroll, viewportHeight int) {
|
||||
}
|
||||
|
||||
func (m App) submitPREdit() tea.Cmd {
|
||||
if m.mutations != nil {
|
||||
operation := mutationOperation{
|
||||
Kind: mutationPREdit, Owner: m.details.Owner, Repository: m.details.Repository,
|
||||
Number: m.details.Number, PRID: m.details.ID, Viewer: m.details.ViewerLogin,
|
||||
Original: m.prEditOriginal, Update: m.prEditMetadata(),
|
||||
Permissions: m.details.Permissions,
|
||||
}
|
||||
if m.editingMutationID != "" {
|
||||
if existing, ok := m.mutations.get(m.editingMutationID); ok {
|
||||
operation.ID, operation.EnqueuedAt = existing.ID, existing.EnqueuedAt
|
||||
return m.replaceMutation(operation)
|
||||
}
|
||||
}
|
||||
return m.enqueueMutation(operation)
|
||||
}
|
||||
writer := m.service.(GitHubPullRequestWriteService)
|
||||
peopleWriter := m.service.(GitHubPullRequestPeopleWriteService)
|
||||
id := m.details.ID
|
||||
@@ -447,6 +465,7 @@ func (m *App) applyPREditPeople(people PullRequestPeople) {
|
||||
}
|
||||
|
||||
func (m *App) clearPREdit() {
|
||||
m.editingMutationID = ""
|
||||
m.prEditField = 0
|
||||
m.prEditEditors = [prEditFieldCount]textEditor{}
|
||||
m.prEditOriginal = PullRequestMetadata{}
|
||||
|
||||
Reference in New Issue
Block a user