Browse Source

Set UI for TV of logout dialog & worked on delete API on TV

Khubaib 7 months ago
parent
commit
31b5cc58d4

+ 1 - 1
.idea/deploymentTargetSelector.xml

@@ -4,7 +4,7 @@
     <selectionStates>
       <SelectionState runConfigName="app">
         <option name="selectionMode" value="DROPDOWN" />
-        <DropdownSelection timestamp="2024-07-18T11:16:12.497229403Z">
+        <DropdownSelection timestamp="2024-07-18T13:47:51.214529097Z">
           <Target type="DEFAULT_BOOT">
             <handle>
               <DeviceId pluginId="Default" identifier="serial=192.168.108.28:5555;connection=909aac42" />

+ 1 - 1
app/src/main/java/com/vpn/fastestvpnservice/navigation/BottomBarNavGraphTV.kt

@@ -52,7 +52,7 @@ fun BottomBarNavGraphTV(navHostController: NavHostController,
     ) {
 
         composable(route = BottomBarScreen.Home.route) {
-            HomeTV(navHostController = navHostController)
+            HomeTV(navHostController = navHostController, settingsNavHostController = settingsNavHostController)
         }
         composable(route = BottomBarScreen.Settings.route) {
             SettingsTV(navHostController = navHostController)

+ 3 - 3
app/src/main/java/com/vpn/fastestvpnservice/navigation/NavGraphTV.kt

@@ -47,9 +47,9 @@ fun SetUpNavGraphTV(navHostController: NavHostController, activity: ComponentAct
         composable(route = ScreenTV.LoginTV.route) {
             LoginTV(navHostController = navHostController)
         }
-        composable(route = ScreenTV.HomeTV.route) {
-            HomeTV(navHostController = navHostController)
-        }
+//        composable(route = ScreenTV.HomeTV.route) {
+//            HomeTV(navHostController = navHostController)
+//        }
         composable(route =  ScreenTV.BottomBarTV.route) {
             CustomBottomBarTV(navHostController = navHostController, activity)
         }

+ 5 - 7
app/src/main/java/com/vpn/fastestvpnservice/screens/bottomNavBarScreens/AccountScreen.kt

@@ -535,19 +535,19 @@ fun BoxScope.LogoutDialog(
             horizontalAlignment = Alignment.CenterHorizontally,
             modifier = Modifier
 //                .background(MaterialTheme.colorScheme.onBackground)
-                .background(Color.White)
+                .background(MaterialTheme.colorScheme.onBackground)
         ) {
             Log.d("islogoutClicked", "AlertDialog")
 
             Text(text = title,
 //                color = MaterialTheme.colorScheme.primary,
-                color = colorResource(id = R.color.dark_blue_gray_text),
+                color = MaterialTheme.colorScheme.primary,
                 style = MaterialTheme.typography.bodyMedium,
                 modifier = Modifier.padding(top = 45.dp)
             )
             Text(text = desc,
 //                color = MaterialTheme.colorScheme.primary,
-                color = colorResource(id = R.color.dark_blue_gray_text),
+                color = MaterialTheme.colorScheme.primary,
                 style = MaterialTheme.typography.labelSmall,
                 maxLines = 2,
                 modifier = Modifier.padding(top = 26.dp)
@@ -579,10 +579,9 @@ fun BoxScope.LogoutDialog(
 
                     shape = RoundedCornerShape(15.dp),
                     colors = ButtonDefaults.buttonColors(
-                        contentColor = if (isButtonFocused1) colorResource(id = R.color.dark_blue_gray_text) else colorResource(id = R.color.white),
+                        contentColor = colorResource(id = R.color.white),
                         containerColor = colorResource(id = R.color.light_blue),
                     ),
-                    border = BorderStroke(2.dp, if (isButtonFocused1) colorResource(id = R.color.dark_blue_gray_text) else colorResource(id = R.color.light_blue))
                 )
                 {
                     Text(text = "No",
@@ -634,10 +633,9 @@ fun BoxScope.LogoutDialog(
                         .height(52.dp),
                     shape = RoundedCornerShape(15.dp),
                     colors = ButtonDefaults.buttonColors(
-                        contentColor = if (isButtonFocused2) colorResource(id = R.color.dark_blue_gray_text) else colorResource(id = R.color.white),
+                        contentColor = colorResource(id = R.color.white),
                         containerColor = colorResource(id = R.color.red),
                     ),
-                    border = BorderStroke(2.dp, if (isButtonFocused2) colorResource(id = R.color.dark_blue_gray_text) else colorResource(id = R.color.red))
                 )
                 {
                     Text(text = "Yes",

+ 25 - 9
app/src/main/java/com/vpn/fastestvpnservice/screensTV/AccountScreenTV.kt

@@ -7,6 +7,7 @@ import android.os.Looper
 import android.util.Log
 import android.widget.Toast
 import androidx.activity.compose.BackHandler
+import androidx.compose.foundation.BorderStroke
 import androidx.compose.foundation.ExperimentalFoundationApi
 import androidx.compose.foundation.Image
 import androidx.compose.foundation.LocalOverscrollConfiguration
@@ -225,7 +226,7 @@ fun AccountTV(navHostController: NavHostController,
                         .fillMaxWidth()
                         .height(228.dp)
                 ) {
-                    LogoutDialog("Logout Account",
+                    LogoutDialogTV("Logout Account",
                         "Are you sure to logout the account?",
                         onCancel = {
                             isLoggedOut = false
@@ -249,7 +250,7 @@ fun AccountTV(navHostController: NavHostController,
                         .fillMaxWidth()
                         .height(228.dp)
                 ) {
-                    LogoutDialog("Delete Account",
+                    LogoutDialogTV("Delete Account",
                         "Are you sure to delete the account?",
                         onCancel = { isDelete = false },
                         settingsNavHostController,
@@ -306,13 +307,17 @@ fun AccountTV(navHostController: NavHostController,
 
             val deleteResponse = accountViewModel.liveDataDelete.observeAsState().value
             deleteResponse?.let {
+                Log.d("test_api_response","Delete Response")
+//                Toast.makeText(
+//                    context, "API Response IN", Toast.LENGTH_SHORT
+//                ).show()
                 accountViewModel.setLogoutStatus(false)
                 if (it.status) {
                     Log.d("test_api_response","Delete live: ${deleteResponse.status}")
                     basePreferenceHelper.setLoggedInState(false)
                     basePreferenceHelper.clearAllData()
                     settingsNavHostController.popBackStack()
-                    settingsNavHostController.navigate(Screen.Started.route)
+                    settingsNavHostController.navigate(ScreenTV.LoginTV.route)
                 }
                 else {
                     Log.d("test_api_response","Delete false: ${deleteResponse.status}")
@@ -584,6 +589,9 @@ fun BoxScope.LogoutDialogTV(
     val homeViewModel: HomeViewModel = viewModel {
         HomeViewModel(context, scope)
     }
+    var isButtonFocused1 by remember { mutableStateOf(false) }
+    var isButtonFocused2 by remember { mutableStateOf(false) }
+
     Surface(
         color = colorResource(id = R.color.white),
         modifier = Modifier
@@ -596,17 +604,17 @@ fun BoxScope.LogoutDialogTV(
             verticalArrangement = Arrangement.Top,
             horizontalAlignment = Alignment.CenterHorizontally,
             modifier = Modifier
-                .background(MaterialTheme.colorScheme.onBackground)
+                .background(Color.White)
         ) {
             Log.d("islogoutClicked", "AlertDialog")
 
             Text(text = title,
-                color = MaterialTheme.colorScheme.inversePrimary,
+                color = colorResource(id = R.color.dark_blue_gray_text),
                 style = MaterialTheme.typography.bodyMedium,
                 modifier = Modifier.padding(top = 45.dp)
             )
             Text(text = desc,
-                color = MaterialTheme.colorScheme.inversePrimary,
+                color = colorResource(id = R.color.dark_blue_gray_text),
                 style = MaterialTheme.typography.labelSmall,
                 maxLines = 2,
                 modifier = Modifier.padding(top = 26.dp)
@@ -629,15 +637,18 @@ fun BoxScope.LogoutDialogTV(
                             start = 15.dp, end = 5.dp,
                             bottom = 0.dp, top = 0.dp
                         )
+                        .onFocusChanged {
+                            isButtonFocused1 = it.isFocused
+                        }
                         .background(colorResource(id = R.color.transparent))
                         .weight(1F)
                         .height(52.dp),
-
                     shape = RoundedCornerShape(15.dp),
                     colors = ButtonDefaults.buttonColors(
-                        contentColor = colorResource(id = R.color.white),
+                        contentColor = if (isButtonFocused1) colorResource(id = R.color.dark_blue_gray_text) else colorResource(id = R.color.white),
                         containerColor = colorResource(id = R.color.light_blue),
                     ),
+                    border = BorderStroke(2.dp, if (isButtonFocused1) colorResource(id = R.color.dark_blue_gray_text) else colorResource(id = R.color.light_blue))
                 )
                 {
                     Text(text = "No",
@@ -681,14 +692,19 @@ fun BoxScope.LogoutDialogTV(
                             start = 5.dp, end = 15.dp,
                             bottom = 0.dp, top = 0.dp
                         )
+                        .onFocusChanged {
+                            isButtonFocused2 = it.isFocused
+                        }
                         .background(colorResource(id = R.color.transparent))
                         .weight(1F)
                         .height(52.dp),
                     shape = RoundedCornerShape(15.dp),
                     colors = ButtonDefaults.buttonColors(
-                        contentColor = colorResource(id = R.color.white),
+                        contentColor = if (isButtonFocused2) colorResource(id = R.color.dark_blue_gray_text) else colorResource(id = R.color.white),
                         containerColor = colorResource(id = R.color.red),
                     ),
+                    border = BorderStroke(2.dp, if (isButtonFocused2) colorResource(id = R.color.dark_blue_gray_text) else colorResource(id = R.color.red))
+
 //                                border = BorderStroke(2.dp,
 //                                    colorResource(id = R.color.gray_icon))
                 )

+ 23 - 7
app/src/main/java/com/vpn/fastestvpnservice/screensTV/HomeScreenTV.kt

@@ -1,6 +1,7 @@
 package com.vpn.fastestvpnservice.screensTV
 
 import android.content.Context
+import android.os.Build
 import android.util.Log
 import android.widget.Toast
 import androidx.compose.foundation.BorderStroke
@@ -226,7 +227,7 @@ val onServerTV = object : ServerCallbacksTV {
 
 }
 @Composable
-fun HomeTV(navHostController: NavHostController) {
+fun HomeTV(navHostController: NavHostController, settingsNavHostController: NavHostController) {
 
     val context = LocalContext.current
     val basePreferenceHelper = BasePreferenceHelper(context)
@@ -273,12 +274,13 @@ fun HomeTV(navHostController: NavHostController) {
 //                server = filterServerByConnectionCount
 //
 ////                splashViewModel.serverDataApi()
-//                homeViewModel.validatePassword(
-//                    prefHelper.getUser()?.userinfo?.email.toString(),
-//                    prefHelper.getPassword().toString(),
-//                    "android",
-//                    Build.VERSION.RELEASE
-//                )
+
+                homeViewModel.validatePassword(
+                    prefHelper.getUser()?.userinfo?.email.toString(),
+                    prefHelper.getPassword().toString(),
+                    "TV",
+                    Build.VERSION.RELEASE
+                )
             }
 
             Lifecycle.Event.ON_PAUSE -> {
@@ -301,6 +303,20 @@ fun HomeTV(navHostController: NavHostController) {
         }
     }
 
+    val validateResponse = homeViewModel.liveDataValidate.observeAsState().value
+    validateResponse?.let {
+        Log.d("test_api_validate", "home => ${it.status} ${it.message}")
+
+        if (!it.status) {
+            basePreferenceHelper.setLoggedInState(false)
+            basePreferenceHelper.clearAllData()
+            settingsNavHostController.popBackStack()
+            settingsNavHostController.navigate(ScreenTV.LoginTV.route)
+        }
+
+        homeViewModel._mutableLiveDataValidate.value = null
+    }
+
     if (isHomeScreenPressed.value) {
         LaunchedEffect(key1 = Unit) {
             focusRequester1.requestFocus()

+ 2 - 1
app/src/main/java/com/vpn/fastestvpnservice/viewmodels/AccountViewModel.kt

@@ -1,6 +1,7 @@
 package com.vpn.fastestvpnservice.viewmodels
 
 import android.util.Log
+import android.widget.Toast
 import androidx.lifecycle.LiveData
 import androidx.lifecycle.MutableLiveData
 import androidx.lifecycle.ViewModel
@@ -9,6 +10,7 @@ import com.google.gson.reflect.TypeToken
 import com.vpn.fastestvpnservice.beans.DataResponse
 import com.vpn.fastestvpnservice.retrofit.RetrofitNetworkHandling
 import com.vpn.fastestvpnservice.retrofit.WebServiceFactory
+import de.blinkt.openvpn.core.App
 import retrofit2.Call
 import java.util.Objects
 
@@ -76,7 +78,6 @@ class AccountViewModel: ViewModel() {
                         val type = object : TypeToken<DataResponse<Objects>>() {}.type
                         val data = gson.fromJson<DataResponse<Objects>>(jsonString, type)
                         Log.d("test_api_response","Delete try ${data.status}:")
-
                         mutableLiveDataDelete.value = data
                     } catch (ex: Exception) {