package com.vpn.fastestvpnservice import android.content.Context import android.content.Intent import android.content.pm.ActivityInfo import android.content.pm.PackageManager import android.net.Uri import android.os.Build import android.os.Bundle import android.util.Log import android.view.View import android.view.WindowManager import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.viewModels import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.colorResource import androidx.core.app.ActivityCompat import androidx.navigation.compose.rememberNavController import com.vpn.fastestvpnservice.activities.DockActivity import com.vpn.fastestvpnservice.activities.SplashActivity import com.vpn.fastestvpnservice.activities.SplashActivity2 import com.vpn.fastestvpnservice.beans.isDarkTheme import com.vpn.fastestvpnservice.beans.themesList import com.vpn.fastestvpnservice.broadcasts.ConnectivityReceiver import com.vpn.fastestvpnservice.constants.AppConstant import com.vpn.fastestvpnservice.constants.AppEnum import com.vpn.fastestvpnservice.fragments.LoginFragment import com.vpn.fastestvpnservice.fragments.TvHomeFragment import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper import com.vpn.fastestvpnservice.helpers.FragmentNavigator import com.vpn.fastestvpnservice.interfaces.VPNConnectionCallBacks import com.vpn.fastestvpnservice.navigation.SetUpNavGraph import com.vpn.fastestvpnservice.screens.helpScreensAll.fileChooserCallback import com.vpn.fastestvpnservice.ui.theme.FastestVPNTheme import com.vpn.fastestvpnservice.utils.StaticMethods import com.vpn.fastestvpnservice.viewmodels.LoginViewModel import de.blinkt.openvpn.core.App import kotlinx.coroutines.delay open class MainActivity : DockActivity(), ConnectivityReceiver.ConnectivityReceiverListener { val loginViewModel: LoginViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) requestedOrientation = if (App.isAndroidTvBox) { /* This for Android-TV,Box APK */ ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE } else { /* This for Normal APK */ if (StaticMethods.isTV(this)) { ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE } else { ActivityInfo.SCREEN_ORIENTATION_PORTRAIT } } val basePreferenceHelper = BasePreferenceHelper(baseContext) 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); } } 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] } if (StaticMethods.isTV(baseContext)) { Log.d("test_platform_android", "TV") val intent = Intent(context, SplashActivity::class.java) context.startActivity(intent) } else { Log.d("test_platform_android", "Mobile") FastestVPNTheme(isDarkTheme.value) { window.statusBarColor = colorResource(id = R.color.blue_text).toArgb() val navController = rememberNavController() SetUpNavGraph(navHostController = navController, this) } } } val bundle = intent.extras bundle.let { it?.getString(AppEnum.SCREEN_NAME.key).let { it?.let { Log.d("test_nav_tv", "bundle $it") initFragment(it) } } // ?: kotlin.run { // basePreferenceHelper?.getUser()?.let { // Log.d("test_nav_tv", "kotlin.run") // initFragment(AppEnum.HOME_SCREEN.key) // } // } } } 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 getContainerId(): Int { return R.id.activity_main } // override fun getContainerId(): Int { // return 0 // } override fun onDestroy() { super.onDestroy() val basePreferenceHelper = BasePreferenceHelper(baseContext) basePreferenceHelper.clearServerObject() Log.d("test_conn_ser_obj", "onDestroy() called") } fun initFragment(key: String) { Log.d("test_nav_tv", "initFragment() => $key") // val fragmentNavigator: FragmentNavigator = FragmentNavigator() when (key) { AppEnum.LOGIN_SCREEN.key -> { val i = Intent(this, SplashActivity2::class.java) startActivity(i) // fragmentNavigator.replaceFragmentWithBackStack(LoginFragment.newInstance()) } AppEnum.HOME_SCREEN.key -> { // fragmentNavigator.clearAllFragments() if (App.isAndroidTvBox) { /* Android-TV,Box APK */ fragmentNavigator.replaceFragmentWithBackStackTv(TvHomeFragment.newInstance(), "tv_home") } else { /* Normal APK*/ if (StaticMethods.isTV(this)) { Log.d("test_nav_tv", "isTV =>") val i = Intent(this, SplashActivity2::class.java) startActivity(i) // fragmentNavigator.replaceFragmentWithBackStackTv(TvHomeFragment.newInstance(), "tv_home") } else { fragmentNavigator.replaceFragmentWithBackStack(TvHomeFragment.newInstance()) } } } // AppEnum.SIGNUP_SCREEN.key -> { // fragmentNavigator.replaceFragment(SignUpFragment.newInstance()) // } AppEnum.HELP_SCREEN.key -> { // fragmentNavigator.replaceFragment( // WebViewFragment.newInstance( // AppConstant.FAQ_WEBVIEW_URL, getString(R.string.help_faq) // ) // ) } } } 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 fun getCallingIntent(_context: Context?): Intent { return Intent(_context, MainActivity::class.java) } fun test() { Log.d("test_nav_tv", "test function") } } override fun onNetworkConnectionChanged(isConnected: Boolean) { TODO("Not yet implemented") } } // 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 // ) // }