Skip to content

Commit fe6fe53

Browse files
committed
feat: disallow enabling keep patched APKs when external cache directory doesn't exist
1 parent a1e7594 commit fe6fe53

File tree

5 files changed

+22
-5
lines changed

5 files changed

+22
-5
lines changed

app/src/main/kotlin/com/aliucord/manager/manager/PathManager.kt

+3-4
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,13 @@ class PathManager(
3434
val keystoreFile = aliucordDir.resolve("ks.keystore")
3535

3636
/**
37-
* Use the external cache directory (`/storage/emulated/0/Android/data/com.aliucord.manager/cache`)
37+
* Uses the external cache directory (`/storage/emulated/0/Android/data/com.aliucord.manager/cache`)
3838
* when dev mode or preserving APKs is enabled. Otherwise, default to internal app cache.
3939
*/
40-
private val cacheDir
40+
val cacheDir: File
4141
get() = when (prefs.devMode || prefs.keepPatchedApks) {
4242
false -> context.cacheDir
43-
true -> context.externalCacheDir
44-
?: throw Error("External cache directory isn't supported")
43+
true -> context.externalCacheDir ?: context.cacheDir
4544
}
4645

4746
/**

app/src/main/kotlin/com/aliucord/manager/manager/PreferencesManager.kt

+2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package com.aliucord.manager.manager
22

33
import android.content.SharedPreferences
4+
import androidx.compose.runtime.Stable
45
import com.aliucord.manager.manager.base.BasePreferenceManager
56
import com.aliucord.manager.ui.components.Theme
67

8+
@Stable
79
class PreferencesManager(preferences: SharedPreferences) : BasePreferenceManager(preferences) {
810
var theme by enumPreference("theme", Theme.DARK)
911
var dynamicColor by booleanPreference("dynamic_color", false)

app/src/main/kotlin/com/aliucord/manager/ui/screens/settings/SettingsModel.kt

+15
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import com.aliucord.manager.manager.PreferencesManager
99
import com.aliucord.manager.ui.components.Theme
1010
import com.aliucord.manager.util.launchBlock
1111
import com.aliucord.manager.util.showToast
12+
import kotlinx.coroutines.delay
13+
import kotlinx.coroutines.launch
1214

1315
class SettingsModel(
1416
private val application: Application,
@@ -29,6 +31,19 @@ class SettingsModel(
2931
preferences.theme = theme
3032
}
3133

34+
fun setKeepPatchedApks(value: Boolean) {
35+
// Disallow setting keep APKs if externalCacheDir doesn't exist (some ROMs)
36+
if (value && application.externalCacheDir == null) {
37+
screenModelScope.launch {
38+
delay(300)
39+
preferences.keepPatchedApks = false
40+
application.showToast(R.string.setting_keep_patched_apks_error)
41+
}
42+
}
43+
44+
preferences.keepPatchedApks = value
45+
}
46+
3247
fun clearCacheDir() = screenModelScope.launchBlock {
3348
application.externalCacheDir?.deleteRecursively()
3449
application.showToast(R.string.action_cleared_cache)

app/src/main/kotlin/com/aliucord/manager/ui/screens/settings/SettingsScreen.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ class SettingsScreen : Screen, Parcelable {
9898
secondaryLabel = stringResource(R.string.setting_keep_patched_apks_desc),
9999
icon = { Icon(painterResource(R.drawable.ic_delete_forever), null) },
100100
pref = preferences.keepPatchedApks,
101-
onPrefChange = { preferences.keepPatchedApks = it },
101+
onPrefChange = model::setKeepPatchedApks,
102102
)
103103

104104
var clearedCache by rememberSaveable { mutableStateOf(false) }

app/src/main/res/values/strings.xml

+1
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
<string name="setting_dynamic_color_desc">Enables Material You theming on Android 12+</string>
5050
<string name="setting_keep_patched_apks">Keep patched APKs</string>
5151
<string name="setting_keep_patched_apks_desc">Keep all patched files and APKs after installing for debugging.</string>
52+
<string name="setting_keep_patched_apks_error">This device does not support external cache directories!</string>
5253

5354
<string name="theme_system">System</string>
5455
<string name="theme_dark">Dark</string>

0 commit comments

Comments
 (0)