Skip to content

Commit a49ebce

Browse files
fix: prevent ANR when tapping password field by moving permission request to LaunchedEffect
1 parent af67a1d commit a49ebce

1 file changed

Lines changed: 15 additions & 14 deletions

File tree

  • app/src/main/java/me/bmax/apatch/ui/screen

app/src/main/java/me/bmax/apatch/ui/screen/Patches.kt

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ fun Patches(mode: PatchesViewModel.PatchMode) {
107107
val scope = rememberCoroutineScope()
108108
var needKey by remember { mutableStateOf(APApplication.sharedPreferences.getBoolean("patch_custom_superkey_enabled", false)) }
109109
val viewModel = viewModel<PatchesViewModel>()
110-
SideEffect {
110+
LaunchedEffect(mode) {
111111
viewModel.prepare(mode)
112112
}
113113

@@ -141,20 +141,21 @@ fun Patches(mode: PatchesViewModel.PatchMode) {
141141
) {
142142
val context = LocalContext.current
143143

144-
// request permissions
145-
val permissions = arrayOf(
146-
Manifest.permission.WRITE_EXTERNAL_STORAGE,
147-
Manifest.permission.READ_EXTERNAL_STORAGE
148-
)
149-
val permissionsToRequest = permissions.filter {
150-
ContextCompat.checkSelfPermission(context, it) != PackageManager.PERMISSION_GRANTED
151-
}
152-
if (permissionsToRequest.isNotEmpty()) {
153-
ActivityCompat.requestPermissions(
154-
context as Activity,
155-
permissionsToRequest.toTypedArray(),
156-
1001
144+
LaunchedEffect(Unit) {
145+
val permissions = arrayOf(
146+
Manifest.permission.WRITE_EXTERNAL_STORAGE,
147+
Manifest.permission.READ_EXTERNAL_STORAGE
157148
)
149+
val permissionsToRequest = permissions.filter {
150+
ContextCompat.checkSelfPermission(context, it) != PackageManager.PERMISSION_GRANTED
151+
}
152+
if (permissionsToRequest.isNotEmpty()) {
153+
ActivityCompat.requestPermissions(
154+
context as Activity,
155+
permissionsToRequest.toTypedArray(),
156+
1001
157+
)
158+
}
158159
}
159160

160161
PatchMode(mode)

0 commit comments

Comments
 (0)