Skip to content

Commit 7f9c4a9

Browse files
committed
show flag in favourite list.
1 parent c598032 commit 7f9c4a9

File tree

4 files changed

+34
-10
lines changed

4 files changed

+34
-10
lines changed

base/src/main/java/com/windscribe/vpn/localdatabase/LocalDatabaseImpl.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
*/
44
package com.windscribe.vpn.localdatabase
55

6+
import android.database.sqlite.SQLiteException
67
import com.windscribe.vpn.Windscribe.Companion.appContext
78
import com.windscribe.vpn.localdatabase.tables.NetworkInfo
89
import com.windscribe.vpn.localdatabase.tables.PingTestResults
@@ -260,6 +261,14 @@ class LocalDatabaseImpl @Inject constructor(
260261
return cityAndRegionDao.getCityAndRegion(cityId)
261262
}
262263

264+
override fun getCountryCode(cityId: Int): String {
265+
return try {
266+
cityAndRegionDao.getCityAndRegion(cityId).region.countryCode
267+
} catch (ignored: SQLiteException) {
268+
""
269+
}
270+
}
271+
263272
override fun getConfigs(): Flow<List<ConfigFile>> {
264273
return configFileDao.allConfigsAsFlow
265274
}

base/src/main/java/com/windscribe/vpn/localdatabase/LocalDbInterface.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,4 +88,5 @@ interface LocalDbInterface {
8888
fun deleteCustomConfig(id: Int)
8989
suspend fun updateNetworkSync(networkInfo: NetworkInfo): Int
9090
suspend fun deleteNetworkSync(networkName: String): Int
91+
fun getCountryCode(cityId: Int): String
9192
}

mobile/src/main/java/com/windscribe/mobile/ui/serverlist/FavouriteServerList.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,11 @@ import com.windscribe.mobile.ui.common.healthColor
4747
import com.windscribe.mobile.ui.connection.ConnectionViewmodel
4848
import com.windscribe.mobile.ui.helper.HandleScrollHaptic
4949
import com.windscribe.mobile.ui.home.HomeViewmodel
50+
import com.windscribe.mobile.ui.home.UserState
5051
import com.windscribe.mobile.ui.theme.font12
5152
import com.windscribe.mobile.ui.theme.font16
5253
import com.windscribe.mobile.ui.theme.serverListSecondaryColor
54+
import com.windscribe.vpn.commonutils.FlagIconResource
5355
import kotlin.collections.set
5456

5557
@OptIn(ExperimentalMaterial3Api::class)
@@ -145,7 +147,14 @@ private fun ListItemView(
145147
}.padding(horizontal = 8.dp),
146148
verticalAlignment = Alignment.CenterVertically
147149
) {
148-
ServerListIcon(item.city, userState, angle, color, showLocationLoad)
150+
SplitBorderCircle(
151+
angle,
152+
color,
153+
MaterialTheme.colorScheme.serverListSecondaryColor.copy(alpha = 0.20f),
154+
FlagIconResource.getSmallFlag(item.countryCode),
155+
userState !is UserState.Pro && item.city.pro == 1,
156+
showLocationLoad
157+
)
149158
Spacer(modifier = Modifier.width(8.dp))
150159
ServerNodeName("${item.city.nodeName} ${item.city.nickName}", Modifier.weight(1f))
151160
if (item.city.linkSpeed == "10000") {

mobile/src/main/java/com/windscribe/mobile/ui/serverlist/ServerViewmodel.kt

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ import java.util.Locale
3535
import kotlin.collections.map
3636

3737
data class ServerListItem(val id: Int, val region: Region, val cities: List<City>)
38-
data class FavouriteListItem(val id: Int, val city: City)
38+
data class FavouriteListItem(val id: Int, val city: City, val countryCode: String)
3939
data class StaticListItem(val id: Int, val staticItem: StaticRegion)
4040
data class ConfigListItem(val id: Int, val config: ConfigFile)
4141
data class LatencyListItem(val id: Int, val time: Int)
@@ -289,14 +289,19 @@ class ServerViewModelImpl(
289289
}
290290

291291
private fun fetchFavouriteList() {
292-
fetchData(
293-
stateFlow = _favouriteListState,
294-
repositoryFlow = favouriteRepository.favourites,
295-
transform = { favourites ->
296-
favourites.updateCityNames().sortCities().map { FavouriteListItem(it.id, it) }
297-
},
298-
errorMessage = "Failed to load favourites"
299-
)
292+
viewModelScope.launch(Dispatchers.IO) {
293+
favouriteRepository.favourites.map { favourites ->
294+
favourites.updateCityNames().sortCities().map { city ->
295+
FavouriteListItem(
296+
city.id,
297+
city,
298+
localDbInterface.getCountryCode(city.id)
299+
)
300+
}
301+
}.collect {
302+
_favouriteListState.value = ListState.Success(it)
303+
}
304+
}
300305
}
301306

302307
private fun fetchStaticList() {

0 commit comments

Comments
 (0)