feat: Request notification permission on app startup for Android 13+; improve user experience and logging

This commit is contained in:
k1ngsterr1
2026-01-17 03:17:49 +05:00
parent 1ea2d917dc
commit 3eb841c145

View File

@@ -1,11 +1,17 @@
package com.rosetta.messenger package com.rosetta.messenger
import android.Manifest
import android.content.Context import android.content.Context
import android.content.pm.PackageManager
import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.util.Log import android.util.Log
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.compose.setContent import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge import androidx.activity.enableEdgeToEdge
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.content.ContextCompat
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.compose.animation.* import androidx.compose.animation.*
import androidx.compose.animation.core.FastOutSlowInEasing import androidx.compose.animation.core.FastOutSlowInEasing
@@ -78,7 +84,34 @@ class MainActivity : ComponentActivity() {
// Используем новый оптимизированный кэш // Используем новый оптимизированный кэш
OptimizedEmojiCache.preload(this) 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 scope = rememberCoroutineScope()
val isDarkTheme by preferencesManager.isDarkTheme.collectAsState(initial = true) val isDarkTheme by preferencesManager.isDarkTheme.collectAsState(initial = true)
val isLoggedIn by accountManager.isLoggedIn.collectAsState(initial = null) val isLoggedIn by accountManager.isLoggedIn.collectAsState(initial = null)