package dev.amizing25.robinsr import android.Manifest import android.annotation.SuppressLint import android.app.AlertDialog import android.app.Notification import android.app.NotificationChannel import android.app.NotificationManager import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.content.IntentFilter import android.content.pm.PackageManager import android.net.Uri import android.os.Build import android.os.Bundle import android.provider.Settings import android.widget.Button import android.widget.TextView import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import androidx.lifecycle.Lifecycle import androidx.lifecycle.lifecycleScope import androidx.lifecycle.repeatOnLifecycle import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import dev.amizing25.robinsr.RustService.Companion.ACTION_STOP_SERVICE import dev.amizing25.robinsr.databinding.ActivityMainBinding import dev.amizing25.robinsr.logging.LogAdapter import dev.amizing25.robinsr.logging.LogRepository import kotlinx.coroutines.Job import kotlinx.coroutines.launch import java.io.File import java.io.FileInputStream import java.io.FileOutputStream import java.io.IOException import kotlin.system.exitProcess class MainActivity : AppCompatActivity() { companion object { private const val NOTIFICATION_PERMISSION_REQUEST_CODE = 1337 } private lateinit var binding: ActivityMainBinding private lateinit var adapter: LogAdapter // Initialize SharedPreferences private val prefs by lazy { getSharedPreferences("RobinSRPrefs", MODE_PRIVATE) } private var isActive = false private val stopServiceReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { if (intent?.action == ACTION_STOP_SERVICE) { isActive = false findViewById(R.id.serverStatus).text = getString(R.string.off) findViewById