SplashScreenTV.kt 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. package com.vpn.fastestvpnservice.screensTV
  2. import android.widget.Toast
  3. import androidx.compose.foundation.Image
  4. import androidx.compose.foundation.layout.Box
  5. import androidx.compose.foundation.layout.Row
  6. import androidx.compose.foundation.layout.fillMaxSize
  7. import androidx.compose.foundation.layout.height
  8. import androidx.compose.foundation.layout.padding
  9. import androidx.compose.foundation.layout.width
  10. import androidx.compose.runtime.Composable
  11. import androidx.compose.runtime.LaunchedEffect
  12. import androidx.compose.ui.Alignment
  13. import androidx.compose.ui.Modifier
  14. import androidx.compose.ui.draw.paint
  15. import androidx.compose.ui.layout.ContentScale
  16. import androidx.compose.ui.platform.LocalContext
  17. import androidx.compose.ui.res.painterResource
  18. import androidx.compose.ui.unit.dp
  19. import androidx.lifecycle.viewmodel.compose.viewModel
  20. import androidx.navigation.NavHostController
  21. import com.vpn.fastestvpnservice.R
  22. import com.vpn.fastestvpnservice.beans.Server
  23. import com.vpn.fastestvpnservice.beans.ServerDataGlobal
  24. import com.vpn.fastestvpnservice.beans.isDarkTheme
  25. import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper
  26. import com.vpn.fastestvpnservice.screens.serverListViewModelSplash
  27. import com.vpn.fastestvpnservice.sealedClass.ScreenTV
  28. import com.vpn.fastestvpnservice.viewmodels.SearchListViewModel
  29. import com.vpn.fastestvpnservice.viewmodels.ServerListViewModel
  30. import com.vpn.fastestvpnservice.viewmodels.SplashViewModel
  31. import kotlinx.coroutines.delay
  32. //var recommendedListGlobal: ArrayList<Server> = ArrayList<Server>()
  33. //var recommendedListFinalGlobal: List<Server> = emptyList()
  34. //val smartLocationListGlobal: ArrayList<Server> = ArrayList<Server>()
  35. //var serversListAllGlobal: ArrayList<Server> = ArrayList<Server>()
  36. //var serversGroupListGlobal: ArrayList<ServerDataGlobal?> = ArrayList<ServerDataGlobal?>()
  37. //var serversListGlobal: ArrayList<ServerDataGlobal?> = ArrayList<ServerDataGlobal?>()
  38. //var serversListFinalGlobal: List<ServerDataGlobal?> = ArrayList()
  39. lateinit var splashViewModelSplash: SplashViewModel
  40. //lateinit var serverListViewModelSplash: ServerListViewModel
  41. lateinit var searchListViewModelSplash: SearchListViewModel
  42. @Composable
  43. fun SplashTV(navHostController: NavHostController) {
  44. val context = LocalContext.current
  45. val basePreferenceHelper = BasePreferenceHelper(context)
  46. Box(modifier = Modifier
  47. .paint(
  48. painter = painterResource(id = if (isDarkTheme.value) R.drawable.bg_app_light else R.drawable.bg_app_light),
  49. contentScale = ContentScale.FillBounds
  50. )
  51. .fillMaxSize(),
  52. // .windowInsetsPadding(WindowInsets.systemBars),
  53. ) {
  54. // val view = LocalView.current
  55. // val window = (view.context as Activity).window
  56. // window.statusBarColor = Color.Transparent.toArgb()
  57. // window.navigationBarColor = Color.Transparent.toArgb()
  58. Image(
  59. modifier = Modifier
  60. .width(146.dp)
  61. .height(199.dp)
  62. .align(Alignment.Center),
  63. painter = painterResource(
  64. id = R.drawable.fastestapp_logo3x),
  65. contentDescription = "FastestVPN",
  66. )
  67. Image(
  68. modifier = Modifier
  69. .align(Alignment.BottomCenter)
  70. .padding(bottom = 50.dp)
  71. .width(202.dp)
  72. .height(28.dp),
  73. painter = painterResource(
  74. id = R.drawable.fastestvpn_name3),
  75. contentDescription = "FastestVPN Name",
  76. )
  77. Row (
  78. modifier = Modifier
  79. .align(Alignment.BottomCenter)
  80. .padding(50.dp),
  81. ){}
  82. val isLoggedIn = basePreferenceHelper.getLoggedInState()
  83. if (isLoggedIn) {
  84. splashViewModelSplash = viewModel {
  85. SplashViewModel(context)
  86. }
  87. serverListViewModelSplash = viewModel {
  88. ServerListViewModel(context = context)
  89. }
  90. searchListViewModelSplash = viewModel {
  91. SearchListViewModel(context, serverListViewModelSplash, splashViewModelSplash)
  92. }
  93. }
  94. val delay: Long = if (isLoggedIn) 1000 else 2000
  95. LaunchedEffect(key1 = true) {
  96. delay(delay)
  97. if (isLoggedIn) {
  98. serverListViewModelSplash.setRecommendedSmartServers()
  99. serverListViewModelSplash.setCountryDataTV()
  100. splashViewModelSplash.serverDataApi()
  101. navHostController.popBackStack()
  102. navHostController.navigate(ScreenTV.BottomBarTV.route)
  103. } else {
  104. navHostController.popBackStack()
  105. navHostController.navigate(ScreenTV.LoginTV.route)
  106. }
  107. }
  108. }
  109. }