diff --git a/app/src/main/java/com/droiddeck/launcher/stores/StoreInstallRoot.kt b/app/src/main/java/com/droiddeck/launcher/stores/StoreInstallRoot.kt index c26bcd17d..6814ad4e9 100644 --- a/app/src/main/java/com/droiddeck/launcher/stores/StoreInstallRoot.kt +++ b/app/src/main/java/com/droiddeck/launcher/stores/StoreInstallRoot.kt @@ -246,7 +246,7 @@ object StoreInstallRoot { val sidecar = StoreGameSidecar.read(folder) when { sidecar == null -> Unfinished(store, null, folder) - store == Store.GOG && sidecar.state == StoreGameSidecar.STATE_UPDATING -> null + sidecar.state == StoreGameSidecar.STATE_UPDATING -> null !sidecar.isInstalled -> Unfinished(store, sidecar.id, folder) else -> null } diff --git a/app/src/main/java/com/droiddeck/launcher/stores/StoresState.kt b/app/src/main/java/com/droiddeck/launcher/stores/StoresState.kt index cf774f47b..2902cd366 100644 --- a/app/src/main/java/com/droiddeck/launcher/stores/StoresState.kt +++ b/app/src/main/java/com/droiddeck/launcher/stores/StoresState.kt @@ -81,7 +81,7 @@ object StoresState { runCatching { com.droiddeck.launcher.stores.battlenet.BattleNetClient.syncAccount(app) } val found = Store.entries.mapNotNull { store -> StoreAccounts.displayName(app, store)?.let { store to it } } val onDisk = StoreInstallRoot.gameFolders(app).mapNotNull { folder -> - StoreGameSidecar.read(folder)?.takeIf { it.isInstalled || it.store == Store.GOG && it.state == StoreGameSidecar.STATE_UPDATING }?.let { InstalledStoreGame(it, folder) } + StoreGameSidecar.read(folder)?.takeIf { it.isInstalled || it.state == StoreGameSidecar.STATE_UPDATING }?.let { InstalledStoreGame(it, folder) } } + runCatching { com.droiddeck.launcher.stores.battlenet.BattleNetBackend.installedGames(app) }.getOrDefault(emptyList()) val partial = StoreInstallRoot.unfinished(app) val version = if (StoresNative.available) StoresNative.version ?: "" else "" diff --git a/app/src/test/java/com/droiddeck/launcher/stores/StoreInstallRootTest.kt b/app/src/test/java/com/droiddeck/launcher/stores/StoreInstallRootTest.kt index 78508a525..09cf7fc26 100644 --- a/app/src/test/java/com/droiddeck/launcher/stores/StoreInstallRootTest.kt +++ b/app/src/test/java/com/droiddeck/launcher/stores/StoreInstallRootTest.kt @@ -201,6 +201,15 @@ class StoreInstallRootTest { assertTrue(StoreInstallRoot.unfinished(app).none { it.folder.absolutePath == half.absolutePath }) } + @Test fun aGameBeingUpdatedIsNotAnUnfinishedInstallForAnyStore() { + SessionPrefs.setGameStorage(app, SessionPrefs.GAME_STORAGE_OFF, "") + for (store in listOf(Store.EPIC, Store.ITCH, Store.XBOX, Store.AMAZON)) { + val folder = File(StoreInstallRoot.storeDir(StoreInstallRoot.internalRoot(app), store), StoreInstallRoot.folderName("Updating", "u1")).apply { mkdirs() } + StoreGameSidecar(store, "u1", "Updating", "Updating.exe", state = StoreGameSidecar.STATE_UPDATING).write(folder) + assertTrue(StoreInstallRoot.unfinished(app).none { it.folder.absolutePath == folder.absolutePath }) + } + } + @Test fun theScratchCacheIsPrivateAndNamedSafely() { val dir = StoreInstallRoot.scratchDir(app, Store.EPIC, "a/b:c") assertTrue(dir.absolutePath.startsWith(app.cacheDir.absolutePath))