diff --git a/app/src/main/java/com/tangem/tap/common/settings/IntentSettingsManager.kt b/app/src/main/java/com/tangem/tap/common/settings/IntentSettingsManager.kt index ab6dd43f18..9902311502 100644 --- a/app/src/main/java/com/tangem/tap/common/settings/IntentSettingsManager.kt +++ b/app/src/main/java/com/tangem/tap/common/settings/IntentSettingsManager.kt @@ -20,6 +20,21 @@ internal class IntentSettingsManager(val context: Context) : SettingsManager { open(intent = intent) } + override fun openAppNotificationSettings() { + val intent = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS).apply { + putExtra(Settings.EXTRA_APP_PACKAGE, context.packageName) + } + } else { + Intent( + Settings.ACTION_APPLICATION_DETAILS_SETTINGS, + Uri.fromParts("package", context.packageName, null), + ) + } + + open(intent = intent) + } + override fun openBiometricSettings() { val settingsAction = when { Build.VERSION.SDK_INT >= Build.VERSION_CODES.R -> Settings.ACTION_BIOMETRIC_ENROLL diff --git a/core/navigation/src/main/java/com/tangem/core/navigation/notifications/SystemNotificationsStateProvider.kt b/core/navigation/src/main/java/com/tangem/core/navigation/notifications/SystemNotificationsStateProvider.kt new file mode 100644 index 0000000000..38de533e65 --- /dev/null +++ b/core/navigation/src/main/java/com/tangem/core/navigation/notifications/SystemNotificationsStateProvider.kt @@ -0,0 +1,21 @@ +package com.tangem.core.navigation.notifications + +import android.content.Context +import androidx.core.app.NotificationManagerCompat +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import javax.inject.Singleton + +/** + * Wrapper around [NotificationManagerCompat.areNotificationsEnabled] for OS-level notification toggle state. + * + * Reflects the user's preference in system settings (independent of runtime POST_NOTIFICATIONS permission + * on Android 13+). Returns `false` if notifications are blocked at the OS level. + */ +@Singleton +class SystemNotificationsStateProvider @Inject constructor( + @ApplicationContext private val context: Context, +) { + + fun areNotificationsEnabled(): Boolean = NotificationManagerCompat.from(context).areNotificationsEnabled() +} \ No newline at end of file diff --git a/core/navigation/src/main/java/com/tangem/core/navigation/settings/DummySettingsManager.kt b/core/navigation/src/main/java/com/tangem/core/navigation/settings/DummySettingsManager.kt index a5148c68c0..1515b7c0e2 100644 --- a/core/navigation/src/main/java/com/tangem/core/navigation/settings/DummySettingsManager.kt +++ b/core/navigation/src/main/java/com/tangem/core/navigation/settings/DummySettingsManager.kt @@ -2,5 +2,6 @@ package com.tangem.core.navigation.settings class DummySettingsManager : SettingsManager { override fun openAppSettings() = Unit + override fun openAppNotificationSettings() = Unit override fun openBiometricSettings() = Unit } \ No newline at end of file diff --git a/core/navigation/src/main/java/com/tangem/core/navigation/settings/SettingsManager.kt b/core/navigation/src/main/java/com/tangem/core/navigation/settings/SettingsManager.kt index 20ffee2885..12585622b1 100644 --- a/core/navigation/src/main/java/com/tangem/core/navigation/settings/SettingsManager.kt +++ b/core/navigation/src/main/java/com/tangem/core/navigation/settings/SettingsManager.kt @@ -4,5 +4,7 @@ interface SettingsManager { fun openAppSettings() + fun openAppNotificationSettings() + fun openBiometricSettings() } \ No newline at end of file