Skip to content

Commit

Permalink
feat: When cancelling the uploading transfer, we're going back to Imp…
Browse files Browse the repository at this point in the history
…ortFiles instead of closing Activity
  • Loading branch information
KevinBoulongne committed Dec 17, 2024
1 parent 7bdaedf commit 5a85166
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ fun NewTransferNavHost(navController: NavHostController, closeActivity: () -> Un
navController.navigate(UploadSuccessDestination(args.transferType, transferUrl))
},
navigateToUploadError = { navController.navigate(UploadErrorDestination) },
closeActivity = closeActivity,
navigateBackToImportFiles = { navController.popBackStack() },
)
}
composable<UploadSuccessDestination> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,10 @@ private fun HandleSendActionResult(

LaunchedEffect(getSendActionResult()) {
when (val actionResult = getSendActionResult()) {
is SendActionResult.Success -> navigateToUploadProgress(transferType(), actionResult.totalSize)
is SendActionResult.Success -> {
resetSendActionResult()
navigateToUploadProgress(transferType(), actionResult.totalSize)
}
is SendActionResult.Failure -> {
snackbarHostState.showSnackbar(context.getString(R.string.errorUnknown))
resetSendActionResult()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ fun UploadProgressScreen(
totalSizeInBytes: Long,
navigateToUploadSuccess: (String) -> Unit,
navigateToUploadError: () -> Unit,
closeActivity: () -> Unit,
navigateBackToImportFiles: () -> Unit,
uploadProgressViewModel: UploadProgressViewModel = hiltViewModel<UploadProgressViewModel>(),
) {
val uiState by uploadProgressViewModel.transferProgressUiState.collectAsStateWithLifecycle()
Expand All @@ -66,18 +66,15 @@ fun UploadProgressScreen(
uploadProgressViewModel.trackUploadProgress()
}

HandleProgressState({ uiState }, navigateToUploadSuccess, navigateToUploadError)
HandleProgressState({ uiState }, navigateToUploadSuccess, navigateToUploadError, navigateBackToImportFiles)

UploadProgressScreen(
progressState = { uiState },
isNetworkAvailable = { isNetworkAvailable },
totalSizeInBytes = totalSizeInBytes,
showBottomSheet = GetSetCallbacks(get = { showBottomSheet }, set = { showBottomSheet = it }),
adScreenType = adScreenType,
onCancel = {
uploadProgressViewModel.cancelUpload()
closeActivity()
}
onCancel = { uploadProgressViewModel.cancelUpload() }
)
}

Expand All @@ -86,12 +83,14 @@ private fun HandleProgressState(
uiState: () -> UploadProgressUiState,
navigateToUploadSuccess: (String) -> Unit,
navigateToUploadError: () -> Unit,
navigateBackToImportFiles: () -> Unit,
) {
val currentUiState = uiState()
LaunchedEffect(uiState()) {
when (currentUiState) {
is UploadProgressUiState.Success -> navigateToUploadSuccess(currentUiState.transferUrl)
is UploadProgressUiState.Error -> navigateToUploadError()
is UploadProgressUiState.Cancel -> navigateBackToImportFiles()
else -> Unit
}
}
Expand Down Expand Up @@ -129,7 +128,15 @@ private fun UploadProgressScreen(
Spacer(Modifier.height(Margin.Huge))
}

if (showBottomSheet.get()) CancelUploadBottomSheet(onCancel = onCancel, closeButtonSheet = { showBottomSheet.set(false) })
if (showBottomSheet.get()) {
CancelUploadBottomSheet(
onCancel = {
onCancel()
showBottomSheet.set(false)
},
closeButtonSheet = { showBottomSheet.set(false) },
)
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,8 @@ class UploadWorker @AssistedInject constructor(
return@mapLatest when (workInfo.state) {
State.RUNNING -> UploadProgressUiState.Progress(workInfo.progress).also { lastUploadedSize = it.uploadedSize }
State.SUCCEEDED -> UploadProgressUiState.Success.create(workInfo.outputData, sharedApiUrlCreator)
State.FAILED, State.CANCELLED -> UploadProgressUiState.Error(lastUploadedSize)
State.FAILED -> UploadProgressUiState.Error(lastUploadedSize)
State.CANCELLED -> UploadProgressUiState.Cancel()
else -> UploadProgressUiState.Default(lastUploadedSize)
} ?: UploadProgressUiState.Error(lastUploadedSize)
}.filterNotNull()
Expand Down Expand Up @@ -159,6 +160,9 @@ class UploadWorker @AssistedInject constructor(

@Immutable
data class Error(override val uploadedSize: Long = 0) : UploadProgressUiState(uploadedSize)

@Immutable
data class Cancel(override val uploadedSize: Long = 0) : UploadProgressUiState(uploadedSize)
}

companion object {
Expand Down

0 comments on commit 5a85166

Please sign in to comment.