Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 38b88fe7 authored by Mohammed Althaf T's avatar Mohammed Althaf T 😊
Browse files

mail: Skip permissions page if not required

parent 8afe2960
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
@@ -23,9 +23,12 @@ import android.annotation.SuppressLint
import android.app.Activity
import android.content.ContentResolver
import android.content.Context
import android.content.pm.PackageManager
import android.net.ConnectivityManager
import android.net.NetworkCapabilities
import android.os.Build
import android.os.Bundle
import androidx.core.content.ContextCompat
import app.k9mail.core.common.mail.Protocols
import app.k9mail.feature.account.accountmanager.providersxml.DiscoveredServerSettings
import app.k9mail.legacy.account.Account.DeletePolicy
@@ -331,4 +334,28 @@ object AccountManagerHelper {
        }
        return false
    }

    fun permissionsGranted(context: Context): Boolean {
        // Check Android version compatibility
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
            // Notification permission required on Android 13+ (Tiramisu)
            val notificationGranted = ContextCompat.checkSelfPermission(
                context,
                android.Manifest.permission.POST_NOTIFICATIONS
            ) == PackageManager.PERMISSION_GRANTED
            val contactsGranted = ContextCompat.checkSelfPermission(
                context,
                android.Manifest.permission.READ_CONTACTS
            ) == PackageManager.PERMISSION_GRANTED
            return notificationGranted && contactsGranted
        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            // Check only Contacts permission for Android 6 to Android 12
            return ContextCompat.checkSelfPermission(
                context,
                android.Manifest.permission.READ_CONTACTS
            ) == PackageManager.PERMISSION_GRANTED
        }

        return true
    }
}
+5 −2
Original line number Diff line number Diff line
@@ -5,10 +5,12 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.platform.LocalContext
import androidx.navigation.NavController
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import app.k9mail.feature.account.accountmanager.AccountManagerHelper
import app.k9mail.feature.account.setup.navigation.AccountSetupNavHost
import app.k9mail.feature.onboarding.migration.api.OnboardingMigrationManager
import app.k9mail.feature.onboarding.permissions.domain.PermissionsDomainContract.UseCase.HasRuntimePermissions
@@ -62,9 +64,10 @@ fun OnboardingNavHost(
) {
    val navController = rememberNavController()
    var accountUuid by rememberSaveable { mutableStateOf<String?>(null) }
    val context = LocalContext.current

    fun onImportSuccess() {
        if (hasRuntimePermissions()) {
        if (hasRuntimePermissions() && !AccountManagerHelper.permissionsGranted(context)) {
            navController.navigateToPermissions()
        } else {
            onFinish(null)
@@ -103,7 +106,7 @@ fun OnboardingNavHost(
                onBack = { navController.popBackStack() },
                onFinish = { createdAccountUuid: String ->
                    accountUuid = createdAccountUuid
                    if (hasRuntimePermissions()) {
                    if (hasRuntimePermissions() && !AccountManagerHelper.permissionsGranted(context)) {
                        navController.navigateToPermissions()
                    } else {
                        onFinish(createdAccountUuid)