package com.vpn.fastestvpnservice import android.content.Intent import android.content.pm.PackageManager import android.net.Uri import android.os.Build import android.os.Bundle import android.util.Log import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.viewModels import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material.ripple.LocalRippleTheme import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.colorResource import androidx.compose.ui.tooling.preview.Preview import androidx.core.app.ActivityCompat import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.get import androidx.lifecycle.viewmodel.compose.viewModel import androidx.navigation.compose.rememberNavController import de.blinkt.openvpn.core.App import com.vpn.fastestvpnservice.beans.isDarkTheme import com.vpn.fastestvpnservice.beans.selectedtheme import com.vpn.fastestvpnservice.beans.themesList import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper import com.vpn.fastestvpnservice.interfaces.VPNConnectionCallBacks import com.vpn.fastestvpnservice.navigation.SetUpNavGraph import com.vpn.fastestvpnservice.screens.helpScreensAll.fileChooserCallback import com.vpn.fastestvpnservice.sealedClass.Screen import com.vpn.fastestvpnservice.ui.theme.FastestVPNTheme import com.vpn.fastestvpnservice.viewmodels.BillingViewModel import com.vpn.fastestvpnservice.viewmodels.LoginViewModel import com.vpn.fastestvpnservice.viewmodels.SplashViewModel import com.vpn.fastestvpnservice.viewmodels.SubscriptionViewModel class MainActivity : ComponentActivity() { val loginViewModel: LoginViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) Log.d("test_branch_compose", "QA_1.0") if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { if (ActivityCompat.checkSelfPermission( this, android.Manifest.permission.POST_NOTIFICATIONS ) != PackageManager.PERMISSION_GRANTED ) { requestPermissions(arrayOf(android.Manifest.permission.POST_NOTIFICATIONS), 1); } } // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) // commenting now... // { // ActivityCompat.requestPermissions(this, // arrayOf( // android.Manifest.permission.ACCESS_FINE_LOCATION, // android.Manifest.permission.ACCESS_COARSE_LOCATION // ), // PackageManager.PERMISSION_GRANTED // ) // } // else { // ActivityCompat.requestPermissions(this, // arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION, // android.Manifest.permission.ACCESS_COARSE_LOCATION // ), // PackageManager.PERMISSION_GRANTED // ) // } setContent { val context = LocalContext.current val basePreferenceHelper = BasePreferenceHelper(context) val selectedTheme = basePreferenceHelper.getTheme() val isSystemInDarkTheme = isSystemInDarkTheme() val systemTheme by remember { mutableStateOf(isSystemInDarkTheme) } if (selectedTheme == themesList[0]) { isDarkTheme.value = systemTheme } else { isDarkTheme.value = selectedTheme == themesList[2] } FastestVPNTheme(isDarkTheme.value) { window.statusBarColor = colorResource(id = R.color.blue_text).toArgb() val navController = rememberNavController() SetUpNavGraph(navHostController = navController, this) } } } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) Log.d("test_file_chat", "onActivityResult: $requestCode $resultCode $data") if (requestCode == 0) { Log.d("test_file_chat", "onActivityResult: ${fileChooserCallback.toString()}") fileChooserCallback?.onReceiveValue(null) } else { fileChooserCallback?.onReceiveValue(arrayOf(Uri.parse(data?.dataString))) } fileChooserCallback = null } override fun onDestroy() { super.onDestroy() val basePreferenceHelper = BasePreferenceHelper(baseContext) basePreferenceHelper.clearServerObject() Log.d("test_conn_ser_obj", "onDestroy() called") } companion object { var isWGDown: Boolean = true var isAutoEnabled: Boolean = false var isSnrNotify: Boolean = false var isSelectedServersShown: Boolean = false var vpnConnectionCallBacks: VPNConnectionCallBacks? = null var isStopSubscriptionNavigation: Boolean = true } }