|
@@ -1,13 +1,9 @@
|
|
|
package com.vpn.fastestvpnservice.customItems
|
|
|
|
|
|
-import android.os.Looper
|
|
|
import android.util.Log
|
|
|
-import android.widget.Toast
|
|
|
-import androidx.compose.foundation.Image
|
|
|
import androidx.compose.foundation.background
|
|
|
import androidx.compose.foundation.border
|
|
|
import androidx.compose.foundation.clickable
|
|
|
-import androidx.compose.foundation.gestures.detectTapGestures
|
|
|
import androidx.compose.foundation.interaction.MutableInteractionSource
|
|
|
import androidx.compose.foundation.layout.Arrangement
|
|
|
import androidx.compose.foundation.layout.Box
|
|
@@ -15,13 +11,10 @@ import androidx.compose.foundation.layout.Column
|
|
|
import androidx.compose.foundation.layout.ColumnScope
|
|
|
import androidx.compose.foundation.layout.Row
|
|
|
import androidx.compose.foundation.layout.Spacer
|
|
|
-import androidx.compose.foundation.layout.fillMaxSize
|
|
|
import androidx.compose.foundation.layout.fillMaxWidth
|
|
|
import androidx.compose.foundation.layout.height
|
|
|
import androidx.compose.foundation.layout.padding
|
|
|
import androidx.compose.foundation.layout.size
|
|
|
-import androidx.compose.foundation.lazy.LazyColumn
|
|
|
-import androidx.compose.foundation.lazy.items
|
|
|
import androidx.compose.foundation.shape.CircleShape
|
|
|
import androidx.compose.material3.Icon
|
|
|
import androidx.compose.material3.IconButton
|
|
@@ -45,41 +38,31 @@ import androidx.compose.ui.draw.alpha
|
|
|
import androidx.compose.ui.draw.clip
|
|
|
import androidx.compose.ui.draw.paint
|
|
|
import androidx.compose.ui.graphics.Color
|
|
|
-import androidx.compose.ui.input.pointer.pointerInput
|
|
|
import androidx.compose.ui.layout.ContentScale
|
|
|
import androidx.compose.ui.platform.LocalContext
|
|
|
import androidx.compose.ui.res.colorResource
|
|
|
import androidx.compose.ui.res.painterResource
|
|
|
-import androidx.compose.ui.text.TextStyle
|
|
|
-import androidx.compose.ui.text.style.TextAlign
|
|
|
import androidx.compose.ui.tooling.preview.Preview
|
|
|
import androidx.compose.ui.unit.dp
|
|
|
-import androidx.compose.ui.unit.sp
|
|
|
import androidx.lifecycle.viewmodel.compose.viewModel
|
|
|
import androidx.navigation.NavHostController
|
|
|
import androidx.navigation.compose.rememberNavController
|
|
|
-import com.vpn.fastestvpnservice.R
|
|
|
-import com.vpn.fastestvpnservice.beans.CountryServerList
|
|
|
-import com.vpn.fastestvpnservice.beans.Server
|
|
|
-import com.vpn.fastestvpnservice.beans.allLocationsList
|
|
|
-import com.vpn.fastestvpnservice.beans.favList
|
|
|
-import com.vpn.fastestvpnservice.beans.favListServer
|
|
|
-import com.vpn.fastestvpnservice.utils.Utils
|
|
|
import com.stealthcopter.networktools.Ping
|
|
|
import com.stealthcopter.networktools.ping.PingResult
|
|
|
import com.stealthcopter.networktools.ping.PingStats
|
|
|
-import com.vpn.fastestvpnservice.beans.smartList
|
|
|
+import com.vpn.fastestvpnservice.R
|
|
|
+import com.vpn.fastestvpnservice.beans.Server
|
|
|
+import com.vpn.fastestvpnservice.beans.favListServer
|
|
|
import com.vpn.fastestvpnservice.beans.toChangeServer
|
|
|
import com.vpn.fastestvpnservice.constants.smartConnect
|
|
|
import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper
|
|
|
import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.onServer
|
|
|
-import com.vpn.fastestvpnservice.sealedClass.BottomBarScreen
|
|
|
+import com.vpn.fastestvpnservice.screens.serverListViewModelSplash
|
|
|
import com.vpn.fastestvpnservice.sealedClass.Screen
|
|
|
+import com.vpn.fastestvpnservice.utils.Utils
|
|
|
import com.vpn.fastestvpnservice.viewmodels.HomeViewModel
|
|
|
import com.vpn.fastestvpnservice.viewmodels.ServerListViewModel
|
|
|
import com.vpn.fastestvpnservice.viewmodels.SplashViewModel
|
|
|
-import java.lang.Exception
|
|
|
-import java.util.logging.Handler
|
|
|
|
|
|
var serverInfoObj: MutableState<Server> = mutableStateOf(Server())
|
|
|
|
|
@@ -90,7 +73,6 @@ fun CountryItem(
|
|
|
countryTotalServers: Int,
|
|
|
navHostController: NavHostController
|
|
|
) {
|
|
|
- Log.d("test_countrySize", "CountryItem Called ${server.server_name} ${server.totalServers}")
|
|
|
Box(
|
|
|
modifier = Modifier
|
|
|
.fillMaxWidth()
|
|
@@ -103,12 +85,12 @@ fun CountryItem(
|
|
|
val basePreferenceHelper = BasePreferenceHelper(context)
|
|
|
val countrySize by rememberSaveable { mutableStateOf(server.totalServers) }
|
|
|
var isServerExpanded by rememberSaveable { mutableStateOf(false) }
|
|
|
- val serverListViewModel: ServerListViewModel = viewModel{
|
|
|
- ServerListViewModel(context)
|
|
|
- }
|
|
|
- val splashViewModel: SplashViewModel = viewModel{
|
|
|
- SplashViewModel(context)
|
|
|
- }
|
|
|
+// val serverListViewModel: ServerListViewModel = viewModel{
|
|
|
+// ServerListViewModel(context)
|
|
|
+// }
|
|
|
+// val splashViewModel: SplashViewModel = viewModel{
|
|
|
+// SplashViewModel(context)
|
|
|
+// }
|
|
|
val scope = rememberCoroutineScope()
|
|
|
val homeViewModel: HomeViewModel = viewModel {
|
|
|
HomeViewModel(context, scope)
|
|
@@ -136,25 +118,25 @@ fun CountryItem(
|
|
|
navHostController.popBackStack()
|
|
|
}
|
|
|
|
|
|
- countrySize.let { size ->
|
|
|
+// countrySize.let { size -> }
|
|
|
|
|
|
- Column {
|
|
|
- /* Country Location's Row */
|
|
|
- Row(
|
|
|
- verticalAlignment = Alignment.Top,
|
|
|
- horizontalArrangement = Arrangement.Start,
|
|
|
- modifier = Modifier
|
|
|
- .fillMaxWidth()
|
|
|
- .padding(
|
|
|
- start = 16.dp, end = 12.dp, top = 12.dp
|
|
|
- )
|
|
|
- .clickable(
|
|
|
- indication = null,
|
|
|
- interactionSource = remember { MutableInteractionSource() }
|
|
|
- ) {
|
|
|
- isServerExpanded = !isServerExpanded
|
|
|
+ Column {
|
|
|
+ /* Country Location's Row */
|
|
|
+ Row(
|
|
|
+ verticalAlignment = Alignment.Top,
|
|
|
+ horizontalArrangement = Arrangement.Start,
|
|
|
+ modifier = Modifier
|
|
|
+ .fillMaxWidth()
|
|
|
+ .padding(
|
|
|
+ start = 16.dp, end = 12.dp, top = 12.dp
|
|
|
+ )
|
|
|
+ .clickable(
|
|
|
+ indication = null,
|
|
|
+ interactionSource = remember { MutableInteractionSource() }
|
|
|
+ ) {
|
|
|
+ isServerExpanded = !isServerExpanded
|
|
|
|
|
|
- // commenting, open server list, not connecting by tap on tab
|
|
|
+ // commenting, open server list, not connecting by tap on tab
|
|
|
// if (server.enable == 1) {
|
|
|
//// basePreferenceHelper.setServerObject(server)
|
|
|
// isCountryServerClicked = true
|
|
@@ -166,82 +148,81 @@ fun CountryItem(
|
|
|
// )
|
|
|
// }
|
|
|
|
|
|
- }
|
|
|
- ) {
|
|
|
- val icon = if (server.enable == 1) Utils.getDrawable(context, server.iso)
|
|
|
- else Utils.getDrawableGray(context, server.iso)
|
|
|
+ }
|
|
|
+ ) {
|
|
|
+ val icon = if (server.enable == 1) Utils.getDrawable(context, server.iso)
|
|
|
+ else Utils.getDrawableGray(context, server.iso)
|
|
|
|
|
|
- Icon(
|
|
|
- painter = painterResource(id = icon),
|
|
|
- contentDescription = "Server Logo",
|
|
|
- tint = Color.Unspecified,
|
|
|
- modifier = Modifier
|
|
|
- .padding(bottom = 16.dp)
|
|
|
- .size(24.dp)
|
|
|
- .clip(CircleShape)
|
|
|
- .border(1.dp, colorResource(id = R.color.gray_opac_04), CircleShape)
|
|
|
- .paint(
|
|
|
- painter = painterResource(id = icon),
|
|
|
- contentScale = ContentScale.FillBounds
|
|
|
- )
|
|
|
- )
|
|
|
- Text(text = server.country!!,
|
|
|
- style = MaterialTheme.typography.labelMedium,
|
|
|
- color = MaterialTheme.colorScheme.primary,
|
|
|
- modifier = Modifier
|
|
|
- .padding(start = 16.dp, bottom = 18.dp)
|
|
|
- .align(Alignment.CenterVertically)
|
|
|
- )
|
|
|
- Spacer(modifier = Modifier.weight(1F))
|
|
|
- Text(text = "$countryTotalServers locations",
|
|
|
- style = MaterialTheme.typography.bodySmall,
|
|
|
- color = colorResource(id = R.color.dark_blue_gray_text),
|
|
|
- modifier = Modifier
|
|
|
- .padding(end = 30.dp, bottom = 18.dp)
|
|
|
- .align(Alignment.CenterVertically)
|
|
|
- .alpha(0.4F)
|
|
|
- )
|
|
|
+ Icon(
|
|
|
+ painter = painterResource(id = icon),
|
|
|
+ contentDescription = "Server Logo",
|
|
|
+ tint = Color.Unspecified,
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(bottom = 16.dp)
|
|
|
+ .size(24.dp)
|
|
|
+ .clip(CircleShape)
|
|
|
+ .border(1.dp, colorResource(id = R.color.gray_opac_04), CircleShape)
|
|
|
+ .paint(
|
|
|
+ painter = painterResource(id = icon),
|
|
|
+ contentScale = ContentScale.FillBounds
|
|
|
+ )
|
|
|
+ )
|
|
|
+ Text(text = server.country!!,
|
|
|
+ style = MaterialTheme.typography.labelMedium,
|
|
|
+ color = MaterialTheme.colorScheme.primary,
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(start = 16.dp, bottom = 18.dp)
|
|
|
+ .align(Alignment.CenterVertically)
|
|
|
+ )
|
|
|
+ Spacer(modifier = Modifier.weight(1F))
|
|
|
+ Text(text = "$countryTotalServers locations",
|
|
|
+ style = MaterialTheme.typography.bodySmall,
|
|
|
+ color = colorResource(id = R.color.dark_blue_gray_text),
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(end = 30.dp, bottom = 18.dp)
|
|
|
+ .align(Alignment.CenterVertically)
|
|
|
+ .alpha(0.4F)
|
|
|
+ )
|
|
|
// Spacer(modifier = Modifier.weight(1F))
|
|
|
- Icon(
|
|
|
- modifier = Modifier
|
|
|
- .padding(bottom = 18.dp, end = 0.dp)
|
|
|
- .size(12.dp, 7.dp)
|
|
|
- .align(Alignment.CenterVertically)
|
|
|
- .clickable(
|
|
|
- indication = null,
|
|
|
- interactionSource = remember { MutableInteractionSource() }
|
|
|
- ) { isServerExpanded = !isServerExpanded },
|
|
|
+ Icon(
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(bottom = 18.dp, end = 0.dp)
|
|
|
+ .size(12.dp, 7.dp)
|
|
|
+ .align(Alignment.CenterVertically)
|
|
|
+ .clickable(
|
|
|
+ indication = null,
|
|
|
+ interactionSource = remember { MutableInteractionSource() }
|
|
|
+ ) { isServerExpanded = !isServerExpanded },
|
|
|
|
|
|
- painter = if (isServerExpanded) painterResource(
|
|
|
- id = R.drawable.dragarrow3x) else painterResource(
|
|
|
- id = R.drawable.downarrow3x),
|
|
|
+ painter = if (isServerExpanded) painterResource(
|
|
|
+ id = R.drawable.dragarrow3x) else painterResource(
|
|
|
+ id = R.drawable.downarrow3x),
|
|
|
|
|
|
- contentDescription = "Server Logo",
|
|
|
- tint = MaterialTheme.colorScheme.primary,
|
|
|
- )
|
|
|
- }
|
|
|
+ contentDescription = "Server Logo",
|
|
|
+ tint = MaterialTheme.colorScheme.primary,
|
|
|
+ )
|
|
|
+ }
|
|
|
|
|
|
- /* Country Expandable's Row */
|
|
|
+ /* Country Expandable's Row */
|
|
|
if (isServerExpanded) {
|
|
|
val countriesServersData1 = basePreferenceHelper.getServerData().get(0).servers
|
|
|
countriesServersData1?.let {
|
|
|
- val serversGroup = serverListViewModel.getServerGroupList(server, it)
|
|
|
+ val serversGroup = serverListViewModelSplash.getServerGroupList(server, it)
|
|
|
ExpandableRow(server = serversGroup, navHostController)
|
|
|
}
|
|
|
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- Surface(
|
|
|
- modifier = Modifier
|
|
|
- .padding(start = 0.dp, end = 0.dp)
|
|
|
- .height(1.dp)
|
|
|
- .fillMaxWidth()
|
|
|
- .alpha(0.6F)
|
|
|
- .align(Alignment.BottomCenter),
|
|
|
- color = colorResource(id = R.color.gray_icon)
|
|
|
- ) {}
|
|
|
}
|
|
|
+
|
|
|
+ Surface(
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(start = 0.dp, end = 0.dp)
|
|
|
+ .height(1.dp)
|
|
|
+ .fillMaxWidth()
|
|
|
+ .alpha(0.6F)
|
|
|
+ .align(Alignment.BottomCenter),
|
|
|
+ color = colorResource(id = R.color.gray_icon)
|
|
|
+ ) {}
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -252,10 +233,10 @@ fun ColumnScope.ExpandableRow(
|
|
|
) {
|
|
|
val context = LocalContext.current
|
|
|
val basePreferenceHelper = BasePreferenceHelper(context)
|
|
|
- val serverListViewModel: ServerListViewModel = viewModel{
|
|
|
- ServerListViewModel(context)
|
|
|
- }
|
|
|
- val splashViewModel: SplashViewModel = viewModel{ SplashViewModel(context) }
|
|
|
+// val serverListViewModel: ServerListViewModel = viewModel{
|
|
|
+// ServerListViewModel(context)
|
|
|
+// }
|
|
|
+// val splashViewModel: SplashViewModel = viewModel{ SplashViewModel(context) }
|
|
|
val scope = rememberCoroutineScope()
|
|
|
val homeViewModel: HomeViewModel = viewModel { HomeViewModel(context, scope) }
|
|
|
var isExpServerClicked by remember { mutableStateOf(false) }
|
|
@@ -268,134 +249,133 @@ fun ColumnScope.ExpandableRow(
|
|
|
)
|
|
|
.background(Color.Transparent)
|
|
|
) {
|
|
|
-
|
|
|
// Expandable Row
|
|
|
server.let { serverData ->
|
|
|
- serverData.forEachIndexed { index, serverInfo ->
|
|
|
- Log.d("serverInfo_ping", "serverInfo ${serverInfo.server_name} :: ${serverInfo.ping}")
|
|
|
+ serverData.forEachIndexed { index, serverInfo ->
|
|
|
+// Log.d("serverInfo_ping", "serverInfo ${serverInfo.server_name} :: ${serverInfo.ping}")
|
|
|
|
|
|
- var isFavorite by rememberSaveable { mutableStateOf(serverInfo.isFavourited) }
|
|
|
- val isServerFavourited: Boolean = serverInfo.isFavourited == true
|
|
|
- Log.d("test-server_fav_d", "$isFavorite")
|
|
|
+ var isFavorite by rememberSaveable { mutableStateOf(serverInfo.isFavourited) }
|
|
|
+ val isServerFavourited: Boolean = serverInfo.isFavourited == true
|
|
|
+ Log.d("test-server_fav_d", "$isFavorite")
|
|
|
|
|
|
- if (isExpServerClicked) {
|
|
|
- onServer.onServerSelected(
|
|
|
- context,
|
|
|
- homeViewModel,
|
|
|
- onClick = {isExpServerClicked = false},
|
|
|
- true,
|
|
|
- serverInfoObj.value
|
|
|
- )
|
|
|
- navHostController.popBackStack()
|
|
|
- }
|
|
|
-
|
|
|
- var ping by rememberSaveable { mutableIntStateOf(0) }
|
|
|
+ if (isExpServerClicked) {
|
|
|
+ onServer.onServerSelected(
|
|
|
+ context,
|
|
|
+ homeViewModel,
|
|
|
+ onClick = {isExpServerClicked = false},
|
|
|
+ true,
|
|
|
+ serverInfoObj.value
|
|
|
+ )
|
|
|
+ navHostController.popBackStack()
|
|
|
+ }
|
|
|
|
|
|
- fun updatePing(newPing: Int) {
|
|
|
- ping = newPing
|
|
|
- }
|
|
|
+// var ping by rememberSaveable { mutableIntStateOf(0) }
|
|
|
+//
|
|
|
+// fun updatePing(newPing: Int) {
|
|
|
+// ping = newPing
|
|
|
+// }
|
|
|
+//
|
|
|
+// LaunchedEffect(key1 = Unit) {
|
|
|
+// Log.d("test_new_ping", "Inside LE")
|
|
|
+//// while (true) {
|
|
|
+// Ping.onAddress(serverInfo.ip as String).setTimeOutMillis(1000).doPing(
|
|
|
+// object : Ping.PingListener{
|
|
|
+// override fun onResult(pingResult: PingResult?) {
|
|
|
+// pingResult?.let {
|
|
|
+// Log.d("test_new_ping", "pingResult = ${it.timeTaken.toInt()}")
|
|
|
+// if (ping == 0) updatePing(it.timeTaken.toInt())
|
|
|
+// }
|
|
|
+// }
|
|
|
+// override fun onError(e: Exception?) {}
|
|
|
+// override fun onFinished(pingStats: PingStats?) {}
|
|
|
+// }
|
|
|
+// )
|
|
|
+//// delay(3 * 1000)
|
|
|
+//// }
|
|
|
+// }
|
|
|
|
|
|
- LaunchedEffect(key1 = Unit) {
|
|
|
- Log.d("test_new_ping", "Inside LE")
|
|
|
-// while (true) {
|
|
|
- Ping.onAddress(serverInfo.ip as String).setTimeOutMillis(1000).doPing(
|
|
|
- object : Ping.PingListener{
|
|
|
- override fun onResult(pingResult: PingResult?) {
|
|
|
- pingResult?.let {
|
|
|
- Log.d("test_new_ping", "pingResult = ${it.timeTaken.toInt()}")
|
|
|
- if (ping == 0) updatePing(it.timeTaken.toInt())
|
|
|
- }
|
|
|
- }
|
|
|
- override fun onError(e: Exception?) {}
|
|
|
- override fun onFinished(pingStats: PingStats?) {}
|
|
|
- }
|
|
|
+ Row(
|
|
|
+ verticalAlignment = Alignment.CenterVertically,
|
|
|
+ horizontalArrangement = Arrangement.Start,
|
|
|
+ modifier = Modifier
|
|
|
+ .fillMaxWidth()
|
|
|
+ .padding(
|
|
|
+ vertical = 15.dp
|
|
|
)
|
|
|
-// delay(3 * 1000)
|
|
|
-// }
|
|
|
- }
|
|
|
-
|
|
|
- Row(
|
|
|
- verticalAlignment = Alignment.CenterVertically,
|
|
|
- horizontalArrangement = Arrangement.Start,
|
|
|
- modifier = Modifier
|
|
|
- .fillMaxWidth()
|
|
|
- .padding(
|
|
|
- vertical = 15.dp
|
|
|
- )
|
|
|
- .background(Color.Transparent)
|
|
|
- .clickable(
|
|
|
- indication = null,
|
|
|
- interactionSource = remember { MutableInteractionSource() }
|
|
|
- ) {
|
|
|
- if (serverInfo.enable == 1) {
|
|
|
+ .background(Color.Transparent)
|
|
|
+ .clickable(
|
|
|
+ indication = null,
|
|
|
+ interactionSource = remember { MutableInteractionSource() }
|
|
|
+ ) {
|
|
|
+ if (serverInfo.enable == 1) {
|
|
|
|
|
|
- if (toChangeServer.value) {
|
|
|
- Log.d("test_change_Server", "true-Change")
|
|
|
- basePreferenceHelper.saveSmartList(smartConnect[2])
|
|
|
- basePreferenceHelper.setSmartServerObject(serverInfo)
|
|
|
- navHostController.popBackStack()
|
|
|
- } else {
|
|
|
- Log.d("test_change_Server", "false : Connect")
|
|
|
- serverInfoObj.value = serverInfo
|
|
|
-// basePreferenceHelper.setServerObject(serverInfo)
|
|
|
- isExpServerClicked = true
|
|
|
- }
|
|
|
+ if (toChangeServer.value) {
|
|
|
+ Log.d("test_change_Server", "true-Change")
|
|
|
+ basePreferenceHelper.saveSmartList(smartConnect[2])
|
|
|
+ basePreferenceHelper.setSmartServerObject(serverInfo)
|
|
|
+ navHostController.popBackStack()
|
|
|
} else {
|
|
|
- basePreferenceHelper.setSubscriptionServerObject(serverInfo)
|
|
|
- Screen.Subscription.isTrue = true
|
|
|
- navHostController.navigate(
|
|
|
- Screen.Subscription.route
|
|
|
- )
|
|
|
+ Log.d("test_change_Server", "false : Connect")
|
|
|
+ serverInfoObj.value = serverInfo
|
|
|
+// basePreferenceHelper.setServerObject(serverInfo)
|
|
|
+ isExpServerClicked = true
|
|
|
}
|
|
|
+ } else {
|
|
|
+ basePreferenceHelper.setSubscriptionServerObject(serverInfo)
|
|
|
+ Screen.Subscription.isTrue = true
|
|
|
+ navHostController.navigate(
|
|
|
+ Screen.Subscription.route
|
|
|
+ )
|
|
|
}
|
|
|
- ) {
|
|
|
- Text(text = "${serverInfo.server_name}",
|
|
|
- style = MaterialTheme.typography.labelMedium,
|
|
|
- color = MaterialTheme.colorScheme.onSecondary,
|
|
|
- modifier = Modifier
|
|
|
- .padding(start = 16.dp, bottom = 0.dp)
|
|
|
- .align(Alignment.CenterVertically)
|
|
|
- .alpha(0.4F)
|
|
|
- )
|
|
|
- Spacer(modifier = Modifier.weight(1F))
|
|
|
- Text(text = "$ping ms",
|
|
|
- style = MaterialTheme.typography.displayMedium,
|
|
|
- color = colorResource(id = R.color.blue_text),
|
|
|
- modifier = Modifier
|
|
|
- .padding(start = 0.dp, end = 30.dp)
|
|
|
- .align(Alignment.CenterVertically)
|
|
|
- )
|
|
|
- IconButton(
|
|
|
- modifier = Modifier
|
|
|
- .padding(bottom = 0.dp, end = 16.dp)
|
|
|
- .size(25.dp)
|
|
|
- .align(Alignment.CenterVertically),
|
|
|
- onClick = {
|
|
|
+ }
|
|
|
+ ) {
|
|
|
+ Text(text = "${serverInfo.server_name}",
|
|
|
+ style = MaterialTheme.typography.labelMedium,
|
|
|
+ color = MaterialTheme.colorScheme.onSecondary,
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(start = 16.dp, bottom = 0.dp)
|
|
|
+ .align(Alignment.CenterVertically)
|
|
|
+ .alpha(0.4F)
|
|
|
+ )
|
|
|
+ Spacer(modifier = Modifier.weight(1F))
|
|
|
+ Text(text = "${serverInfo.ping} ms",
|
|
|
+ style = MaterialTheme.typography.displayMedium,
|
|
|
+ color = colorResource(id = R.color.blue_text),
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(start = 0.dp, end = 30.dp)
|
|
|
+ .align(Alignment.CenterVertically)
|
|
|
+ )
|
|
|
+ IconButton(
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(bottom = 0.dp, end = 16.dp)
|
|
|
+ .size(25.dp)
|
|
|
+ .align(Alignment.CenterVertically),
|
|
|
+ onClick = {
|
|
|
isFavorite = !isFavorite!!
|
|
|
- serverListViewModel.favAndUnFav(serverInfo)
|
|
|
+ serverListViewModelSplash.favAndUnFav(serverInfo)
|
|
|
}
|
|
|
+ )
|
|
|
+ {
|
|
|
+ Icon(
|
|
|
+ painter = if (isServerFavourited) painterResource(
|
|
|
+ id = R.drawable.fav_server3x) else painterResource(
|
|
|
+ id = R.drawable.unfav_server3x),
|
|
|
+ contentDescription = "Server Logo",
|
|
|
+ tint = Color.Unspecified,
|
|
|
+ modifier = Modifier.size(22.dp, 21.dp)
|
|
|
)
|
|
|
- {
|
|
|
- Icon(
|
|
|
- painter = if (isServerFavourited) painterResource(
|
|
|
- id = R.drawable.fav_server3x) else painterResource(
|
|
|
- id = R.drawable.unfav_server3x),
|
|
|
- contentDescription = "Server Logo",
|
|
|
- tint = Color.Unspecified,
|
|
|
- modifier = Modifier.size(22.dp, 21.dp)
|
|
|
- )
|
|
|
- }
|
|
|
}
|
|
|
- Surface(
|
|
|
- modifier = Modifier
|
|
|
- .padding(top = 0.dp, end = 0.dp)
|
|
|
- .height(1.dp)
|
|
|
- .fillMaxWidth()
|
|
|
- .alpha(0.6F),
|
|
|
- color = colorResource(id = R.color.gray_icon)
|
|
|
- ) {}
|
|
|
}
|
|
|
+ Surface(
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(top = 0.dp, end = 0.dp)
|
|
|
+ .height(1.dp)
|
|
|
+ .fillMaxWidth()
|
|
|
+ .alpha(0.6F),
|
|
|
+ color = colorResource(id = R.color.gray_icon)
|
|
|
+ ) {}
|
|
|
}
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|