Browse Source

added int states for connection status...

Khubaib 11 tháng trước cách đây
mục cha
commit
aa0de4a305

+ 5 - 0
app/src/main/java/com/vpn/fastestvpnservice/application/App.java

@@ -20,6 +20,11 @@ public class App extends Application {
     public static Backend backend;
 
     public static final int NOTIFICATION_ID = new Random().nextInt(601) + 200;
+    public static final int DISCONNECTED = 0;
+    public static final int CONNECTING = 1;
+    public static final int CONNECTED = 2;
+
+
 
 
     public static void setBackend(Backend backend1) {

+ 4 - 4
app/src/main/java/com/vpn/fastestvpnservice/helpers/BasePreferenceHelper.kt

@@ -431,12 +431,12 @@ class BasePreferenceHelper(private val context: Context) : PreferencesHelper() {
         putBooleanPreference(context, KEY_FILENAME, KEY_ISLOGGEDIN, state)
     }
 
-    fun getConnectState(): Boolean {
-        return getBooleanPreference(context, KEY_FILENAME, KEY_ISCONNECT)
+    fun getConnectState(): Int {
+        return getIntegerPreference(context, KEY_FILENAME, KEY_ISCONNECT)
     }
 
-    fun setConnectState(state: Boolean) {
-        putBooleanPreference(context, KEY_FILENAME, KEY_ISCONNECT, state)
+    fun setConnectState(state: Int) {
+        putIntegerPreference(context, KEY_FILENAME, KEY_ISCONNECT, state)
     }
 
     fun getFcmToken(): String {

+ 1 - 1
app/src/main/java/com/vpn/fastestvpnservice/helpers/PreferencesHelper.java

@@ -59,7 +59,7 @@ public class PreferencesHelper {
     protected int getIntegerPreference(Context context, String prefsName, String key) {
 
         SharedPreferences preferences = context.getSharedPreferences(prefsName, Activity.MODE_PRIVATE);
-        int value = preferences.getInt(key, -1);
+        int value = preferences.getInt(key, 0);
         return value;
     }
 

+ 19 - 10
app/src/main/java/com/vpn/fastestvpnservice/screens/bottomNavBarScreens/HomeScreen.kt

@@ -221,7 +221,7 @@ fun Home(navHostController: NavHostController, activity: ComponentActivity) {
     val wg = WireGuardConnection(context, activity, homeViewModel)
     homeViewModel1 = homeViewModel
 
-    var isConnect: Boolean = homeViewModel.isConnect.observeAsState().value == true
+    var isConnect: Int? = homeViewModel.isConnect.observeAsState().value
     Log.d("isConnect_State", "live: $isConnect")
     isConnect = basePreferenceHelper.getConnectState()
     Log.d("isConnect_State", "$isConnect prefs => ${basePreferenceHelper.getConnectState()}")
@@ -318,7 +318,7 @@ fun Home(navHostController: NavHostController, activity: ComponentActivity) {
                 .align(Alignment.TopStart)
                 .height(320.dp)
                 .padding(top = 0.dp),
-            painter = if (isConnect) blueBackground() else pinkBackground(),
+            painter = if (isConnect == App.CONNECTED) blueBackground() else pinkBackground(),
             contentDescription = "Home Map",
             contentScale = ContentScale.FillBounds,
         )
@@ -352,7 +352,7 @@ fun Home(navHostController: NavHostController, activity: ComponentActivity) {
         IconButton(
             onClick = {
                 Log.d("isConnect_State", "onClick{} -> $isConnect")
-                if (isConnect) {
+                if (isConnect == App.CONNECTED || isConnect == App.CONNECTING) {
                     wireGuardConnection.stopVpn()
                     homeViewModel.getIp()
                 } else {
@@ -371,7 +371,7 @@ fun Home(navHostController: NavHostController, activity: ComponentActivity) {
                 .size(234.dp),
         )
         {
-            if (isConnect) {
+            if (isConnect == App.CONNECTED) {
                 Image(
                     painter = painterResource(id = R.drawable.iv_connect),
                     contentDescription = "Home Map",
@@ -400,7 +400,7 @@ fun Home(navHostController: NavHostController, activity: ComponentActivity) {
             val serverDis = basePreferenceHelper.getIpinfo()
 
             var ipInfo = homeViewModel.mutableLiveDataIpInfo.observeAsState().value?.query
-            ipInfo = if (isConnect) serverObj?.ip.toString() else serverDis?.query
+            ipInfo = if (isConnect == App.CONNECTED) serverObj?.ip.toString() else serverDis?.query
             AddText(
                 text = "$ipInfo",
                 size = 18.sp,
@@ -409,7 +409,7 @@ fun Home(navHostController: NavHostController, activity: ComponentActivity) {
             )
             Row(
             ) {
-                if (isConnect) {
+                if (isConnect == App.CONNECTED) {
                     val image = Utils.getDrawable(context, serverObj?.iso)
                     if (image != 0) {
                         Image(
@@ -454,14 +454,15 @@ fun Home(navHostController: NavHostController, activity: ComponentActivity) {
                     )
                 }
             }
-            if (isConnect) {
+            if (isConnect == App.CONNECTED) {
                 AddText(
                     text = "Connected",
                     size = 18.sp,
                     color = colorResource(id = R.color.light_blue_2),
                     style = MaterialTheme.typography.customTypography.displaySmall
                 )
-            } else {
+            }
+            else if (isConnect == App.DISCONNECTED) {
                 AddText(
                     text = "Disconnected",
                     size = 18.sp,
@@ -469,6 +470,14 @@ fun Home(navHostController: NavHostController, activity: ComponentActivity) {
                     style = MaterialTheme.typography.customTypography.displaySmall
                 )
             }
+            else if (isConnect == App.CONNECTING) {
+                AddText(
+                    text = "Connecting...",
+                    size = 18.sp,
+                    color = colorResource(id = R.color.maroon_text),
+                    style = MaterialTheme.typography.customTypography.displaySmall
+                )
+            }
         }
 
         CompositionLocalProvider(
@@ -482,7 +491,7 @@ fun Home(navHostController: NavHostController, activity: ComponentActivity) {
                     .fillMaxSize()
             ) {
                 /* Smart Connect Box*/
-                if (isConnect) {
+                if (isConnect == App.CONNECTED) {
                     Box(
                         modifier = Modifier
                             .fillMaxWidth()
@@ -641,7 +650,7 @@ fun Home(navHostController: NavHostController, activity: ComponentActivity) {
                 }
 
                 /* Select Server Box*/
-                if (!isConnect) {
+                if (isConnect != App.CONNECTED) {
                     Box(
                         modifier = Modifier
                             .fillMaxWidth()

+ 2 - 2
app/src/main/java/com/vpn/fastestvpnservice/utils/WireGuardConnection.kt

@@ -93,12 +93,12 @@ class WireGuardConnection {
             try {
                 if (isUp) {
                     App.tunnelStatus = Tunnel.State.UP
-                    homeViewModel.setConnectState(true)
+                    homeViewModel.setConnectState(App.CONNECTED)
                     Log.d("test_wg", "tunnelStatus if = ${App.tunnelStatus}")
 
                 } else {
                     App.tunnelStatus = Tunnel.State.DOWN
-                    homeViewModel.setConnectState(false)
+                    homeViewModel.setConnectState(App.DISCONNECTED)
                     Log.d("test_wg", "tunnelStatus else = ${App.tunnelStatus}")
                 }
 

+ 3 - 3
app/src/main/java/com/vpn/fastestvpnservice/viewmodels/HomeViewModel.kt

@@ -29,15 +29,15 @@ class HomeViewModel constructor(context: Context, scope: CoroutineScope): ViewMo
     var liveDataValidate : LiveData<DataResponse<TokenResponse>> = _mutableLiveDataValidate
     var mutableLiveDataValidateError = MutableLiveData<String>()
 
-    var _isConnect = MutableLiveData<Boolean>(prefHelper.getConnectState())
-    var isConnect: LiveData<Boolean> = _isConnect
+    var _isConnect = MutableLiveData<Int>(prefHelper.getConnectState())
+    var isConnect: LiveData<Int> = _isConnect
 
     init {
         prefHelper = BasePreferenceHelper(context)
         this.scope = scope
     }
 
-    fun setConnectState(state: Boolean) {
+    fun setConnectState(state: Int) {
         Log.d("isConnect_State", "setConnectState1:: $state")
 
         _isConnect.postValue(state)