|
@@ -49,26 +49,33 @@ class GamesViewModel : ViewModel() {
|
|
|
// Retrieve list of cached games
|
|
// Retrieve list of cached games
|
|
|
val storedGames = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext)
|
|
val storedGames = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext)
|
|
|
.getStringSet(GameHelper.KEY_GAMES, emptySet())
|
|
.getStringSet(GameHelper.KEY_GAMES, emptySet())
|
|
|
- if (storedGames!!.isNotEmpty()) {
|
|
|
|
|
- val deserializedGames = mutableSetOf<Game>()
|
|
|
|
|
- storedGames.forEach {
|
|
|
|
|
- val game: Game
|
|
|
|
|
- try {
|
|
|
|
|
- game = Json.decodeFromString(it)
|
|
|
|
|
- } catch (e: MissingFieldException) {
|
|
|
|
|
- return@forEach
|
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
- val gameExists =
|
|
|
|
|
- DocumentFile.fromSingleUri(YuzuApplication.appContext, Uri.parse(game.path))
|
|
|
|
|
- ?.exists()
|
|
|
|
|
- if (gameExists == true) {
|
|
|
|
|
- deserializedGames.add(game)
|
|
|
|
|
|
|
+ viewModelScope.launch {
|
|
|
|
|
+ withContext(Dispatchers.IO) {
|
|
|
|
|
+ if (storedGames!!.isNotEmpty()) {
|
|
|
|
|
+ val deserializedGames = mutableSetOf<Game>()
|
|
|
|
|
+ storedGames.forEach {
|
|
|
|
|
+ val game: Game
|
|
|
|
|
+ try {
|
|
|
|
|
+ game = Json.decodeFromString(it)
|
|
|
|
|
+ } catch (e: MissingFieldException) {
|
|
|
|
|
+ return@forEach
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ val gameExists =
|
|
|
|
|
+ DocumentFile.fromSingleUri(
|
|
|
|
|
+ YuzuApplication.appContext,
|
|
|
|
|
+ Uri.parse(game.path)
|
|
|
|
|
+ )?.exists()
|
|
|
|
|
+ if (gameExists == true) {
|
|
|
|
|
+ deserializedGames.add(game)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ setGames(deserializedGames.toList())
|
|
|
}
|
|
}
|
|
|
|
|
+ reloadGames(false)
|
|
|
}
|
|
}
|
|
|
- setGames(deserializedGames.toList())
|
|
|
|
|
}
|
|
}
|
|
|
- reloadGames(false)
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
fun setGames(games: List<Game>) {
|
|
fun setGames(games: List<Game>) {
|