feat: get all games on first request

This commit is contained in:
Zamitto
2024-04-27 18:40:05 -03:00
parent 5a24f5ba29
commit d7810eec38
2 changed files with 37 additions and 15 deletions

View File

@@ -1,27 +1,44 @@
import shuffle from "lodash/shuffle";
import { getRandomSteam250List } from "@main/services";
import { Steam250Game, getSteam250List } from "@main/services";
import { registerEvent } from "../register-event";
import { searchGames, searchRepacks } from "../helpers/search-games";
import { formatName } from "@main/helpers";
let gamesList = new Array<Steam250Game>();
let nextGameIndex = 0;
const getRandomGame = async (_event: Electron.IpcMainInvokeEvent) => {
return getRandomSteam250List().then(async (games) => {
const shuffledList = shuffle(games);
if (gamesList.length == 0) {
console.log("fetching steam 250 pages");
gamesList = shuffle(await getSteam250List());
} else {
console.log("getting cached list");
}
for (const game of shuffledList) {
const repacks = searchRepacks(formatName(game.title));
let resultObjectId = "";
if (repacks.length) {
const results = await searchGames({ query: game.title });
while (!resultObjectId) {
const game = gamesList[nextGameIndex];
const repacks = searchRepacks(formatName(game.title));
if (results.length) {
return results[0].objectID;
}
if (repacks.length) {
const results = await searchGames({ query: game.title });
if (results.length) {
resultObjectId = results[0].objectID;
}
}
});
nextGameIndex += 1;
if (nextGameIndex == gamesList.length - 1) {
nextGameIndex = 0;
gamesList = shuffle(gamesList);
}
}
return resultObjectId;
};
registerEvent(getRandomGame, {