|
@@ -28,6 +28,7 @@ import androidx.compose.foundation.layout.padding
|
|
|
import androidx.compose.foundation.layout.size
|
|
|
import androidx.compose.foundation.layout.width
|
|
|
import androidx.compose.foundation.rememberScrollState
|
|
|
+import androidx.compose.foundation.shape.CircleShape
|
|
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
|
|
import androidx.compose.foundation.text.ClickableText
|
|
|
import androidx.compose.foundation.verticalScroll
|
|
@@ -72,31 +73,38 @@ import androidx.compose.runtime.getValue
|
|
|
import androidx.compose.runtime.livedata.observeAsState
|
|
|
import androidx.compose.runtime.mutableStateOf
|
|
|
import androidx.compose.runtime.rememberUpdatedState
|
|
|
+import androidx.compose.ui.draw.clip
|
|
|
import androidx.compose.ui.graphics.painter.Painter
|
|
|
import androidx.compose.ui.input.pointer.pointerInput
|
|
|
import androidx.compose.ui.platform.LocalContext
|
|
|
import androidx.compose.ui.platform.LocalLifecycleOwner
|
|
|
+import androidx.core.app.ComponentActivity
|
|
|
import androidx.lifecycle.Lifecycle
|
|
|
import androidx.lifecycle.LifecycleEventObserver
|
|
|
import androidx.lifecycle.LifecycleOwner
|
|
|
import androidx.lifecycle.viewmodel.compose.viewModel
|
|
|
import androidx.navigation.NavHostController
|
|
|
import androidx.navigation.compose.rememberNavController
|
|
|
+import com.vpn.fastestvpnservice.application.App
|
|
|
import com.vpn.fastestvpnservice.beans.Server
|
|
|
import com.vpn.fastestvpnservice.beans.isDarkTheme
|
|
|
import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper
|
|
|
import com.vpn.fastestvpnservice.sealedClass.BottomBarScreen
|
|
|
import com.vpn.fastestvpnservice.ui.theme.FastestVPNTheme
|
|
|
+import com.vpn.fastestvpnservice.utils.Utils
|
|
|
+import com.vpn.fastestvpnservice.utils.WireGuardConnection
|
|
|
import com.vpn.fastestvpnservice.viewmodels.HomeViewModel
|
|
|
import com.vpn.fastestvpnservice.viewmodels.ServerListViewModel
|
|
|
import com.vpn.fastestvpnservice.viewmodels.SplashViewModel
|
|
|
+import com.wireguard.android.backend.GoBackend
|
|
|
|
|
|
@OptIn(ExperimentalFoundationApi::class)
|
|
|
@Composable
|
|
|
-fun Home(navHostController: NavHostController) {
|
|
|
+fun Home(navHostController: NavHostController, activity: ComponentActivity) {
|
|
|
|
|
|
val context = LocalContext.current
|
|
|
- var isConnect by remember { mutableStateOf(false) }
|
|
|
+ val basePreferenceHelper = BasePreferenceHelper(context)
|
|
|
+ var isConnect by remember { mutableStateOf(basePreferenceHelper.getConnectState()) }
|
|
|
val prefHelper = BasePreferenceHelper(context)
|
|
|
val homeViewModel: HomeViewModel = viewModel{
|
|
|
HomeViewModel(context)
|
|
@@ -108,11 +116,21 @@ fun Home(navHostController: NavHostController) {
|
|
|
SplashViewModel(context)
|
|
|
}
|
|
|
var server: Server = Server()
|
|
|
+ val wireGuardConnection = WireGuardConnection(context, activity)
|
|
|
|
|
|
OnLifecycleEvent{owner, event ->
|
|
|
when(event) {
|
|
|
Lifecycle.Event.ON_RESUME -> {
|
|
|
Log.d("test_home_resume", "ON_RESUME: Home Screen!")
|
|
|
+
|
|
|
+ try {
|
|
|
+ App.backend?.runningTunnelNames
|
|
|
+ } catch (e: Exception) {
|
|
|
+ val back = GoBackend(context)
|
|
|
+ App.setBackend(back)
|
|
|
+ App.backend = App.getBackend()
|
|
|
+ }
|
|
|
+
|
|
|
homeViewModel.getIp()
|
|
|
|
|
|
var filterServerByConnectionCount = Server()
|
|
@@ -206,7 +224,15 @@ fun Home(navHostController: NavHostController) {
|
|
|
|
|
|
IconButton(
|
|
|
onClick = {
|
|
|
+
|
|
|
+ if (isConnect) {
|
|
|
+ wireGuardConnection.stopVpn()
|
|
|
+ } else {
|
|
|
+ wireGuardConnection.startVpn()
|
|
|
+ }
|
|
|
+
|
|
|
isConnect = !isConnect
|
|
|
+ basePreferenceHelper.setConnectState(isConnect)
|
|
|
// homeViewModel.getIp()
|
|
|
|
|
|
// server.let {
|
|
@@ -247,37 +273,52 @@ fun Home(navHostController: NavHostController) {
|
|
|
.padding(top = 40.dp)
|
|
|
.height(125.dp),
|
|
|
) {
|
|
|
+ val serverObj = basePreferenceHelper.getServerObject()
|
|
|
+ val serverDis = basePreferenceHelper.getIpinfo()
|
|
|
|
|
|
+ val ip = if (isConnect) serverObj?.ip else serverDis?.query
|
|
|
AddText(
|
|
|
- text = "IP 4122.762.21",
|
|
|
+ text = "$ip",
|
|
|
size = 18.sp,
|
|
|
color = MaterialTheme.colorScheme.primary
|
|
|
)
|
|
|
Row(
|
|
|
) {
|
|
|
if (isConnect) {
|
|
|
+ val image = Utils.getDrawable(context, serverObj?.iso)
|
|
|
Image(
|
|
|
- painter = painterResource(id = R.drawable.spainlogo3x),
|
|
|
- contentDescription = "Spain",
|
|
|
+ painter = painterResource(id = image),
|
|
|
+ contentDescription = "Country",
|
|
|
modifier = Modifier
|
|
|
.padding(end = 6.dp)
|
|
|
.size(20.dp)
|
|
|
+ .clip(CircleShape)
|
|
|
+ .paint(
|
|
|
+ painter = painterResource(id = image),
|
|
|
+ contentScale = ContentScale.FillHeight
|
|
|
+ )
|
|
|
)
|
|
|
AddText(
|
|
|
- text = "Madrid, Spain",
|
|
|
+ text = "${serverObj?.server_name}, ${serverObj?.country}",
|
|
|
size = 16.sp,
|
|
|
color = MaterialTheme.colorScheme.primary
|
|
|
)
|
|
|
} else {
|
|
|
+ val image = Utils.getDrawable(context, serverDis?.countryCode)
|
|
|
Image(
|
|
|
- painter = painterResource(id = R.drawable.pklogo3x),
|
|
|
- contentDescription = "Pakistan",
|
|
|
+ painter = painterResource(id = image),
|
|
|
+ contentDescription = "Server",
|
|
|
modifier = Modifier
|
|
|
.padding(end = 6.dp)
|
|
|
.size(20.dp)
|
|
|
+ .clip(CircleShape)
|
|
|
+ .paint(
|
|
|
+ painter = painterResource(id = image),
|
|
|
+ contentScale = ContentScale.FillHeight
|
|
|
+ )
|
|
|
)
|
|
|
AddText(
|
|
|
- text = "Karachi, Pakistan",
|
|
|
+ text = "${serverDis?.city}, ${serverDis?.country}",
|
|
|
size = 16.sp,
|
|
|
color = MaterialTheme.colorScheme.primary
|
|
|
)
|
|
@@ -733,11 +774,11 @@ fun blueBackground(): Painter{
|
|
|
@Preview(showSystemUi = true, uiMode = Configuration.UI_MODE_NIGHT_NO)
|
|
|
@Composable
|
|
|
fun HomePreview() {
|
|
|
- Home(rememberNavController())
|
|
|
+// Home(rememberNavController())
|
|
|
}
|
|
|
|
|
|
@Preview(showSystemUi = true, uiMode = Configuration.UI_MODE_NIGHT_YES)
|
|
|
@Composable
|
|
|
fun HomePreviewDark() {
|
|
|
- Home(rememberNavController())
|
|
|
+// Home(rememberNavController())
|
|
|
}
|