diff --git a/src/backend/main.ts b/src/backend/main.ts index 78c9cbd625..7b717b6536 100644 --- a/src/backend/main.ts +++ b/src/backend/main.ts @@ -7,7 +7,8 @@ import { StatusPromise, GamepadInputEvent, WineCommandArgs, - ExecResult + ExecResult, + Runner } from 'common/types' import * as path from 'path' import { @@ -632,7 +633,7 @@ ipcMain.handle('checkGameUpdates', async (): Promise => { for (const runner in libraryManagerMap) { let gamesToUpdate = await libraryManagerMap[runner].listUpdateableGames() if (autoUpdateGames) { - gamesToUpdate = autoUpdate(runner, gamesToUpdate) + gamesToUpdate = autoUpdate(runner as Runner, gamesToUpdate) } oldGames = [...oldGames, ...gamesToUpdate] } diff --git a/src/backend/storeManagers/index.ts b/src/backend/storeManagers/index.ts index 02cfd352f2..dfb11e7760 100644 --- a/src/backend/storeManagers/index.ts +++ b/src/backend/storeManagers/index.ts @@ -12,9 +12,10 @@ import { GameManager, LibraryManager } from 'common/types/game_manager' import { logInfo, RunnerToLogPrefixMap } from 'backend/logger/logger' import { addToQueue } from 'backend/downloadmanager/downloadqueue' -import { DMQueueElement, GameInfo } from 'common/types' -interface GameManagerMap { - [key: string]: GameManager +import { DMQueueElement, GameInfo, Runner } from 'common/types' +import { isGameAvailable } from 'backend/api/helpers' +type GameManagerMap = { + [key in Runner]: GameManager } export const gameManagerMap: GameManagerMap = { @@ -24,8 +25,8 @@ export const gameManagerMap: GameManagerMap = { nile: NileGameManager } -interface LibraryManagerMap { - [key: string]: LibraryManager +type LibraryManagerMap = { + [key in Runner]: LibraryManager } export const libraryManagerMap: LibraryManagerMap = { @@ -56,14 +57,14 @@ function getDMElement(gameInfo: GameInfo, appName: string) { return dmQueueElement } -export function autoUpdate(runner: string, gamesToUpdate: string[]) { +export function autoUpdate(runner: Runner, gamesToUpdate: string[]) { const logPrefix = RunnerToLogPrefixMap[runner] gamesToUpdate.forEach(async (appName) => { const { ignoreGameUpdates } = await gameManagerMap[runner].getSettings( appName ) const gameInfo = gameManagerMap[runner].getGameInfo(appName) - if (!ignoreGameUpdates) { + if (!ignoreGameUpdates && (await isGameAvailable({ appName, runner }))) { logInfo(`Auto-Updating ${gameInfo.title}`, logPrefix) const dmQueueElement: DMQueueElement = getDMElement(gameInfo, appName) addToQueue(dmQueueElement)