Add error handling to bunker permission parsing

Wrap the bunker permission parsing logic in a `try-catch` block and use `mapNotNull` to prevent crashes when encountering malformed permission strings. Parsing errors are now logged via `AmberLog` and the invalid permissions are skipped.
This commit is contained in:
greenart7c3
2026-06-24 09:02:07 -03:00
parent e88891c13a
commit c30e180363
@@ -27,6 +27,7 @@ import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.greenart7c3.nostrsigner.Amber
import com.greenart7c3.nostrsigner.AmberLog
import com.greenart7c3.nostrsigner.LocalPreferences
import com.greenart7c3.nostrsigner.R
import com.greenart7c3.nostrsigner.database.ApplicationWithPermissions
@@ -237,12 +238,17 @@ fun BunkerSingleEventHomeScreen(
shouldCloseApp = applicationEntity?.application?.closeApplication ?: bunkerRequest.closeApplication,
account = account,
bunkerRequest = bunkerRequest,
permissions = bunkerRequest.request.permissions?.split(",")?.map {
val split = it.split(":")
if (split.size > 1) {
Permission(split[0].trim(), split[1].toInt())
} else {
Permission(split[0].trim(), null)
permissions = bunkerRequest.request.permissions?.split(",")?.mapNotNull {
try {
val split = it.split(":")
if (split.size > 1) {
Permission(split[0].trim(), split[1].toInt())
} else {
Permission(split[0].trim(), null)
}
} catch (e: Exception) {
AmberLog.e(Amber.TAG, "Error parsing permission", e)
null
}
}?.toImmutableList(),
onAccept = { permissions, signPolicy, closeApplication, rememberType, deleteAfter, acc ->