android: Check if cached games are valid

Fixes bug when you close yuzu, delete games, and reopen to an instant crash.
This commit is contained in:
Charles Lombardo 2023-05-11 16:57:13 -04:00 committed by bunnei
parent aa957df0dc
commit bafd4d344f

View File

@ -3,6 +3,8 @@
package org.yuzu.yuzu_emu.model package org.yuzu.yuzu_emu.model
import android.net.Uri
import androidx.documentfile.provider.DocumentFile
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
@ -44,7 +46,13 @@ class GamesViewModel : ViewModel() {
if (storedGames!!.isNotEmpty()) { if (storedGames!!.isNotEmpty()) {
val deserializedGames = mutableSetOf<Game>() val deserializedGames = mutableSetOf<Game>()
storedGames.forEach { storedGames.forEach {
deserializedGames.add(Json.decodeFromString(it)) val game: Game = Json.decodeFromString(it)
val gameExists =
DocumentFile.fromSingleUri(YuzuApplication.appContext, Uri.parse(game.path))
?.exists()
if (gameExists == true) {
deserializedGames.add(game)
}
} }
setGames(deserializedGames.toList()) setGames(deserializedGames.toList())
} }