|
@@ -22,8 +22,10 @@ import androidx.compose.material3.MaterialTheme
|
|
|
import androidx.compose.runtime.Composable
|
|
|
import androidx.compose.runtime.getValue
|
|
|
import androidx.compose.runtime.livedata.observeAsState
|
|
|
+import androidx.compose.runtime.mutableIntStateOf
|
|
|
import androidx.compose.runtime.mutableStateOf
|
|
|
import androidx.compose.runtime.remember
|
|
|
+import androidx.compose.runtime.rememberCoroutineScope
|
|
|
import androidx.compose.runtime.saveable.rememberSaveable
|
|
|
import androidx.compose.runtime.setValue
|
|
|
import androidx.compose.ui.Alignment
|
|
@@ -35,10 +37,15 @@ import androidx.compose.ui.res.colorResource
|
|
|
import androidx.compose.ui.res.painterResource
|
|
|
import androidx.compose.ui.text.style.TextOverflow
|
|
|
import androidx.compose.ui.unit.dp
|
|
|
+import androidx.lifecycle.viewmodel.compose.viewModel
|
|
|
import com.vpn.fastestvpnservice.R
|
|
|
import com.vpn.fastestvpnservice.beans.AutoConnectModel
|
|
|
import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper
|
|
|
+import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.homeViewModel1
|
|
|
import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.settingsViewModel
|
|
|
+import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.vpnConnectionsUtil
|
|
|
+import com.vpn.fastestvpnservice.viewmodels.HomeViewModel
|
|
|
+import de.blinkt.openvpn.core.App
|
|
|
|
|
|
@Composable
|
|
|
fun AutoConnectItem(mobileNetworkState: Boolean, basePreferenceHelper: BasePreferenceHelper) {
|
|
@@ -127,10 +134,19 @@ fun AutoConnectItem(mobileNetworkState: Boolean, basePreferenceHelper: BasePrefe
|
|
|
}
|
|
|
|
|
|
@Composable
|
|
|
-fun AutoConnectWifiItem(wifiList: AutoConnectModel, basePreferenceHelper: BasePreferenceHelper, connectedWifiSsid: String) {
|
|
|
+fun AutoConnectWifiItem(
|
|
|
+ wifiList: AutoConnectModel,
|
|
|
+ basePreferenceHelper: BasePreferenceHelper,
|
|
|
+ connectedWifiSsid: String,
|
|
|
+ context: Context
|
|
|
+) {
|
|
|
Log.d("autoconnect", "AutoConnectWifiItem = ${wifiList.wifiName} ${wifiList.isAdded}")
|
|
|
|
|
|
var isAddedWifi by rememberSaveable { mutableStateOf(wifiList.isAdded) }
|
|
|
+ val scope = rememberCoroutineScope()
|
|
|
+ val homeViewModel: HomeViewModel = viewModel{
|
|
|
+ HomeViewModel(context, scope)
|
|
|
+ }
|
|
|
|
|
|
Surface(
|
|
|
modifier = Modifier
|
|
@@ -182,6 +198,14 @@ fun AutoConnectWifiItem(wifiList: AutoConnectModel, basePreferenceHelper: BasePr
|
|
|
val isAddedText = if (isAddedWifi) "Remove" else "Add"
|
|
|
val isAddedColor = if (isAddedWifi) colorResource(id = R.color.Red) else colorResource(id = R.color.LightSeaGreen)
|
|
|
|
|
|
+// val isConnect by rememberSaveable { mutableIntStateOf(0) }
|
|
|
+// homeViewModel.isConnect.observeAsState().value?.let {
|
|
|
+// isConnect = it
|
|
|
+// homeViewModel._isConnect.value = null
|
|
|
+// }
|
|
|
+// isConnect = basePreferenceHelper.getConnectState()
|
|
|
+// Log.d("autoconnect_state", "isConnect = $isConnect Before")
|
|
|
+
|
|
|
Row(
|
|
|
modifier = Modifier
|
|
|
.padding(bottom = 0.dp, end = 0.dp)
|
|
@@ -195,7 +219,8 @@ fun AutoConnectWifiItem(wifiList: AutoConnectModel, basePreferenceHelper: BasePr
|
|
|
basePreferenceHelper,
|
|
|
isAddedWifi,
|
|
|
wifiList,
|
|
|
- connectedWifiSsid
|
|
|
+ connectedWifiSsid,
|
|
|
+ homeViewModel,
|
|
|
)
|
|
|
}
|
|
|
},
|
|
@@ -215,7 +240,13 @@ fun AutoConnectWifiItem(wifiList: AutoConnectModel, basePreferenceHelper: BasePr
|
|
|
onClick = {
|
|
|
isAddedWifi = !isAddedWifi
|
|
|
|
|
|
- onClickAutoConnect(basePreferenceHelper, isAddedWifi, wifiList, connectedWifiSsid)
|
|
|
+ onClickAutoConnect(
|
|
|
+ basePreferenceHelper,
|
|
|
+ isAddedWifi,
|
|
|
+ wifiList,
|
|
|
+ connectedWifiSsid,
|
|
|
+ homeViewModel,
|
|
|
+ )
|
|
|
}
|
|
|
) {
|
|
|
Icon(
|
|
@@ -234,7 +265,8 @@ fun onClickAutoConnect(
|
|
|
basePreferenceHelper: BasePreferenceHelper,
|
|
|
isAddedWifi: Boolean,
|
|
|
wifiList: AutoConnectModel,
|
|
|
- connectedWifiSsid: String
|
|
|
+ connectedWifiSsid: String,
|
|
|
+ homeViewModel: HomeViewModel,
|
|
|
) {
|
|
|
val wifiListAdded = ArrayList<AutoConnectModel>()
|
|
|
val wifiListRemove = ArrayList<AutoConnectModel>()
|
|
@@ -293,7 +325,25 @@ fun onClickAutoConnect(
|
|
|
|
|
|
Log.d("autoconnect_state", "wifiListAdded = ${wifiListAdded.toString()}")
|
|
|
Log.d("autoconnect_state", "wifiListRemove = ${wifiListRemove.toString()}")
|
|
|
- Log.d("autoconnect_state", "wifiListState = ${wifiListState.toString()}")
|
|
|
+
|
|
|
+ val isTrustedWifiConnected = wifiListAdded.any { it.wifiName == connectedWifiSsid && it.isAdded }
|
|
|
+
|
|
|
+ val isConnect = homeViewModel1.isConnect.value
|
|
|
+
|
|
|
+ Log.d("autoconnect_state", "isConnect = $isConnect $isTrustedWifiConnected")
|
|
|
+
|
|
|
+ if (isTrustedWifiConnected && isConnect == App.CONNECTED) {
|
|
|
+ Log.d("autoconnect_state", "Disconnect VPN")
|
|
|
+ vpnConnectionsUtil.stopVpn()
|
|
|
+ }
|
|
|
+ else if (!isTrustedWifiConnected && isConnect == App.DISCONNECTED) {
|
|
|
+ Log.d("autoconnect_state", "Connect VPN")
|
|
|
+ vpnConnectionsUtil.startVpn()
|
|
|
+ }
|
|
|
+ else if (isTrustedWifiConnected && isConnect == App.CONNECTING) {
|
|
|
+ Log.d("autoconnect_state", "Connecting VPN")
|
|
|
+ vpnConnectionsUtil.stopVpn()
|
|
|
+ }
|
|
|
|
|
|
settingsViewModel.mutableLiveDataConnectedWifi.value = wifiListAdded
|
|
|
}
|