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)
) {
Text(
text = getPermissionEmoji(category.name),
text = getPermissionEmoji(category.type),
style = MaterialTheme.typography.titleLarge,
color = getPermissionIconColor(category.name),
color = getPermissionIconColor(category.type),
modifier = Modifier.size(24.dp)
)
Text(
text = category.name,
text = category.type.nameValue,
style = MaterialTheme.typography.titleSmall.copy(
fontWeight = FontWeight.Bold,
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
Row(
verticalAlignment = Alignment.CenterVertically,
@@ -239,20 +239,20 @@ private fun PermissionCategoryCard(
}
}
private fun getPermissionEmoji(categoryName: String): String {
return when (categoryName) {
"Nearby Devices" -> "📱"
"Precise Location" -> "📍"
"Notifications" -> "🔔"
else -> "🔧"
private fun getPermissionEmoji(permissionType: PermissionType): String {
return when (permissionType) {
PermissionType.NEARBY_DEVICES -> "📱"
PermissionType.PRECISE_LOCATION -> "📍"
PermissionType.NOTIFICATIONS -> "🔔"
PermissionType.OTHER -> "🔧"
}
}
private fun getPermissionIconColor(categoryName: String): Color {
return when (categoryName) {
"Nearby Devices" -> Color(0xFF2196F3) // Blue
"Precise Location" -> Color(0xFFFF9800) // Orange
"Notifications" -> Color(0xFF4CAF50) // Green
else -> Color(0xFF9C27B0) // Purple
private fun getPermissionIconColor(permissionType: PermissionType): Color {
return when (permissionType) {
PermissionType.NEARBY_DEVICES -> Color(0xFF2196F3) // Blue
PermissionType.PRECISE_LOCATION -> Color(0xFFFF9800) // Orange
PermissionType.NOTIFICATIONS -> Color(0xFF4CAF50) // Green
PermissionType.OTHER -> Color(0xFF9C27B0) // Purple
}
}
@@ -115,7 +115,7 @@ class PermissionManager(private val context: Context) {
categories.add(
PermissionCategory(
name = "Nearby Devices",
type = PermissionType.NEARBY_DEVICES,
description = "Required to discover and connect to other bitchat users via Bluetooth",
permissions = bluetoothPermissions,
isGranted = bluetoothPermissions.all { isPermissionGranted(it) },
@@ -131,7 +131,7 @@ class PermissionManager(private val context: Context) {
categories.add(
PermissionCategory(
name = "Precise Location",
type = PermissionType.PRECISE_LOCATION,
description = "Required by Android for Bluetooth scanning.",
permissions = locationPermissions,
isGranted = locationPermissions.all { isPermissionGranted(it) },
@@ -143,7 +143,7 @@ class PermissionManager(private val context: Context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
categories.add(
PermissionCategory(
name = "Notifications",
type = PermissionType.NOTIFICATIONS,
description = "Show notifications when you receive private messages while the app is in background",
permissions = listOf(Manifest.permission.POST_NOTIFICATIONS),
isGranted = isPermissionGranted(Manifest.permission.POST_NOTIFICATIONS),
@@ -167,7 +167,7 @@ class PermissionManager(private val context: Context) {
appendLine()
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 ->
val granted = isPermissionGranted(permission)
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 PermissionCategory(
val name: String,
val type: PermissionType,
val description: String,
val permissions: List<String>,
val isGranted: Boolean,
val systemDescription: String
)
enum class PermissionType(val nameValue: String) {
NEARBY_DEVICES("Nearby Devices"),
PRECISE_LOCATION("Precise Location"),
NOTIFICATIONS("Notifications"),
OTHER("Other")
}