From b34f2cddeff7b13139c00871fd0e6ed6b3d523ba Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 10 Dec 2025 10:32:37 +0100 Subject: [PATCH] Fix issue where the wrong system was opened when dealing with other permissions than Manifest.permission.POST_NOTIFICATIONS --- .../permissions/impl/DefaultPermissionsPresenter.kt | 2 +- .../permissions/impl/action/AndroidPermissionActions.kt | 9 +++++++-- .../permissions/impl/action/PermissionActions.kt | 2 +- .../NotificationTroubleshootCheckPermissionTest.kt | 2 +- .../permissions/impl/action/FakePermissionActions.kt | 6 +++--- 5 files changed, 13 insertions(+), 8 deletions(-) diff --git a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionsPresenter.kt b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionsPresenter.kt index 76e288013b..99f42a2a0c 100644 --- a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionsPresenter.kt +++ b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionsPresenter.kt @@ -113,7 +113,7 @@ class DefaultPermissionsPresenter( } } PermissionsEvents.OpenSystemSettingAndCloseDialog -> { - permissionActions.openSettings() + permissionActions.openSettings(permission) showDialog.value = false } } diff --git a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/action/AndroidPermissionActions.kt b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/action/AndroidPermissionActions.kt index 59ebfc6deb..1be8428890 100644 --- a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/action/AndroidPermissionActions.kt +++ b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/action/AndroidPermissionActions.kt @@ -8,9 +8,11 @@ package io.element.android.libraries.permissions.impl.action +import android.Manifest import android.content.Context import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding +import io.element.android.libraries.androidutils.system.openAppSettingsPage import io.element.android.libraries.androidutils.system.startNotificationSettingsIntent import io.element.android.libraries.di.annotations.ApplicationContext @@ -18,7 +20,10 @@ import io.element.android.libraries.di.annotations.ApplicationContext class AndroidPermissionActions( @ApplicationContext private val context: Context ) : PermissionActions { - override fun openSettings() { - context.startNotificationSettingsIntent() + override fun openSettings(permission: String) { + when (permission) { + Manifest.permission.POST_NOTIFICATIONS -> context.startNotificationSettingsIntent() + else -> context.openAppSettingsPage() + } } } diff --git a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/action/PermissionActions.kt b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/action/PermissionActions.kt index 5c496bf4c7..2b1249b823 100644 --- a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/action/PermissionActions.kt +++ b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/action/PermissionActions.kt @@ -9,5 +9,5 @@ package io.element.android.libraries.permissions.impl.action interface PermissionActions { - fun openSettings() + fun openSettings(permission: String) } diff --git a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/troubleshoot/NotificationTroubleshootCheckPermissionTest.kt b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/troubleshoot/NotificationTroubleshootCheckPermissionTest.kt index f5ff79e910..eff20fabec 100644 --- a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/troubleshoot/NotificationTroubleshootCheckPermissionTest.kt +++ b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/troubleshoot/NotificationTroubleshootCheckPermissionTest.kt @@ -61,6 +61,6 @@ class NotificationTroubleshootCheckPermissionTest( navigator: NotificationTroubleshootNavigator, ) { // Do not bother about asking the permission inline, just lead the user to the settings - permissionActions.openSettings() + permissionActions.openSettings(Manifest.permission.POST_NOTIFICATIONS) } } diff --git a/libraries/permissions/impl/src/test/kotlin/io/element/android/libraries/permissions/impl/action/FakePermissionActions.kt b/libraries/permissions/impl/src/test/kotlin/io/element/android/libraries/permissions/impl/action/FakePermissionActions.kt index 4299672d8d..fb84109a48 100644 --- a/libraries/permissions/impl/src/test/kotlin/io/element/android/libraries/permissions/impl/action/FakePermissionActions.kt +++ b/libraries/permissions/impl/src/test/kotlin/io/element/android/libraries/permissions/impl/action/FakePermissionActions.kt @@ -9,13 +9,13 @@ package io.element.android.libraries.permissions.impl.action class FakePermissionActions( - val openSettingsAction: () -> Unit = {} + val openSettingsAction: (String) -> Unit = {} ) : PermissionActions { var openSettingsCalled = false private set - override fun openSettings() { - openSettingsAction() + override fun openSettings(permission: String) { + openSettingsAction(permission) openSettingsCalled = true } }