Fix issue where the wrong system was opened when dealing with other permissions than Manifest.permission.POST_NOTIFICATIONS

This commit is contained in:
Benoit Marty 2025-12-10 10:32:37 +01:00
parent 618171be05
commit b34f2cddef
5 changed files with 13 additions and 8 deletions

View file

@ -113,7 +113,7 @@ class DefaultPermissionsPresenter(
} }
} }
PermissionsEvents.OpenSystemSettingAndCloseDialog -> { PermissionsEvents.OpenSystemSettingAndCloseDialog -> {
permissionActions.openSettings() permissionActions.openSettings(permission)
showDialog.value = false showDialog.value = false
} }
} }

View file

@ -8,9 +8,11 @@
package io.element.android.libraries.permissions.impl.action package io.element.android.libraries.permissions.impl.action
import android.Manifest
import android.content.Context import android.content.Context
import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.ContributesBinding 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.androidutils.system.startNotificationSettingsIntent
import io.element.android.libraries.di.annotations.ApplicationContext import io.element.android.libraries.di.annotations.ApplicationContext
@ -18,7 +20,10 @@ import io.element.android.libraries.di.annotations.ApplicationContext
class AndroidPermissionActions( class AndroidPermissionActions(
@ApplicationContext private val context: Context @ApplicationContext private val context: Context
) : PermissionActions { ) : PermissionActions {
override fun openSettings() { override fun openSettings(permission: String) {
context.startNotificationSettingsIntent() when (permission) {
Manifest.permission.POST_NOTIFICATIONS -> context.startNotificationSettingsIntent()
else -> context.openAppSettingsPage()
}
} }
} }

View file

@ -9,5 +9,5 @@
package io.element.android.libraries.permissions.impl.action package io.element.android.libraries.permissions.impl.action
interface PermissionActions { interface PermissionActions {
fun openSettings() fun openSettings(permission: String)
} }

View file

@ -61,6 +61,6 @@ class NotificationTroubleshootCheckPermissionTest(
navigator: NotificationTroubleshootNavigator, navigator: NotificationTroubleshootNavigator,
) { ) {
// Do not bother about asking the permission inline, just lead the user to the settings // Do not bother about asking the permission inline, just lead the user to the settings
permissionActions.openSettings() permissionActions.openSettings(Manifest.permission.POST_NOTIFICATIONS)
} }
} }

View file

@ -9,13 +9,13 @@
package io.element.android.libraries.permissions.impl.action package io.element.android.libraries.permissions.impl.action
class FakePermissionActions( class FakePermissionActions(
val openSettingsAction: () -> Unit = {} val openSettingsAction: (String) -> Unit = {}
) : PermissionActions { ) : PermissionActions {
var openSettingsCalled = false var openSettingsCalled = false
private set private set
override fun openSettings() { override fun openSettings(permission: String) {
openSettingsAction() openSettingsAction(permission)
openSettingsCalled = true openSettingsCalled = true
} }
} }