MainActivity.kt 6.0 KB

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