Refactor: Update permission handling to use PermissionType enum

This commit is contained in:
prudhvir3ddy
2025-07-12 10:06:56 +05:30
parent bc2712eefd
commit a345d0a021
2 changed files with 28 additions and 21 deletions
@@ -190,14 +190,14 @@ private fun PermissionCategoryCard(
horizontalArrangement = Arrangement.spacedBy(12.dp) horizontalArrangement = Arrangement.spacedBy(12.dp)
) { ) {
Text( Text(
text = getPermissionEmoji(category.name), text = getPermissionEmoji(category.type),
style = MaterialTheme.typography.titleLarge, style = MaterialTheme.typography.titleLarge,
color = getPermissionIconColor(category.name), color = getPermissionIconColor(category.type),
modifier = Modifier.size(24.dp) modifier = Modifier.size(24.dp)
) )
Text( Text(
text = category.name, text = category.type.nameValue,
style = MaterialTheme.typography.titleSmall.copy( style = MaterialTheme.typography.titleSmall.copy(
fontWeight = FontWeight.Bold, fontWeight = FontWeight.Bold,
color = colorScheme.onSurface color = colorScheme.onSurface
@@ -214,7 +214,7 @@ private fun PermissionCategoryCard(
) )
) )
if (category.name == "Precise Location") { if (category.type == PermissionType.PRECISE_LOCATION) {
// Extra emphasis for location permission // Extra emphasis for location permission
Row( Row(
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
@@ -239,20 +239,20 @@ private fun PermissionCategoryCard(
} }
} }
private fun getPermissionEmoji(categoryName: String): String { private fun getPermissionEmoji(permissionType: PermissionType): String {
return when (categoryName) { return when (permissionType) {
"Nearby Devices" -> "📱" PermissionType.NEARBY_DEVICES -> "📱"
"Precise Location" -> "📍" PermissionType.PRECISE_LOCATION -> "📍"
"Notifications" -> "🔔" PermissionType.NOTIFICATIONS -> "🔔"
else -> "🔧" PermissionType.OTHER -> "🔧"
} }
} }
private fun getPermissionIconColor(categoryName: String): Color { private fun getPermissionIconColor(permissionType: PermissionType): Color {
return when (categoryName) { return when (permissionType) {
"Nearby Devices" -> Color(0xFF2196F3) // Blue PermissionType.NEARBY_DEVICES -> Color(0xFF2196F3) // Blue
"Precise Location" -> Color(0xFFFF9800) // Orange PermissionType.PRECISE_LOCATION -> Color(0xFFFF9800) // Orange
"Notifications" -> Color(0xFF4CAF50) // Green PermissionType.NOTIFICATIONS -> Color(0xFF4CAF50) // Green
else -> Color(0xFF9C27B0) // Purple PermissionType.OTHER -> Color(0xFF9C27B0) // Purple
} }
} }
@@ -115,7 +115,7 @@ class PermissionManager(private val context: Context) {
categories.add( categories.add(
PermissionCategory( PermissionCategory(
name = "Nearby Devices", type = PermissionType.NEARBY_DEVICES,
description = "Required to discover and connect to other bitchat users via Bluetooth", description = "Required to discover and connect to other bitchat users via Bluetooth",
permissions = bluetoothPermissions, permissions = bluetoothPermissions,
isGranted = bluetoothPermissions.all { isPermissionGranted(it) }, isGranted = bluetoothPermissions.all { isPermissionGranted(it) },
@@ -131,7 +131,7 @@ class PermissionManager(private val context: Context) {
categories.add( categories.add(
PermissionCategory( PermissionCategory(
name = "Precise Location", type = PermissionType.PRECISE_LOCATION,
description = "Required by Android for Bluetooth scanning.", description = "Required by Android for Bluetooth scanning.",
permissions = locationPermissions, permissions = locationPermissions,
isGranted = locationPermissions.all { isPermissionGranted(it) }, isGranted = locationPermissions.all { isPermissionGranted(it) },
@@ -143,7 +143,7 @@ class PermissionManager(private val context: Context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
categories.add( categories.add(
PermissionCategory( PermissionCategory(
name = "Notifications", type = PermissionType.NOTIFICATIONS,
description = "Show notifications when you receive private messages while the app is in background", description = "Show notifications when you receive private messages while the app is in background",
permissions = listOf(Manifest.permission.POST_NOTIFICATIONS), permissions = listOf(Manifest.permission.POST_NOTIFICATIONS),
isGranted = isPermissionGranted(Manifest.permission.POST_NOTIFICATIONS), isGranted = isPermissionGranted(Manifest.permission.POST_NOTIFICATIONS),
@@ -167,7 +167,7 @@ class PermissionManager(private val context: Context) {
appendLine() appendLine()
getCategorizedPermissions().forEach { category -> getCategorizedPermissions().forEach { category ->
appendLine("${category.name}: ${if (category.isGranted) "✅ GRANTED" else "❌ MISSING"}") appendLine("${category.type.nameValue}: ${if (category.isGranted) "✅ GRANTED" else "❌ MISSING"}")
category.permissions.forEach { permission -> category.permissions.forEach { permission ->
val granted = isPermissionGranted(permission) val granted = isPermissionGranted(permission)
appendLine(" - ${permission.substringAfterLast(".")}: ${if (granted) "✅" else "❌"}") appendLine(" - ${permission.substringAfterLast(".")}: ${if (granted) "✅" else "❌"}")
@@ -197,9 +197,16 @@ class PermissionManager(private val context: Context) {
* Data class representing a category of related permissions * Data class representing a category of related permissions
*/ */
data class PermissionCategory( data class PermissionCategory(
val name: String, val type: PermissionType,
val description: String, val description: String,
val permissions: List<String>, val permissions: List<String>,
val isGranted: Boolean, val isGranted: Boolean,
val systemDescription: String val systemDescription: String
) )
enum class PermissionType(val nameValue: String) {
NEARBY_DEVICES("Nearby Devices"),
PRECISE_LOCATION("Precise Location"),
NOTIFICATIONS("Notifications"),
OTHER("Other")
}