diff --git a/manager/app/src/main/java/com/rifsxd/ksunext/ui/screen/Module.kt b/manager/app/src/main/java/com/rifsxd/ksunext/ui/screen/Module.kt index 6b922e05..1c197196 100644 --- a/manager/app/src/main/java/com/rifsxd/ksunext/ui/screen/Module.kt +++ b/manager/app/src/main/java/com/rifsxd/ksunext/ui/screen/Module.kt @@ -290,8 +290,11 @@ fun ModuleScreen(navigator: DestinationsNavigator) { val confirmTitle = stringResource(R.string.module) var zipUris by remember { mutableStateOf>(emptyList()) } val confirmDialog = rememberConfirmDialog(onConfirm = { - navigator.navigate(FlashScreenDestination(FlashIt.FlashModules(zipUris))) - viewModel.markNeedRefresh() + if (viewModel.zipUris.isNotEmpty()) { + navigator.navigate(FlashScreenDestination(FlashIt.FlashModules(viewModel.zipUris))) + viewModel.clearZipUris() + viewModel.markNeedRefresh() + } }) val selectZipLauncher = rememberLauncherForActivityResult( contract = ActivityResultContracts.StartActivityForResult() @@ -311,6 +314,10 @@ fun ModuleScreen(navigator: DestinationsNavigator) { data.data?.let { uris.add(it) } } + if (uris.isEmpty()) return@rememberLauncherForActivityResult + + viewModel.updateZipUris(uris) + // Show confirm dialog with selected zip file(s) name(s) val moduleNames = uris.mapIndexed { index, uri -> "\n${index + 1}. ${uri.getFileName(context)}" } diff --git a/manager/app/src/main/java/com/rifsxd/ksunext/ui/viewmodel/ModuleViewModel.kt b/manager/app/src/main/java/com/rifsxd/ksunext/ui/viewmodel/ModuleViewModel.kt index 9b878cd6..e7e169bc 100644 --- a/manager/app/src/main/java/com/rifsxd/ksunext/ui/viewmodel/ModuleViewModel.kt +++ b/manager/app/src/main/java/com/rifsxd/ksunext/ui/viewmodel/ModuleViewModel.kt @@ -1,5 +1,6 @@ package com.rifsxd.ksunext.ui.viewmodel +import android.net.Uri import android.os.SystemClock import android.util.Log import androidx.compose.runtime.derivedStateOf @@ -93,6 +94,16 @@ class ModuleViewModel : ViewModel() { isNeedRefresh = true } + var zipUris by mutableStateOf>(emptyList()) + + fun updateZipUris(uris: List) { + zipUris = uris + } + + fun clearZipUris() { + zipUris = emptyList() + } + fun fetchModuleList() { viewModelScope.launch {