diff --git a/app/src/main/java/de/bollwerk/app/MainActivity.kt b/app/src/main/java/de/bollwerk/app/MainActivity.kt index bcb9b9a..0060d50 100644 --- a/app/src/main/java/de/bollwerk/app/MainActivity.kt +++ b/app/src/main/java/de/bollwerk/app/MainActivity.kt @@ -1,14 +1,19 @@ package de.bollwerk.app +import android.Manifest import android.content.Intent +import android.content.pm.PackageManager +import android.os.Build import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge +import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.tooling.preview.Preview +import androidx.core.content.ContextCompat import androidx.lifecycle.lifecycleScope import dagger.hilt.android.AndroidEntryPoint import de.bollwerk.app.domain.usecase.EnsureKeyPairUseCase @@ -31,11 +36,16 @@ class MainActivity : ComponentActivity() { private val _chatNavigationEvents = MutableSharedFlow(extraBufferCapacity = 1) val chatNavigationEvents: SharedFlow = _chatNavigationEvents.asSharedFlow() + private val notificationPermissionLauncher = registerForActivityResult( + ActivityResultContracts.RequestPermission() + ) { /* no-op – best effort */ } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) lifecycleScope.launch { seedDatabaseUseCase() } lifecycleScope.launch { ensureKeyPairUseCase.execute() } enableEdgeToEdge() + requestNotificationPermissionIfNeeded() handleChatDeepLink(intent) setContent { BollwerkTheme { @@ -44,6 +54,16 @@ class MainActivity : ComponentActivity() { } } + private fun requestNotificationPermissionIfNeeded() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) + != PackageManager.PERMISSION_GRANTED + ) { + notificationPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS) + } + } + } + override fun onNewIntent(intent: Intent) { super.onNewIntent(intent) handleChatDeepLink(intent)