|
@@ -296,7 +296,7 @@ fun ColumnScope.ShowRecommendedList(
|
|
|
}
|
|
|
}
|
|
|
val fav = basePreferenceHelper.getServerData()
|
|
|
- val filterData1 = fav.get(1).servers?.let {
|
|
|
+ val filterData1 = fav.get(2).servers?.let {
|
|
|
serverListViewModel.filterServersByStreamingServers(
|
|
|
it
|
|
|
)
|
|
@@ -443,19 +443,21 @@ fun ColumnScope.ShowAllLocationsList(
|
|
|
val allLocationsTabItems = listOf(
|
|
|
"Countries", "Streaming", "D-VPN", "P2P"
|
|
|
)
|
|
|
- val pagerState = rememberPagerState(pageCount = { allLocationsTabItems.size })
|
|
|
- val selectedIndex by remember { derivedStateOf { pagerState.currentPage } }
|
|
|
- val scope = rememberCoroutineScope()
|
|
|
-
|
|
|
- val country = basePreferenceHelper.getServerData()
|
|
|
- val filterData = country.get(0).servers?.let {
|
|
|
+ val serverData = basePreferenceHelper.getServerData()
|
|
|
+ val filterData = serverData.get(0).servers?.let {
|
|
|
serverListViewModel.filterServersByISO(
|
|
|
it
|
|
|
)
|
|
|
}
|
|
|
|
|
|
- country.forEachIndexed { index, server ->
|
|
|
- Log.d("test_data", server.name.toString())
|
|
|
+ val pagerState = rememberPagerState(pageCount = { serverData.size })
|
|
|
+ val selectedIndex by remember { derivedStateOf { pagerState.currentPage } }
|
|
|
+ val scope = rememberCoroutineScope()
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ serverData.forEachIndexed { index, server ->
|
|
|
+ Log.d("test_data", "${server.name} ${server.servers?.size} -> ${serverData.size}")
|
|
|
}
|
|
|
|
|
|
androidx.compose.material3.ScrollableTabRow(
|
|
@@ -476,7 +478,7 @@ fun ColumnScope.ShowAllLocationsList(
|
|
|
},
|
|
|
// divider = {}
|
|
|
) {
|
|
|
- allLocationsTabItems.forEachIndexed { index1, locationTab ->
|
|
|
+ serverData.forEachIndexed { index1, locationTab ->
|
|
|
// val color = remember { Animatable(Color.Transparent) }
|
|
|
var color by remember { mutableStateOf(Color.Transparent) }
|
|
|
var alpha by remember { mutableFloatStateOf(1F) }
|
|
@@ -499,7 +501,7 @@ fun ColumnScope.ShowAllLocationsList(
|
|
|
unselectedContentColor = Color.White,
|
|
|
text = {
|
|
|
Text(
|
|
|
- text = locationTab,
|
|
|
+ text = locationTab.name!!,
|
|
|
style = TextStyle(
|
|
|
color = color,
|
|
|
fontSize = 14.sp,
|
|
@@ -521,11 +523,16 @@ fun ColumnScope.ShowAllLocationsList(
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- var isCountriesExpanded by rememberSaveable { mutableStateOf(true) }
|
|
|
+ val data = basePreferenceHelper.getServerData()
|
|
|
+
|
|
|
+
|
|
|
+ var isServersListExpanded by rememberSaveable { mutableStateOf(List(data.size) {true}) }
|
|
|
var isStreamingExpanded by rememberSaveable { mutableStateOf(true) }
|
|
|
var isDvpnExpanded by rememberSaveable { mutableStateOf(true) }
|
|
|
var isP2PExpanded by rememberSaveable { mutableStateOf(true) }
|
|
|
|
|
|
+ val isServersTabExpanded by rememberSaveable { mutableStateOf(listOf(true)) }
|
|
|
+
|
|
|
// val rotationState by animateFloatAsState(
|
|
|
// targetValue = if (isCountriesExpanded) 180f else 0f,
|
|
|
// label = if (isCountriesExpanded) "Show Less" else "Show More"
|
|
@@ -548,129 +555,172 @@ fun ColumnScope.ShowAllLocationsList(
|
|
|
var serverTitle by rememberSaveable { mutableStateOf("") }
|
|
|
var icon by rememberSaveable { mutableStateOf(0) }
|
|
|
|
|
|
- when (serverTabPager) {
|
|
|
- 0 -> {
|
|
|
- serverTitle = allLocationsTabItems[0]
|
|
|
- icon = if (isCountriesExpanded) R.drawable.dragarrow3x
|
|
|
- else R.drawable.downarrow3x
|
|
|
- }
|
|
|
- 1 -> {
|
|
|
- serverTitle = allLocationsTabItems[1]
|
|
|
- icon = if (isStreamingExpanded) R.drawable.dragarrow3x
|
|
|
- else R.drawable.downarrow3x
|
|
|
- }
|
|
|
- 2 -> {
|
|
|
- serverTitle = allLocationsTabItems[2]
|
|
|
- icon = if (isDvpnExpanded) R.drawable.dragarrow3x
|
|
|
- else R.drawable.downarrow3x
|
|
|
- }
|
|
|
- 3 -> {
|
|
|
- serverTitle = allLocationsTabItems[3]
|
|
|
- icon = if (isP2PExpanded) R.drawable.dragarrow3x
|
|
|
- else R.drawable.downarrow3x
|
|
|
- }
|
|
|
- }
|
|
|
+// when (serverTabPager) {
|
|
|
+// 0 -> {
|
|
|
+// serverTitle = serverData[0].name!!
|
|
|
+// icon = if (isCountriesExpanded) R.drawable.dragarrow3x
|
|
|
+// else R.drawable.downarrow3x
|
|
|
+// }
|
|
|
+// 1 -> {
|
|
|
+// serverTitle = serverData[1].name!!
|
|
|
+// icon = if (isStreamingExpanded) R.drawable.dragarrow3x
|
|
|
+// else R.drawable.downarrow3x
|
|
|
+// }
|
|
|
+// 2 -> {
|
|
|
+// serverTitle = serverData[2].name!!
|
|
|
+// icon = if (isDvpnExpanded) R.drawable.dragarrow3x
|
|
|
+// else R.drawable.downarrow3x
|
|
|
+// }
|
|
|
+// 3 -> {
|
|
|
+// serverTitle = serverData[3].name!!
|
|
|
+// icon = if (isP2PExpanded) R.drawable.dragarrow3x
|
|
|
+// else R.drawable.downarrow3x
|
|
|
+// }
|
|
|
+// 4 -> {
|
|
|
+// serverTitle = serverData[4].name!!
|
|
|
+// icon = if (isP2PExpanded) R.drawable.dragarrow3x
|
|
|
+// else R.drawable.downarrow3x
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+ serverTitle = serverData[serverTabPager].name!!
|
|
|
+ icon = if (isServersListExpanded[serverTabPager]) R.drawable.dragarrow3x
|
|
|
+ else R.drawable.downarrow3x
|
|
|
|
|
|
ShowHeaderItem(serverTitle, icon, serverTabPager) {
|
|
|
- when (serverTabPager) {
|
|
|
- 0 -> {
|
|
|
- isCountriesExpanded = !isCountriesExpanded
|
|
|
- }
|
|
|
- 1 -> {
|
|
|
- isStreamingExpanded = !isStreamingExpanded
|
|
|
- }
|
|
|
- 2 -> {
|
|
|
- isDvpnExpanded = !isDvpnExpanded
|
|
|
- }
|
|
|
- 3 -> {
|
|
|
- isP2PExpanded = !isP2PExpanded
|
|
|
- }
|
|
|
+ isServersListExpanded = isServersListExpanded.toMutableList().also {
|
|
|
+ it[serverTabPager] = !isServersListExpanded[serverTabPager]
|
|
|
}
|
|
|
+
|
|
|
+ // when (serverTabPager) {
|
|
|
+// 0 -> {
|
|
|
+// isCountriesExpanded = !isCountriesExpanded
|
|
|
+// }
|
|
|
+// 1 -> {
|
|
|
+// isStreamingExpanded = !isStreamingExpanded
|
|
|
+// }
|
|
|
+// 2 -> {
|
|
|
+// isDvpnExpanded = !isDvpnExpanded
|
|
|
+// }
|
|
|
+// 3 -> {
|
|
|
+// isP2PExpanded = !isP2PExpanded
|
|
|
+// }
|
|
|
+// }
|
|
|
}
|
|
|
|
|
|
- when (serverTabPager) {
|
|
|
- 0 -> {
|
|
|
- if (isCountriesExpanded) {
|
|
|
- CompositionLocalProvider(
|
|
|
- LocalOverscrollConfiguration provides null
|
|
|
- ) {
|
|
|
- val country = basePreferenceHelper.getServerData()
|
|
|
- val filterData = country.get(0).servers?.let {
|
|
|
- serverListViewModel.filterServersByISO(
|
|
|
- it
|
|
|
- )
|
|
|
- }
|
|
|
-
|
|
|
- LazyColumn() {
|
|
|
- items(items = filterData!!) { country ->
|
|
|
- CountryItem(server = country)
|
|
|
- }
|
|
|
- }
|
|
|
+ if (isServersListExpanded[serverTabPager]) {
|
|
|
+ CompositionLocalProvider(
|
|
|
+ LocalOverscrollConfiguration provides null
|
|
|
+ ) {
|
|
|
+ val filterServersData = if (data[serverTabPager].name?.lowercase().toString() == "servers") {
|
|
|
+ data.get(serverTabPager).servers?.let {
|
|
|
+ serverListViewModel.filterServersByISO(
|
|
|
+ it
|
|
|
+ )
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
- }
|
|
|
- 1 -> {
|
|
|
- if (isStreamingExpanded) {
|
|
|
- CompositionLocalProvider(
|
|
|
- LocalOverscrollConfiguration provides null
|
|
|
- ) {
|
|
|
- val streaming = basePreferenceHelper.getServerData()
|
|
|
- val filterData = streaming.get(1).servers?.let {
|
|
|
- serverListViewModel.filterServersByStreamingServers(
|
|
|
- it
|
|
|
- )
|
|
|
- }
|
|
|
- LazyColumn() {
|
|
|
- items(items = filterData!!) { streaming ->
|
|
|
- ServerItem(server = streaming)
|
|
|
- }
|
|
|
- }
|
|
|
+ else {
|
|
|
+ data.get(serverTabPager).servers?.let {
|
|
|
+ serverListViewModel.filterServersByStreamingServers(
|
|
|
+ it
|
|
|
+ )
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- 2 -> {
|
|
|
- if (isDvpnExpanded) {
|
|
|
- CompositionLocalProvider(
|
|
|
- LocalOverscrollConfiguration provides null
|
|
|
- ) {
|
|
|
- val dvpn = basePreferenceHelper.getServerData()
|
|
|
- val filterData = dvpn.get(2).servers?.let {
|
|
|
- serverListViewModel.filterServersByISO(
|
|
|
- it
|
|
|
- )
|
|
|
- }
|
|
|
-
|
|
|
- LazyColumn() {
|
|
|
- items(items = filterData!!) { dvpn ->
|
|
|
- ServerItem(server = dvpn)
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
- }
|
|
|
- }
|
|
|
- 3 -> {
|
|
|
- if (isP2PExpanded) {
|
|
|
- CompositionLocalProvider(
|
|
|
- LocalOverscrollConfiguration provides null
|
|
|
- ) {
|
|
|
- val p2p = basePreferenceHelper.getServerData()
|
|
|
- val filterData = p2p.get(3).servers?.let {
|
|
|
- serverListViewModel.filterServersByISO(
|
|
|
- it
|
|
|
- )
|
|
|
- }
|
|
|
-
|
|
|
- LazyColumn() {
|
|
|
- items(items = filterData!!) { p2p ->
|
|
|
- ServerItem(server = p2p)
|
|
|
- }
|
|
|
- }
|
|
|
+ Log.d("streaming_servers",data[serverTabPager].name?.toString() + filterServersData?.size.toString())
|
|
|
+
|
|
|
+
|
|
|
+ LazyColumn() {
|
|
|
+ items(items = filterServersData!!) { country ->
|
|
|
+ CountryItem(server = country, data[serverTabPager].name!!)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+// when (serverTabPager) {
|
|
|
+// 0 -> {
|
|
|
+// if (isCountriesExpanded) {
|
|
|
+// CompositionLocalProvider(
|
|
|
+// LocalOverscrollConfiguration provides null
|
|
|
+// ) {
|
|
|
+// val country = basePreferenceHelper.getServerData()
|
|
|
+// val filterData = country.get(0).servers?.let {
|
|
|
+// serverListViewModel.filterServersByISO(
|
|
|
+// it
|
|
|
+// )
|
|
|
+// }
|
|
|
+//
|
|
|
+// LazyColumn() {
|
|
|
+// items(items = filterData!!) { country ->
|
|
|
+// CountryItem(server = country)
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// }
|
|
|
+// }
|
|
|
+// 1 -> {
|
|
|
+// if (isStreamingExpanded) {
|
|
|
+// CompositionLocalProvider(
|
|
|
+// LocalOverscrollConfiguration provides null
|
|
|
+// ) {
|
|
|
+// val streaming = basePreferenceHelper.getServerData()
|
|
|
+// val filterData = streaming.get(1).servers?.let {
|
|
|
+// serverListViewModel.filterServersByStreamingServers(
|
|
|
+// it
|
|
|
+// )
|
|
|
+// }
|
|
|
+// LazyColumn() {
|
|
|
+// items(items = filterData!!) { streaming ->
|
|
|
+// ServerItem(server = streaming)
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// 2 -> {
|
|
|
+// if (isDvpnExpanded) {
|
|
|
+// CompositionLocalProvider(
|
|
|
+// LocalOverscrollConfiguration provides null
|
|
|
+// ) {
|
|
|
+// val dvpn = basePreferenceHelper.getServerData()
|
|
|
+// val filterData = dvpn.get(2).servers?.let {
|
|
|
+// serverListViewModel.filterServersByISO(
|
|
|
+// it
|
|
|
+// )
|
|
|
+// }
|
|
|
+//
|
|
|
+// LazyColumn() {
|
|
|
+// items(items = filterData!!) { dvpn ->
|
|
|
+// ServerItem(server = dvpn)
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// }
|
|
|
+// }
|
|
|
+// 3 -> {
|
|
|
+// if (isP2PExpanded) {
|
|
|
+// CompositionLocalProvider(
|
|
|
+// LocalOverscrollConfiguration provides null
|
|
|
+// ) {
|
|
|
+// val p2p = basePreferenceHelper.getServerData()
|
|
|
+// val filterData = p2p.get(3).servers?.let {
|
|
|
+// serverListViewModel.filterServersByISO(
|
|
|
+// it
|
|
|
+// )
|
|
|
+// }
|
|
|
+//
|
|
|
+// LazyColumn() {
|
|
|
+// items(items = filterData!!) { p2p ->
|
|
|
+// ServerItem(server = p2p)
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -716,23 +766,24 @@ fun ColumnScope.ShowHeaderItem(
|
|
|
// .rotate(rotationState4)
|
|
|
.pointerInput(Unit) {
|
|
|
detectTapGestures {
|
|
|
- when (serverTabPager) {
|
|
|
- 0 -> {
|
|
|
- onClick()
|
|
|
- }
|
|
|
-
|
|
|
- 1 -> {
|
|
|
- onClick()
|
|
|
- }
|
|
|
-
|
|
|
- 2 -> {
|
|
|
- onClick()
|
|
|
- }
|
|
|
-
|
|
|
- 3 -> {
|
|
|
- onClick()
|
|
|
- }
|
|
|
- }
|
|
|
+ onClick()
|
|
|
+// when (serverTabPager) {
|
|
|
+//// 0 -> {
|
|
|
+//// onClick()
|
|
|
+//// }
|
|
|
+////
|
|
|
+//// 1 -> {
|
|
|
+//// onClick()
|
|
|
+//// }
|
|
|
+////
|
|
|
+//// 2 -> {
|
|
|
+//// onClick()
|
|
|
+//// }
|
|
|
+////
|
|
|
+//// 3 -> {
|
|
|
+//// onClick()
|
|
|
+//// }
|
|
|
+// }
|
|
|
}
|
|
|
}
|
|
|
)
|