fix: fixing add game to library

This commit is contained in:
Hydra
2024-05-12 10:56:31 +01:00
34 changed files with 555 additions and 221 deletions

View File

@@ -8,42 +8,35 @@ import { requestSteam250 } from "@main/services";
const repacks = stateManager.getValue("repacks");
interface GetStringForLookup {
(index: number): string;
}
const getStringForLookup = (index: number): string => {
const repack = repacks[index];
const formatter =
repackerFormatter[repack.repacker as keyof typeof repackerFormatter];
return formatName(formatter(repack.title));
};
const resultSize = 12;
const getCatalogue = async (
_event: Electron.IpcMainInvokeEvent,
category: CatalogueCategory
) => {
const getStringForLookup = (index: number): string => {
const repack = repacks[index];
const formatter =
repackerFormatter[repack.repacker as keyof typeof repackerFormatter];
return formatName(formatter(repack.title));
};
if (!repacks.length) return [];
const resultSize = 12;
if (category === "trending") {
return getTrendingCatalogue(resultSize);
} else {
return getRecentlyAddedCatalogue(
resultSize,
resultSize,
getStringForLookup
);
}
return getRecentlyAddedCatalogue(resultSize);
};
const getTrendingCatalogue = async (
resultSize: number
): Promise<CatalogueEntry[]> => {
const results: CatalogueEntry[] = [];
const trendingGames = await requestSteam250("/30day");
const trendingGames = await requestSteam250("/90day");
for (
let i = 0;
i < trendingGames.length && results.length < resultSize;
@@ -51,7 +44,7 @@ const getTrendingCatalogue = async (
) {
if (!trendingGames[i]) continue;
const { title, objectID } = trendingGames[i];
const { title, objectID } = trendingGames[i]!;
const repacks = searchRepacks(title);
if (title && repacks.length) {
@@ -69,11 +62,8 @@ const getTrendingCatalogue = async (
};
const getRecentlyAddedCatalogue = async (
resultSize: number,
requestSize: number,
getStringForLookup: GetStringForLookup
resultSize: number
): Promise<CatalogueEntry[]> => {
let lookupRequest = [];
const results: CatalogueEntry[] = [];
for (let i = 0; results.length < resultSize; i++) {
@@ -84,15 +74,7 @@ const getRecentlyAddedCatalogue = async (
continue;
}
lookupRequest.push(searchGames({ query: stringForLookup }));
if (lookupRequest.length < requestSize) {
continue;
}
const games = (await Promise.all(lookupRequest)).map((value) =>
value.at(0)
);
const games = searchGames({ query: stringForLookup });
for (const game of games) {
const isAlreadyIncluded = results.some(
@@ -105,7 +87,6 @@ const getRecentlyAddedCatalogue = async (
results.push(game);
}
lookupRequest = [];
}
return results.slice(0, resultSize);

View File

@@ -16,7 +16,6 @@ const addGameToLibrary = async (
const game = await gameRepository.findOne({
where: {
objectID,
isDeleted: false,
},
});

View File

@@ -11,7 +11,7 @@ import { registerEvent } from "../register-event";
const deleteGameFolder = async (
_event: Electron.IpcMainInvokeEvent,
gameId: number
) => {
): Promise<void> => {
const game = await gameRepository.findOne({
where: {
id: gameId,
@@ -38,7 +38,8 @@ const deleteGameFolder = async (
logger.error(error);
reject();
}
resolve(null);
resolve();
}
);
});

View File

@@ -1,3 +1,4 @@
import axios from "axios";
import { getSteamAppAsset } from "@main/helpers";
export interface SteamGridResponse {
@@ -27,33 +28,35 @@ export const getSteamGridData = async (
): Promise<SteamGridResponse> => {
const searchParams = new URLSearchParams(params);
const response = await fetch(
if (!import.meta.env.MAIN_VITE_STEAMGRIDDB_API_KEY) {
throw new Error("STEAMGRIDDB_API_KEY is not set");
}
const response = await axios.get(
`https://www.steamgriddb.com/api/v2/${path}/${shop}/${objectID}?${searchParams.toString()}`,
{
method: "GET",
headers: {
Authorization: `Bearer ${import.meta.env.MAIN_VITE_STEAMGRIDDB_API_KEY}`,
},
}
);
return response.json();
return response.data;
};
export const getSteamGridGameById = async (
id: number
): Promise<SteamGridGameResponse> => {
const response = await fetch(
const response = await axios.get(
`https://www.steamgriddb.com/api/public/game/${id}`,
{
method: "GET",
headers: {
Referer: "https://www.steamgriddb.com/",
},
}
);
return response.json();
return response.data;
};
export const getSteamGameIconUrl = async (objectID: string) => {