diff --git a/app/src/main/java/com/bitchat/android/onboarding/OnboardingCoordinator.kt b/app/src/main/java/com/bitchat/android/onboarding/OnboardingCoordinator.kt index c1952c7c..871cc892 100644 --- a/app/src/main/java/com/bitchat/android/onboarding/OnboardingCoordinator.kt +++ b/app/src/main/java/com/bitchat/android/onboarding/OnboardingCoordinator.kt @@ -65,7 +65,16 @@ class OnboardingCoordinator( fun requestPermissions() { Log.d(TAG, "User accepted permission explanation, requesting permissions") - val missingPermissions = permissionManager.getMissingPermissions() + // Required permissions + val missingRequired = permissionManager.getMissingPermissions() + + // Optional permissions (ask, but do not block if denied) + val optionalToRequest = permissionManager + .getOptionalPermissions() + .filter { !permissionManager.isPermissionGranted(it) } + + val missingPermissions = (missingRequired + optionalToRequest).distinct() + if (missingPermissions.isEmpty()) { completeOnboarding() return diff --git a/app/src/main/java/com/bitchat/android/onboarding/PermissionManager.kt b/app/src/main/java/com/bitchat/android/onboarding/PermissionManager.kt index cfec35e7..ed9cc030 100644 --- a/app/src/main/java/com/bitchat/android/onboarding/PermissionManager.kt +++ b/app/src/main/java/com/bitchat/android/onboarding/PermissionManager.kt @@ -41,6 +41,8 @@ class PermissionManager(private val context: Context) { /** * Get all permissions required by the app + * Note: Notification permission is optional and not included here, + * so the app works without notification access. */ fun getRequiredPermissions(): List { val permissions = mutableListOf() @@ -65,14 +67,23 @@ class PermissionManager(private val context: Context) { Manifest.permission.ACCESS_FINE_LOCATION )) - // Notification permission (Android 13+) - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { - permissions.add(Manifest.permission.POST_NOTIFICATIONS) - } + // Notification permission intentionally excluded to keep it optional return permissions } + /** + * Get optional permissions that improve the experience but aren't required. + * Currently includes POST_NOTIFICATIONS on Android 13+. + */ + fun getOptionalPermissions(): List { + val optional = mutableListOf() + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + optional.add(Manifest.permission.POST_NOTIFICATIONS) + } + return optional + } + /** * Check if a specific permission is granted */