MainActivity.kt 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. package com.vpn.fastestvpnservice
  2. import android.content.Intent
  3. import android.content.pm.PackageManager
  4. import android.net.Uri
  5. import android.os.Build
  6. import android.os.Bundle
  7. import android.util.Log
  8. import androidx.activity.ComponentActivity
  9. import androidx.activity.compose.setContent
  10. import androidx.activity.viewModels
  11. import androidx.compose.foundation.isSystemInDarkTheme
  12. import androidx.compose.foundation.layout.fillMaxSize
  13. import androidx.compose.material.ripple.LocalRippleTheme
  14. import androidx.compose.material3.MaterialTheme
  15. import androidx.compose.material3.Surface
  16. import androidx.compose.material3.Text
  17. import androidx.compose.runtime.Composable
  18. import androidx.compose.runtime.CompositionLocalProvider
  19. import androidx.compose.runtime.getValue
  20. import androidx.compose.runtime.mutableStateOf
  21. import androidx.compose.runtime.remember
  22. import androidx.compose.ui.Modifier
  23. import androidx.compose.ui.graphics.Color
  24. import androidx.compose.ui.graphics.toArgb
  25. import androidx.compose.ui.platform.LocalContext
  26. import androidx.compose.ui.res.colorResource
  27. import androidx.compose.ui.tooling.preview.Preview
  28. import androidx.core.app.ActivityCompat
  29. import androidx.lifecycle.LifecycleOwner
  30. import androidx.lifecycle.ViewModelProvider
  31. import androidx.lifecycle.get
  32. import androidx.lifecycle.viewmodel.compose.viewModel
  33. import androidx.navigation.compose.rememberNavController
  34. import de.blinkt.openvpn.core.App
  35. import com.vpn.fastestvpnservice.beans.isDarkTheme
  36. import com.vpn.fastestvpnservice.beans.selectedtheme
  37. import com.vpn.fastestvpnservice.beans.themesList
  38. import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper
  39. import com.vpn.fastestvpnservice.interfaces.VPNConnectionCallBacks
  40. import com.vpn.fastestvpnservice.navigation.SetUpNavGraph
  41. import com.vpn.fastestvpnservice.screens.helpScreensAll.fileChooserCallback
  42. import com.vpn.fastestvpnservice.sealedClass.Screen
  43. import com.vpn.fastestvpnservice.ui.theme.FastestVPNTheme
  44. import com.vpn.fastestvpnservice.viewmodels.BillingViewModel
  45. import com.vpn.fastestvpnservice.viewmodels.LoginViewModel
  46. import com.vpn.fastestvpnservice.viewmodels.SplashViewModel
  47. import com.vpn.fastestvpnservice.viewmodels.SubscriptionViewModel
  48. class MainActivity : ComponentActivity() {
  49. val loginViewModel: LoginViewModel by viewModels()
  50. override fun onCreate(savedInstanceState: Bundle?) {
  51. super.onCreate(savedInstanceState)
  52. Log.d("test_branch_compose", "QA_1.0")
  53. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
  54. if (ActivityCompat.checkSelfPermission(
  55. this,
  56. android.Manifest.permission.POST_NOTIFICATIONS
  57. ) != PackageManager.PERMISSION_GRANTED
  58. ) {
  59. requestPermissions(arrayOf(android.Manifest.permission.POST_NOTIFICATIONS), 1);
  60. }
  61. }
  62. // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) // commenting now...
  63. // {
  64. // ActivityCompat.requestPermissions(this,
  65. // arrayOf(
  66. // android.Manifest.permission.ACCESS_FINE_LOCATION,
  67. // android.Manifest.permission.ACCESS_COARSE_LOCATION
  68. // ),
  69. // PackageManager.PERMISSION_GRANTED
  70. // )
  71. // }
  72. // else {
  73. // ActivityCompat.requestPermissions(this,
  74. // arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION,
  75. // android.Manifest.permission.ACCESS_COARSE_LOCATION
  76. // ),
  77. // PackageManager.PERMISSION_GRANTED
  78. // )
  79. // }
  80. setContent {
  81. val context = LocalContext.current
  82. val basePreferenceHelper = BasePreferenceHelper(context)
  83. val selectedTheme = basePreferenceHelper.getTheme()
  84. val isSystemInDarkTheme = isSystemInDarkTheme()
  85. val systemTheme by remember { mutableStateOf(isSystemInDarkTheme) }
  86. if (selectedTheme == themesList[0])
  87. {
  88. isDarkTheme.value = systemTheme
  89. }
  90. else {
  91. isDarkTheme.value = selectedTheme == themesList[2]
  92. }
  93. FastestVPNTheme(isDarkTheme.value) {
  94. window.statusBarColor = colorResource(id = R.color.blue_text).toArgb()
  95. val navController = rememberNavController()
  96. SetUpNavGraph(navHostController = navController, this)
  97. }
  98. }
  99. }
  100. override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
  101. super.onActivityResult(requestCode, resultCode, data)
  102. Log.d("test_file_chat", "onActivityResult: $requestCode $resultCode $data")
  103. if (requestCode == 0) {
  104. Log.d("test_file_chat", "onActivityResult: ${fileChooserCallback.toString()}")
  105. fileChooserCallback?.onReceiveValue(null)
  106. } else {
  107. fileChooserCallback?.onReceiveValue(arrayOf(Uri.parse(data?.dataString)))
  108. }
  109. fileChooserCallback = null
  110. }
  111. override fun onDestroy() {
  112. super.onDestroy()
  113. val basePreferenceHelper = BasePreferenceHelper(baseContext)
  114. basePreferenceHelper.clearServerObject()
  115. Log.d("test_conn_ser_obj", "onDestroy() called")
  116. }
  117. companion object {
  118. var isWGDown: Boolean = true
  119. var isAutoEnabled: Boolean = false
  120. var isSnrNotify: Boolean = false
  121. var isSelectedServersShown: Boolean = false
  122. var vpnConnectionCallBacks: VPNConnectionCallBacks? = null
  123. var isStopSubscriptionNavigation: Boolean = true
  124. }
  125. }