package com.vgmlr.wedge
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.material3.MaterialTheme
import androidx.core.view.WindowCompat
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import android.Manifest
import android.content.pm.PackageManager
import android.os.Build
import android.app.AlarmManager
import android.content.Intent
import androidx.core.net.toUri
import android.provider.Settings
import androidx.lifecycle.lifecycleScope
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.launch
class WedgeMainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val db = AppDatabase.getInstance(this)
val pref = PreferenceManager(this)
enableEdgeToEdge()
WindowCompat.setDecorFitsSystemWindows(window, false)
if (Build.VERSION.SDK_INT >= 33) {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.POST_NOTIFICATIONS), 101)
}
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
val alarmManager = getSystemService(ALARM_SERVICE) as AlarmManager
if (!alarmManager.canScheduleExactAlarms()) {
startActivity(Intent(Settings.ACTION_REQUEST_SCHEDULE_EXACT_ALARM).apply {
data = "package:$packageName".toUri()
})
}
}
setContent {
MaterialTheme {
AppNavigation(db, pref)
}
}
lifecycleScope.launch {
WedgeBackup.schedule(this@WedgeMainActivity, pref.backupInterval.first())
}
}
}