|
@@ -79,7 +79,6 @@ import androidx.compose.ui.res.painterResource
|
|
|
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.stealthcopter.networktools.Ping
|
|
@@ -111,9 +110,10 @@ fun ServerList(
|
|
|
val focusManager = LocalFocusManager.current
|
|
|
val context = LocalContext.current
|
|
|
|
|
|
- var serverListViewModel: ServerListViewModel = viewModel {
|
|
|
- ServerListViewModel(context = context)
|
|
|
- }
|
|
|
+// var serverListViewModel: ServerListViewModel = viewModel {
|
|
|
+// ServerListViewModel(context = context)
|
|
|
+// }
|
|
|
+ val serverListViewModel = serverListViewModelSplash
|
|
|
val basePreferenceHelper = BasePreferenceHelper(context)
|
|
|
isAlphabetList.value = basePreferenceHelper.getFilterList() != filterList[0]
|
|
|
Box(
|
|
@@ -285,60 +285,13 @@ fun ColumnScope.ShowRecommendedList(
|
|
|
val recommendedList: MutableList<Server> = ArrayList<Server>()
|
|
|
val smartLocationList: MutableList<Server> = ArrayList<Server>()
|
|
|
|
|
|
- prefHelper.getServerData().get(0).servers?.let {
|
|
|
- val serverDataLocation = it
|
|
|
-
|
|
|
- val distinctdatanotnull =
|
|
|
- serverDataLocation.filter { // servers's lt and lt not be null
|
|
|
- it.lt != null && it.lg != null
|
|
|
- }
|
|
|
-
|
|
|
- val distinctdata =
|
|
|
- distinctdatanotnull.distinctBy { // servers's lt filter, no same lt of a server
|
|
|
- it.lt
|
|
|
- }
|
|
|
-
|
|
|
- val result = FloatArray(1)
|
|
|
- val ipinfo = prefHelper.getIpinfo()
|
|
|
-
|
|
|
- distinctdata.forEachIndexed { index, server ->
|
|
|
- val lat1 = ipinfo?.latitute
|
|
|
- val lon1 = ipinfo?.longitude
|
|
|
- val lat2 = server.lt
|
|
|
- val lon2 = server.lg
|
|
|
-
|
|
|
- if (lat1 != null && lat2 != null && lon1 != null && lon2 != null) {
|
|
|
- Location.distanceBetween(lat1, lon1, lat2, lon2, result)
|
|
|
- }
|
|
|
+ val data = serverListViewModelSplash.liveDataTest.observeAsState().value
|
|
|
+ Log.d("test_live_data", "Num SLS = $data")
|
|
|
|
|
|
- val distance: Float = result[0]
|
|
|
- distinctdata.get(index).distance = distance
|
|
|
|
|
|
- }
|
|
|
|
|
|
- val sortedDistance = distinctdata.sortedBy {
|
|
|
- it.distance
|
|
|
- }
|
|
|
-
|
|
|
- if (sortedDistance.isNotEmpty()) {
|
|
|
- for (i in 0..2) {
|
|
|
- recommendedList.add(sortedDistance.get(i))
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (isAlphabetList.value) {
|
|
|
- recommendedList.sortBy {
|
|
|
- it.server_name
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
- if (sortedDistance.isNotEmpty()) {
|
|
|
- for (i in 0..0) {
|
|
|
- smartLocationList.add(sortedDistance.get(i))
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
- }
|
|
|
|
|
|
var favList = serverListViewModel.liveDataGetFavList.observeAsState().value
|
|
|
favList = serverListViewModel.getFavList(isAlphabetList.value)
|
|
@@ -351,6 +304,7 @@ fun ColumnScope.ShowRecommendedList(
|
|
|
|
|
|
|
|
|
|
|
|
+ var recommended = serverListViewModelSplash.liveDataGetRecommendedServers.value
|
|
|
|
|
|
LazyColumn(
|
|
|
modifier = Modifier
|
|
@@ -383,7 +337,6 @@ fun ColumnScope.ShowRecommendedList(
|
|
|
)
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
var favFilterList = ArrayList<Server>()
|
|
|
favList.let {
|
|
|
if (isAlphabetList.value) {
|
|
@@ -397,8 +350,6 @@ fun ColumnScope.ShowRecommendedList(
|
|
|
favFilterList = favList2
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
items(items = favFilterList) { server ->
|
|
|
|
|
|
ServerItem(server, navHostController, server.ping)
|
|
@@ -432,8 +383,7 @@ fun ColumnScope.ShowRecommendedList(
|
|
|
)
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- items(items = smartLocationList) { server ->
|
|
|
+ items(items = smartLocationListGlobal) { server ->
|
|
|
ServerItem(server, navHostController, server.ping)
|
|
|
}
|
|
|
|
|
@@ -465,21 +415,12 @@ fun ColumnScope.ShowRecommendedList(
|
|
|
)
|
|
|
}
|
|
|
}
|
|
|
-// val recent = prefHelper.getServerData()
|
|
|
-// val filterData3 = recent.get(1).servers?.let {
|
|
|
-// serverListViewModel.filterServersByStreamingServers(
|
|
|
-// it
|
|
|
-// )
|
|
|
+// val recentLocation: ArrayList<Server> = ArrayList<Server>()
|
|
|
+// prefHelper.getConnectedServer()?.let {
|
|
|
+// recentLocation.add(it)
|
|
|
// }
|
|
|
|
|
|
- val recentLocation: ArrayList<Server> = ArrayList<Server>()
|
|
|
-
|
|
|
val recentList = prefHelper.getRecentlyList()
|
|
|
-
|
|
|
- prefHelper.getConnectedServer()?.let {
|
|
|
- recentLocation.add(it)
|
|
|
- }
|
|
|
-
|
|
|
recentList?.let {
|
|
|
items(items = it) { server ->
|
|
|
ServerItem(server, navHostController, server.ping)
|
|
@@ -515,15 +456,20 @@ fun ColumnScope.ShowRecommendedList(
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// val recommend = prefHelper.getServerData()
|
|
|
-// val filterData4 = recommend.get(1).servers?.let {
|
|
|
-// serverListViewModel.filterServersByStreamingServers(
|
|
|
-// it
|
|
|
-// )
|
|
|
-// }
|
|
|
|
|
|
- items(items = recommendedList) { server ->
|
|
|
- ServerItem(server, navHostController, server.ping)
|
|
|
+ if (isAlphabetList.value) {
|
|
|
+ recommended?.sortBy {
|
|
|
+ it.server_name
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ val recommended2 = serverListViewModelSplash.liveDataGetRecommendedServers.value
|
|
|
+ recommended = recommended2
|
|
|
+ }
|
|
|
+
|
|
|
+ recommended?.let {
|
|
|
+ items(items = it) { server ->
|
|
|
+ ServerItem(server, navHostController, server.ping)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -818,12 +764,15 @@ fun ColumnScope.ShowSearchBar(
|
|
|
navHostController: NavHostController) {
|
|
|
|
|
|
val context = LocalContext.current
|
|
|
- val splashViewModel: SplashViewModel = viewModel{
|
|
|
- SplashViewModel(context)
|
|
|
- }
|
|
|
- val searchListViewModel: SearchListViewModel = viewModel{
|
|
|
- SearchListViewModel(context, serverListViewModel, splashViewModel)
|
|
|
- }
|
|
|
+// val splashViewModel: SplashViewModel = viewModel{
|
|
|
+// SplashViewModel(context)
|
|
|
+// }
|
|
|
+// val splashViewModel = splashViewModelGlobal
|
|
|
+// val searchListViewModel: SearchListViewModel = viewModel{
|
|
|
+// SearchListViewModel(context, serverListViewModel, splashViewModel)
|
|
|
+// }
|
|
|
+
|
|
|
+ val searchListViewModel = searchListViewModelSplash
|
|
|
val scope = rememberCoroutineScope()
|
|
|
|
|
|
// var searchText by remember { mutableStateOf("") }
|
|
@@ -1119,4 +1068,60 @@ fun ServerListPreview() {
|
|
|
// icon = if (isP2PExpanded) R.drawable.dragarrow3x
|
|
|
// else R.drawable.downarrow3x
|
|
|
// }
|
|
|
-// }
|
|
|
+// }
|
|
|
+
|
|
|
+
|
|
|
+// prefHelper.getServerData().get(0).servers?.let {
|
|
|
+// val serverDataLocation = it
|
|
|
+//
|
|
|
+// val distinctdatanotnull =
|
|
|
+// serverDataLocation.filter { // servers's lt and lt not be null
|
|
|
+// it.lt != null && it.lg != null
|
|
|
+// }
|
|
|
+//
|
|
|
+// val distinctdata =
|
|
|
+// distinctdatanotnull.distinctBy { // servers's lt filter, no same lt of a server
|
|
|
+// it.lt
|
|
|
+// }
|
|
|
+//
|
|
|
+// val result = FloatArray(1)
|
|
|
+// val ipinfo = prefHelper.getIpinfo()
|
|
|
+//
|
|
|
+// distinctdata.forEachIndexed { index, server ->
|
|
|
+// val lat1 = ipinfo?.latitute
|
|
|
+// val lon1 = ipinfo?.longitude
|
|
|
+// val lat2 = server.lt
|
|
|
+// val lon2 = server.lg
|
|
|
+//
|
|
|
+// if (lat1 != null && lat2 != null && lon1 != null && lon2 != null) {
|
|
|
+// Location.distanceBetween(lat1, lon1, lat2, lon2, result)
|
|
|
+// }
|
|
|
+//
|
|
|
+// val distance: Float = result[0]
|
|
|
+// distinctdata.get(index).distance = distance
|
|
|
+//
|
|
|
+// }
|
|
|
+//
|
|
|
+// val sortedDistance = distinctdata.sortedBy {
|
|
|
+// it.distance
|
|
|
+// }
|
|
|
+//
|
|
|
+// if (sortedDistance.isNotEmpty()) {
|
|
|
+// for (i in 0..2) {
|
|
|
+// recommendedList.add(sortedDistance.get(i))
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// if (isAlphabetList.value) {
|
|
|
+// recommendedList.sortBy {
|
|
|
+// it.server_name
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// if (sortedDistance.isNotEmpty()) {
|
|
|
+// for (i in 0..0) {
|
|
|
+// smartLocationList.add(sortedDistance.get(i))
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// }
|