diff --git a/app/src/main/java/com/rosetta/messenger/MainActivity.kt b/app/src/main/java/com/rosetta/messenger/MainActivity.kt index 9de4df6..d3a19cb 100644 --- a/app/src/main/java/com/rosetta/messenger/MainActivity.kt +++ b/app/src/main/java/com/rosetta/messenger/MainActivity.kt @@ -1,11 +1,17 @@ package com.rosetta.messenger +import android.Manifest import android.content.Context +import android.content.pm.PackageManager +import android.os.Build import android.os.Bundle import android.util.Log import androidx.activity.ComponentActivity +import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge +import androidx.activity.result.contract.ActivityResultContracts +import androidx.core.content.ContextCompat import androidx.lifecycle.lifecycleScope import androidx.compose.animation.* import androidx.compose.animation.core.FastOutSlowInEasing @@ -78,7 +84,34 @@ class MainActivity : ComponentActivity() { // Используем новый оптимизированный кэш OptimizedEmojiCache.preload(this) - setContent { + setContent { // 🔔 Запрос разрешения на уведомления для Android 13+ + val notificationPermissionLauncher = rememberLauncherForActivityResult( + contract = ActivityResultContracts.RequestPermission(), + onResult = { isGranted -> + Log.d(TAG, "📬 Notification permission result: $isGranted") + if (!isGranted) { + Log.w(TAG, "⚠️ User denied notification permission") + } + } + ) + + // Запрашиваем разрешение при первом запуске (Android 13+) + LaunchedEffect(Unit) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + val hasPermission = ContextCompat.checkSelfPermission( + this@MainActivity, + Manifest.permission.POST_NOTIFICATIONS + ) == PackageManager.PERMISSION_GRANTED + + if (!hasPermission) { + Log.d(TAG, "📬 Requesting notification permission...") + notificationPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS) + } else { + Log.d(TAG, "✅ Notification permission already granted") + } + } + } + val scope = rememberCoroutineScope() val isDarkTheme by preferencesManager.isDarkTheme.collectAsState(initial = true) val isLoggedIn by accountManager.isLoggedIn.collectAsState(initial = null)