Skip to content

Commit a001845

Browse files
committed
fix(backupkey): correct loading and success states for Save to Photos button
Signed-off-by: Brandon McAnsh <git@bmcreations.dev>
1 parent 4fd46fd commit a001845

2 files changed

Lines changed: 14 additions & 9 deletions

File tree

apps/flipcash/features/backupkey/src/main/kotlin/com/flipcash/app/backupkey/internal/BackupKeyScreenContent.kt

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,6 @@ internal fun BackupKeyScreenContent(viewModel: BackupKeyScreenViewModel) {
6565
var isStoragePermissionGranted by remember { mutableStateOf(false) }
6666
val isAccessKeyVisible = remember { MutableTransitionState(false) }
6767

68-
var saved by remember(dataState.exportState.success) { mutableStateOf(dataState.exportState.success) }
69-
7068
val onPermissionResult = { result: PermissionResult ->
7169
isStoragePermissionGranted = result == PermissionResult.Granted
7270

@@ -93,10 +91,6 @@ internal fun BackupKeyScreenContent(viewModel: BackupKeyScreenViewModel) {
9391
LaunchedEffect(isExportSeedRequested, isStoragePermissionGranted) {
9492
if (isExportSeedRequested && isStoragePermissionGranted) {
9593
viewModel.saveImage()
96-
.onSuccess {
97-
delay(2.seconds)
98-
saved = false
99-
}
10094
.onFailure {
10195
isExportSeedRequested = false
10296
}
@@ -169,7 +163,7 @@ internal fun BackupKeyScreenContent(viewModel: BackupKeyScreenViewModel) {
169163
buttonState = ButtonState.Filled,
170164
isLoading = dataState.exportState.loading,
171165
enabled = dataState.exportState.isIdle,
172-
isSuccess = saved,
166+
isSuccess = dataState.exportState.success,
173167
)
174168
}
175169
}

apps/flipcash/features/backupkey/src/main/kotlin/com/flipcash/app/backupkey/internal/BackupKeyScreenViewModel.kt

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,12 @@ import com.flipcash.services.user.UserManager
66
import com.getcode.libs.qr.QRCodeGenerator
77
import com.getcode.opencode.managers.MnemonicManager
88
import com.getcode.util.resources.ResourceHelper
9+
import com.getcode.view.LoadingSuccessState
910
import dagger.hilt.android.lifecycle.HiltViewModel
11+
import kotlinx.coroutines.delay
12+
import kotlinx.coroutines.flow.update
1013
import javax.inject.Inject
14+
import kotlin.time.Duration.Companion.seconds
1115

1216
@HiltViewModel
1317
internal class BackupKeyScreenViewModel @Inject constructor(
@@ -23,7 +27,14 @@ internal class BackupKeyScreenViewModel @Inject constructor(
2327
userManager,
2428
qrCodeGenerator
2529
) {
26-
suspend fun saveImage(): Result<Unit> = saveBitmapToFile()
27-
.map { Unit }
30+
suspend fun saveImage(): Result<Unit> = saveBitmapToFile().map {
31+
delay(150)
32+
uiFlow.update { s -> s.copy(exportState = LoadingSuccessState(success = true)) }
33+
it
34+
}.map {
35+
delay(2.seconds)
36+
uiFlow.update { s -> s.copy(exportState = LoadingSuccessState()) }
37+
it
38+
}
2839

2940
}

0 commit comments

Comments
 (0)