MainActivity.kt 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. package com.vpn.fastestvpnservice
  2. import android.content.Context
  3. import android.content.Intent
  4. import android.content.pm.ActivityInfo
  5. import android.content.pm.PackageManager
  6. import android.net.Uri
  7. import android.os.Build
  8. import android.os.Bundle
  9. import android.util.Log
  10. import android.view.View
  11. import android.view.WindowManager
  12. import androidx.activity.ComponentActivity
  13. import androidx.activity.compose.setContent
  14. import androidx.activity.viewModels
  15. import androidx.compose.foundation.isSystemInDarkTheme
  16. import androidx.compose.runtime.getValue
  17. import androidx.compose.runtime.mutableStateOf
  18. import androidx.compose.runtime.remember
  19. import androidx.compose.ui.graphics.toArgb
  20. import androidx.compose.ui.platform.LocalContext
  21. import androidx.compose.ui.res.colorResource
  22. import androidx.core.app.ActivityCompat
  23. import androidx.navigation.compose.rememberNavController
  24. import com.vpn.fastestvpnservice.activities.DockActivity
  25. import com.vpn.fastestvpnservice.activities.SplashActivity
  26. import com.vpn.fastestvpnservice.activities.SplashActivity2
  27. import com.vpn.fastestvpnservice.beans.isDarkTheme
  28. import com.vpn.fastestvpnservice.beans.themesList
  29. import com.vpn.fastestvpnservice.broadcasts.ConnectivityReceiver
  30. import com.vpn.fastestvpnservice.constants.AppConstant
  31. import com.vpn.fastestvpnservice.constants.AppEnum
  32. import com.vpn.fastestvpnservice.fragments.LoginFragment
  33. import com.vpn.fastestvpnservice.fragments.TvHomeFragment
  34. import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper
  35. import com.vpn.fastestvpnservice.helpers.FragmentNavigator
  36. import com.vpn.fastestvpnservice.interfaces.VPNConnectionCallBacks
  37. import com.vpn.fastestvpnservice.navigation.SetUpNavGraph
  38. import com.vpn.fastestvpnservice.screens.helpScreensAll.fileChooserCallback
  39. import com.vpn.fastestvpnservice.ui.theme.FastestVPNTheme
  40. import com.vpn.fastestvpnservice.utils.StaticMethods
  41. import com.vpn.fastestvpnservice.viewmodels.LoginViewModel
  42. import de.blinkt.openvpn.core.App
  43. import kotlinx.coroutines.delay
  44. open class MainActivity : DockActivity(), ConnectivityReceiver.ConnectivityReceiverListener {
  45. val loginViewModel: LoginViewModel by viewModels()
  46. override fun onCreate(savedInstanceState: Bundle?) {
  47. super.onCreate(savedInstanceState)
  48. requestedOrientation = if (App.isAndroidTvBox) {
  49. /* This for Android-TV,Box APK */
  50. ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
  51. } else {
  52. /* This for Normal APK */
  53. if (StaticMethods.isTV(this)) {
  54. ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
  55. } else {
  56. ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
  57. }
  58. }
  59. val basePreferenceHelper = BasePreferenceHelper(baseContext)
  60. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
  61. if (ActivityCompat.checkSelfPermission(
  62. this,
  63. android.Manifest.permission.POST_NOTIFICATIONS
  64. ) != PackageManager.PERMISSION_GRANTED
  65. ) {
  66. requestPermissions(arrayOf(android.Manifest.permission.POST_NOTIFICATIONS), 1);
  67. }
  68. }
  69. setContent {
  70. val context = LocalContext.current
  71. val basePreferenceHelper = BasePreferenceHelper(context)
  72. val selectedTheme = basePreferenceHelper.getTheme()
  73. val isSystemInDarkTheme = isSystemInDarkTheme()
  74. val systemTheme by remember { mutableStateOf(isSystemInDarkTheme) }
  75. if (selectedTheme == themesList[0])
  76. {
  77. isDarkTheme.value = systemTheme
  78. }
  79. else {
  80. isDarkTheme.value = selectedTheme == themesList[2]
  81. }
  82. if (StaticMethods.isTV(baseContext)) {
  83. Log.d("test_platform_android", "TV")
  84. val intent = Intent(context, SplashActivity::class.java)
  85. context.startActivity(intent)
  86. } else {
  87. Log.d("test_platform_android", "Mobile")
  88. FastestVPNTheme(isDarkTheme.value) {
  89. window.statusBarColor = colorResource(id = R.color.blue_text).toArgb()
  90. val navController = rememberNavController()
  91. SetUpNavGraph(navHostController = navController, this)
  92. }
  93. }
  94. }
  95. val bundle = intent.extras
  96. bundle.let {
  97. it?.getString(AppEnum.SCREEN_NAME.key).let {
  98. it?.let {
  99. Log.d("test_nav_tv", "bundle $it")
  100. initFragment(it)
  101. }
  102. }
  103. // ?: kotlin.run {
  104. // basePreferenceHelper?.getUser()?.let {
  105. // Log.d("test_nav_tv", "kotlin.run")
  106. // initFragment(AppEnum.HOME_SCREEN.key)
  107. // }
  108. // }
  109. }
  110. }
  111. override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
  112. super.onActivityResult(requestCode, resultCode, data)
  113. Log.d("test_file_chat", "onActivityResult: $requestCode $resultCode $data")
  114. if (requestCode == 0) {
  115. Log.d("test_file_chat", "onActivityResult: ${fileChooserCallback.toString()}")
  116. fileChooserCallback?.onReceiveValue(null)
  117. } else {
  118. fileChooserCallback?.onReceiveValue(arrayOf(Uri.parse(data?.dataString)))
  119. }
  120. fileChooserCallback = null
  121. }
  122. override fun getContainerId(): Int {
  123. return R.id.activity_main
  124. }
  125. // override fun getContainerId(): Int {
  126. // return 0
  127. // }
  128. override fun onDestroy() {
  129. super.onDestroy()
  130. val basePreferenceHelper = BasePreferenceHelper(baseContext)
  131. basePreferenceHelper.clearServerObject()
  132. Log.d("test_conn_ser_obj", "onDestroy() called")
  133. }
  134. fun initFragment(key: String) {
  135. Log.d("test_nav_tv", "initFragment() => $key")
  136. // val fragmentNavigator: FragmentNavigator = FragmentNavigator()
  137. when (key) {
  138. AppEnum.LOGIN_SCREEN.key -> {
  139. val i = Intent(this, SplashActivity2::class.java)
  140. startActivity(i)
  141. // fragmentNavigator.replaceFragmentWithBackStack(LoginFragment.newInstance())
  142. }
  143. AppEnum.HOME_SCREEN.key -> {
  144. // fragmentNavigator.clearAllFragments()
  145. if (App.isAndroidTvBox)
  146. {
  147. /* Android-TV,Box APK */
  148. fragmentNavigator.replaceFragmentWithBackStackTv(TvHomeFragment.newInstance(), "tv_home")
  149. }
  150. else {
  151. /* Normal APK*/
  152. if (StaticMethods.isTV(this)) {
  153. Log.d("test_nav_tv", "isTV =>")
  154. val i = Intent(this, SplashActivity2::class.java)
  155. startActivity(i)
  156. // fragmentNavigator.replaceFragmentWithBackStackTv(TvHomeFragment.newInstance(), "tv_home")
  157. } else {
  158. fragmentNavigator.replaceFragmentWithBackStack(TvHomeFragment.newInstance())
  159. }
  160. }
  161. }
  162. // AppEnum.SIGNUP_SCREEN.key -> {
  163. // fragmentNavigator.replaceFragment(SignUpFragment.newInstance())
  164. // }
  165. AppEnum.HELP_SCREEN.key -> {
  166. // fragmentNavigator.replaceFragment(
  167. // WebViewFragment.newInstance(
  168. // AppConstant.FAQ_WEBVIEW_URL, getString(R.string.help_faq)
  169. // )
  170. // )
  171. }
  172. }
  173. }
  174. companion object {
  175. var isWGDown: Boolean = true
  176. var isAutoEnabled: Boolean = false
  177. var isSnrNotify: Boolean = false
  178. var isSelectedServersShown: Boolean = false
  179. var vpnConnectionCallBacks: VPNConnectionCallBacks? = null
  180. var isStopSubscriptionNavigation: Boolean = true
  181. fun getCallingIntent(_context: Context?): Intent {
  182. return Intent(_context, MainActivity::class.java)
  183. }
  184. fun test() {
  185. Log.d("test_nav_tv", "test function")
  186. }
  187. }
  188. override fun onNetworkConnectionChanged(isConnected: Boolean) {
  189. TODO("Not yet implemented")
  190. }
  191. }
  192. // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) // commenting now...
  193. // {
  194. // ActivityCompat.requestPermissions(this,
  195. // arrayOf(
  196. // android.Manifest.permission.ACCESS_FINE_LOCATION,
  197. // android.Manifest.permission.ACCESS_COARSE_LOCATION
  198. // ),
  199. // PackageManager.PERMISSION_GRANTED
  200. // )
  201. // }
  202. // else {
  203. // ActivityCompat.requestPermissions(this,
  204. // arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION,
  205. // android.Manifest.permission.ACCESS_COARSE_LOCATION
  206. // ),
  207. // PackageManager.PERMISSION_GRANTED
  208. // )
  209. // }