diff --git a/app/src/main/kotlin/com/aliucord/manager/MainActivity.kt b/app/src/main/kotlin/com/aliucord/manager/MainActivity.kt index 9eb8bab..50aff20 100644 --- a/app/src/main/kotlin/com/aliucord/manager/MainActivity.kt +++ b/app/src/main/kotlin/com/aliucord/manager/MainActivity.kt @@ -69,7 +69,7 @@ class MainActivity : ComponentActivity() { when (dest) { is AppDestination.Home -> HomeScreen( onClickInstall = { data -> - navController.replaceAll(AppDestination.Install(data)) + navController.navigate(AppDestination.Install(data)) } ) is AppDestination.Plugins -> PluginsScreen() diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/screen/InstallScreen.kt b/app/src/main/kotlin/com/aliucord/manager/ui/screen/InstallScreen.kt index 523d157..45af877 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ui/screen/InstallScreen.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ui/screen/InstallScreen.kt @@ -17,7 +17,6 @@ import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.unit.dp @@ -27,12 +26,9 @@ import com.aliucord.manager.ui.dialog.DiscordType import com.aliucord.manager.ui.dialog.DownloadMethod import com.aliucord.manager.ui.viewmodel.InstallViewModel import com.aliucord.manager.ui.viewmodel.InstallViewModel.InstallStepGroup -import com.aliucord.manager.util.copyToClipboard -import com.aliucord.manager.util.saveFile import kotlinx.parcelize.Parcelize import org.koin.androidx.compose.getViewModel import org.koin.core.parameter.parametersOf -import java.text.SimpleDateFormat import java.util.* @Parcelize @@ -99,6 +95,17 @@ fun InstallerScreen( ) } + if (viewModel.isFinished && viewModel.stacktrace.isEmpty()) { + Row( + horizontalArrangement = Arrangement.End, + modifier = Modifier.fillMaxWidth() + ) { + FilledTonalButton(onClick = viewModel::clearCache) { + Text(stringResource(R.string.setting_clear_cache)) + } + } + } + if (viewModel.stacktrace.isNotEmpty()) { SelectionContainer { Text( @@ -118,6 +125,12 @@ fun InstallerScreen( horizontalArrangement = Arrangement.spacedBy(10.dp, Alignment.End), modifier = Modifier.fillMaxWidth() ) { + FilledTonalButton(onClick = viewModel::clearCache) { + Text(stringResource(R.string.setting_clear_cache)) + } + + Spacer(Modifier.weight(1f, true)) + OutlinedButton(onClick = viewModel::saveDebugToFile) { Text(stringResource(R.string.installer_save_file)) } diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/viewmodel/InstallViewModel.kt b/app/src/main/kotlin/com/aliucord/manager/ui/viewmodel/InstallViewModel.kt index eef5db8..00900be 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ui/viewmodel/InstallViewModel.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ui/viewmodel/InstallViewModel.kt @@ -41,6 +41,9 @@ class InstallViewModel( var returnToHome by mutableStateOf(false) + var isFinished by mutableStateOf(false) + private set + var stacktrace by mutableStateOf("") private set @@ -77,6 +80,11 @@ class InstallViewModel( application.saveFile(name, "$debugInfo\n\n$stacktrace") } + fun clearCache() { + externalCacheDir.deleteRecursively() + application.showToast(R.string.action_cleared_cache) + } + private val installJob = viewModelScope.launch(Dispatchers.Main) { if (installationRunning.getAndSet(true)) { return@launch @@ -89,6 +97,7 @@ class InstallViewModel( DiscordType.KOTLIN -> installKotlin() } + isFinished = true delay(20000) returnToHome = true } catch (t: Throwable) {