Skip to content

Commit f5fcaf9

Browse files
committed
Added positive feedback for all the required operations
1 parent 2a226e9 commit f5fcaf9

14 files changed

+69
-26
lines changed

src/main/kotlin/com/jetpackduba/gitnuro/git/TabState.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ class TabState @Inject constructor(
7777
title: String = "",
7878
subtitle: String = "",
7979
taskType: TaskType,
80-
positiveFeedbackText: String? = null,
80+
positiveFeedbackText: String?,
8181
// TODO For now have it always as false because the data refresh is cancelled even when the git process couldn't be cancelled
8282
isCancellable: Boolean = false,
8383
refreshEvenIfCrashes: Boolean = false,

src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/HistoryViewModel.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ class HistoryViewModel @Inject constructor(
8080
title = "History",
8181
subtitle = "Loading file history",
8282
taskType = TaskType.HISTORY_FILE,
83+
positiveFeedbackText = null,
8384
) { git ->
8485
this@HistoryViewModel.filePath = filePath
8586
_historyState.value = HistoryState.Loading(filePath)

src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/LogViewModel.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ class LogViewModel @Inject constructor(
163163
title = "Commit checkout",
164164
subtitle = "Checking out commit ${revCommit.name}",
165165
taskType = TaskType.CHECKOUT_COMMIT,
166+
positiveFeedbackText = "Commit checked out",
166167
) { git ->
167168
checkoutCommitUseCase(git, revCommit)
168169
}
@@ -173,6 +174,7 @@ class LogViewModel @Inject constructor(
173174
subtitle = "Reverting commit ${revCommit.name}",
174175
refreshEvenIfCrashes = true,
175176
taskType = TaskType.REVERT_COMMIT,
177+
positiveFeedbackText = "Commit reverted",
176178
) { git ->
177179
revertCommitUseCase(git, revCommit)
178180
}
@@ -182,6 +184,7 @@ class LogViewModel @Inject constructor(
182184
title = "Branch reset",
183185
subtitle = "Resetting branch to commit ${revCommit.shortName}",
184186
taskType = TaskType.RESET_TO_COMMIT,
187+
positiveFeedbackText = "Reset completed",
185188
) { git ->
186189
resetToCommitUseCase(git, revCommit, resetType = resetType)
187190
}
@@ -192,6 +195,7 @@ class LogViewModel @Inject constructor(
192195
subtitle = "Cherry-picking commit ${revCommit.shortName}",
193196
taskType = TaskType.CHERRY_PICK_COMMIT,
194197
refreshEvenIfCrashes = true,
198+
positiveFeedbackText = "Commit cherry-picked"
195199
) { git ->
196200
cherryPickCommitUseCase(git, revCommit)
197201
}
@@ -202,6 +206,7 @@ class LogViewModel @Inject constructor(
202206
subtitle = "Creating new branch \"$branch\" on commit ${revCommit.shortName}",
203207
refreshEvenIfCrashesInteractive = { it is CheckoutConflictException },
204208
taskType = TaskType.CREATE_BRANCH,
209+
positiveFeedbackText = "Branch \"$branch\" created",
205210
) { git ->
206211
createBranchOnCommitUseCase(git, branch, revCommit)
207212
}
@@ -211,6 +216,7 @@ class LogViewModel @Inject constructor(
211216
title = "New tag",
212217
subtitle = "Creating new tag \"$tag\" on commit ${revCommit.shortName}",
213218
taskType = TaskType.CREATE_TAG,
219+
positiveFeedbackText = "Tag created",
214220
) { git ->
215221
createTagOnCommitUseCase(git, tag, revCommit)
216222
}
@@ -369,6 +375,7 @@ class LogViewModel @Inject constructor(
369375
fun rebaseInteractive(revCommit: RevCommit) = tabState.safeProcessing(
370376
refreshType = RefreshType.REBASE_INTERACTIVE_STATE,
371377
taskType = TaskType.REBASE_INTERACTIVE,
378+
positiveFeedbackText = null,
372379
) { git ->
373380
startRebaseInteractiveUseCase(git, revCommit)
374381
}

src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/MenuViewModel.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class MenuViewModel @Inject constructor(
3434
refreshType = RefreshType.ALL_DATA,
3535
title = "Pulling",
3636
subtitle = "Pulling changes from the remote branch to the current branch",
37-
positiveFeedbackText = "Pull completed successfully",
37+
positiveFeedbackText = "Pull completed",
3838
refreshEvenIfCrashes = true,
3939
taskType = TaskType.PULL,
4040
) { git ->
@@ -48,6 +48,7 @@ class MenuViewModel @Inject constructor(
4848
isCancellable = false,
4949
refreshEvenIfCrashes = true,
5050
taskType = TaskType.FETCH,
51+
positiveFeedbackText = "Fetch all completed",
5152
) { git ->
5253
fetchAllBranchesUseCase(git)
5354
}
@@ -59,14 +60,15 @@ class MenuViewModel @Inject constructor(
5960
isCancellable = false,
6061
refreshEvenIfCrashes = true,
6162
taskType = TaskType.PUSH,
63+
positiveFeedbackText = "Push completed",
6264
) { git ->
6365
pushBranchUseCase(git, force, pushTags)
6466
}
6567

6668
fun stash() = tabState.safeProcessing(
6769
refreshType = RefreshType.UNCOMMITTED_CHANGES_AND_LOG,
6870
taskType = TaskType.STASH,
69-
positiveFeedbackText = "Changes have been stashed",
71+
positiveFeedbackText = "Changes stashed",
7072
) { git ->
7173
stashChangesUseCase(git, null)
7274
}
@@ -75,6 +77,7 @@ class MenuViewModel @Inject constructor(
7577
refreshType = RefreshType.UNCOMMITTED_CHANGES_AND_LOG,
7678
refreshEvenIfCrashes = true,
7779
taskType = TaskType.POP_STASH,
80+
positiveFeedbackText = "Stash popped",
7881
) { git ->
7982
popLastStashUseCase(git)
8083
}

src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/RebaseInteractiveViewModel.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ class RebaseInteractiveViewModel @Inject constructor(
6767
fun loadRebaseInteractiveData() = tabState.safeProcessing(
6868
refreshType = RefreshType.NONE,
6969
taskType = TaskType.REBASE_INTERACTIVE,// TODO Perhaps this should be more specific such as TaskType.LOAD_ABORT_REBASE
70+
positiveFeedbackText = null,
7071
) { git ->
7172
val state = getRepositoryStateUseCase(git)
7273

@@ -125,6 +126,7 @@ class RebaseInteractiveViewModel @Inject constructor(
125126
fun continueRebaseInteractive() = tabState.safeProcessing(
126127
refreshType = RefreshType.ALL_DATA,
127128
taskType = TaskType.REBASE_INTERACTIVE, // TODO Perhaps be more precise with the task type
129+
positiveFeedbackText = null,
128130
) { git ->
129131
resumeRebaseInteractiveUseCase(git, interactiveHandlerContinue)
130132
_rebaseState.value = RebaseInteractiveViewState.Loading
@@ -179,6 +181,7 @@ class RebaseInteractiveViewModel @Inject constructor(
179181
fun selectLine(line: RebaseLine) = tabState.safeProcessing(
180182
refreshType = RefreshType.NONE,
181183
taskType = TaskType.ABORT_REBASE, // TODO Perhaps be more precise with the task type
184+
positiveFeedbackText = null,
182185
) { git ->
183186
val fullCommit = getCommitFromRebaseLineUseCase(git, line.commit, line.shortMessage)
184187
tabState.newSelectedCommit(fullCommit)

src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/SharedBranchesViewModel.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class SharedBranchesViewModel @Inject constructor(
3434
title = "Branch merge",
3535
subtitle = "Merging branch ${ref.simpleName}",
3636
taskType = TaskType.MERGE_BRANCH,
37+
positiveFeedbackText = "Merged from \"${ref.simpleName}\"",
3738
) { git ->
3839
mergeBranchUseCase(git, ref, appSettingsRepository.ffMerge)
3940
}
@@ -43,6 +44,7 @@ class SharedBranchesViewModel @Inject constructor(
4344
title = "Branch delete",
4445
subtitle = "Deleting branch ${branch.simpleName}",
4546
taskType = TaskType.DELETE_BRANCH,
47+
positiveFeedbackText = "\"${branch.simpleName}\" deleted",
4648
) { git ->
4749
deleteBranchUseCase(git, branch)
4850
}
@@ -52,6 +54,7 @@ class SharedBranchesViewModel @Inject constructor(
5254
title = "Branch checkout",
5355
subtitle = "Checking out branch ${ref.simpleName}",
5456
taskType = TaskType.CHECKOUT_BRANCH,
57+
positiveFeedbackText = "\"${ref.simpleName}\" checked out",
5558
) { git ->
5659
checkoutRefUseCase(git, ref)
5760
}
@@ -61,6 +64,7 @@ class SharedBranchesViewModel @Inject constructor(
6164
title = "Branch rebase",
6265
subtitle = "Rebasing branch ${ref.simpleName}",
6366
taskType = TaskType.REBASE_BRANCH,
67+
positiveFeedbackText = "\"${ref.simpleName}\" rebased",
6468
) { git ->
6569
rebaseBranchUseCase(git, ref)
6670
}

src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/SharedRemotesViewModel.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,15 @@ class SharedRemotesViewModel @Inject constructor(
3131
title = "Deleting remote branch",
3232
subtitle = "Remote branch ${ref.simpleName} will be deleted from the remote",
3333
taskType = TaskType.DELETE_REMOTE_BRANCH,
34+
positiveFeedbackText = "Remote branch \"${ref.simpleName}\" deleted",
3435
) { git ->
3536
deleteRemoteBranchUseCase(git, ref)
3637
}
3738

3839
override fun checkoutRemoteBranch(remoteBranch: Ref) = tabState.safeProcessing(
3940
refreshType = RefreshType.ALL_DATA,
4041
taskType = TaskType.CHECKOUT_REMOTE_BRANCH,
42+
positiveFeedbackText = "\"${remoteBranch.simpleName}\" checked out",
4143
) { git ->
4244
checkoutRefUseCase(git, remoteBranch)
4345
}
@@ -47,6 +49,7 @@ class SharedRemotesViewModel @Inject constructor(
4749
title = "Push",
4850
subtitle = "Pushing current branch to ${branch.simpleName}",
4951
taskType = TaskType.PUSH_TO_BRANCH,
52+
positiveFeedbackText = "Pushed to \"${branch.simpleName}\"",
5053
) { git ->
5154
pushToSpecificBranchUseCase(
5255
git = git,
@@ -61,6 +64,7 @@ class SharedRemotesViewModel @Inject constructor(
6164
title = "Pull",
6265
subtitle = "Pulling changes from ${branch.simpleName} to the current branch",
6366
taskType = TaskType.PULL_FROM_BRANCH,
67+
positiveFeedbackText = "Pulled from \"${branch.simpleName}\"",
6468
) { git ->
6569
pullFromSpecificBranchUseCase(
6670
git = git,

src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/SharedStashViewModel.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ class SharedStashViewModel @Inject constructor(
2929
refreshType = RefreshType.UNCOMMITTED_CHANGES_AND_LOG,
3030
refreshEvenIfCrashes = true,
3131
taskType = TaskType.APPLY_STASH,
32+
positiveFeedbackText = "Stash applied",
3233
) { git ->
3334
applyStashUseCase(git, stashInfo)
3435
}
@@ -37,6 +38,7 @@ class SharedStashViewModel @Inject constructor(
3738
refreshType = RefreshType.UNCOMMITTED_CHANGES_AND_LOG,
3839
refreshEvenIfCrashes = true,
3940
taskType = TaskType.POP_STASH,
41+
positiveFeedbackText = "Stash popped",
4042
) { git ->
4143
popStashUseCase(git, stash)
4244

@@ -46,6 +48,7 @@ class SharedStashViewModel @Inject constructor(
4648
override fun deleteStash(stash: RevCommit) = tabState.safeProcessing(
4749
refreshType = RefreshType.STASHES,
4850
taskType = TaskType.DELETE_STASH,
51+
positiveFeedbackText = "Stash deleted",
4952
) { git ->
5053
deleteStashUseCase(git, stash)
5154

src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/SharedTagsViewModel.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ class SharedTagsViewModel @Inject constructor(
2222
title = "Tag delete",
2323
subtitle = "Deleting tag ${tag.simpleName}",
2424
taskType = TaskType.DELETE_TAG,
25+
positiveFeedbackText = "Tag \"${tag.simpleName}\" deleted",
2526
) { git ->
2627
deleteTagUseCase(git, tag)
2728
}

src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/StatusViewModel.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,13 +216,15 @@ class StatusViewModel @Inject constructor(
216216
fun unstageAll() = tabState.safeProcessing(
217217
refreshType = RefreshType.UNCOMMITTED_CHANGES,
218218
taskType = TaskType.UNSTAGE_ALL_FILES,
219+
positiveFeedbackText = null,
219220
) { git ->
220221
unstageAllUseCase(git)
221222
}
222223

223224
fun stageAll() = tabState.safeProcessing(
224225
refreshType = RefreshType.UNCOMMITTED_CHANGES,
225226
taskType = TaskType.STAGE_ALL_FILES,
227+
positiveFeedbackText = null,
226228
) { git ->
227229
stageAllUseCase(git)
228230
}
@@ -347,6 +349,7 @@ class StatusViewModel @Inject constructor(
347349
fun commit(message: String) = tabState.safeProcessing(
348350
refreshType = RefreshType.ALL_DATA,
349351
taskType = TaskType.DO_COMMIT,
352+
positiveFeedbackText = "New commit added",
350353
) { git ->
351354
val amend = isAmend.value
352355

@@ -401,6 +404,7 @@ class StatusViewModel @Inject constructor(
401404
fun continueRebase(message: String) = tabState.safeProcessing(
402405
refreshType = RefreshType.ALL_DATA,
403406
taskType = TaskType.CONTINUE_REBASE,
407+
positiveFeedbackText = null,
404408
) { git ->
405409
val repositoryState = sharedRepositoryStateManager.repositoryState.value
406410
val rebaseInteractiveState = sharedRepositoryStateManager.rebaseInteractiveState.value
@@ -424,20 +428,23 @@ class StatusViewModel @Inject constructor(
424428
fun abortRebase() = tabState.safeProcessing(
425429
refreshType = RefreshType.ALL_DATA,
426430
taskType = TaskType.ABORT_REBASE,
431+
positiveFeedbackText = "Rebase aborted",
427432
) { git ->
428433
abortRebaseUseCase(git)
429434
}
430435

431436
fun skipRebase() = tabState.safeProcessing(
432437
refreshType = RefreshType.ALL_DATA,
433438
taskType = TaskType.SKIP_REBASE,
439+
positiveFeedbackText = null,
434440
) { git ->
435441
skipRebaseUseCase(git)
436442
}
437443

438444
fun resetRepoState() = tabState.safeProcessing(
439445
refreshType = RefreshType.ALL_DATA,
440446
taskType = TaskType.RESET_REPO_STATE,
447+
positiveFeedbackText = "Repository state has been reset",
441448
) { git ->
442449
resetRepositoryStateUseCase(git)
443450
}

0 commit comments

Comments
 (0)