feat: adding bypass for region blocks

This commit is contained in:
Hydra
2024-05-12 23:43:00 +01:00
parent a2790190e6
commit 1c7911c531
38 changed files with 942 additions and 979 deletions

View File

@@ -4,7 +4,29 @@ import { getSteamAppDetails } from "@main/services";
import type { ShopDetails, GameShop, SteamAppDetails } from "@types";
import { registerEvent } from "../register-event";
import { searchRepacks } from "../helpers/search-games";
const getLocalizedSteamAppDetails = (
objectID: string,
language: string
): Promise<ShopDetails | null> => {
const englishAppDetails = getSteamAppDetails(objectID, "english");
if (language === "english") return englishAppDetails;
return Promise.all([
englishAppDetails,
getSteamAppDetails(objectID, language),
]).then(([appDetails, localizedAppDetails]) => {
if (appDetails && localizedAppDetails) {
return {
...localizedAppDetails,
name: appDetails.name,
};
}
return null;
});
};
const getGameShopDetails = async (
_event: Electron.IpcMainInvokeEvent,
@@ -17,27 +39,21 @@ const getGameShopDetails = async (
where: { objectID, language },
});
const result = Promise.all([
getSteamAppDetails(objectID, "english"),
getSteamAppDetails(objectID, language),
]).then(([appDetails, localizedAppDetails]) => {
if (appDetails && localizedAppDetails) {
const appDetails = getLocalizedSteamAppDetails(objectID, language).then(
(result) => {
gameShopCacheRepository.upsert(
{
objectID,
shop: "steam",
language,
serializedData: JSON.stringify({
...localizedAppDetails,
name: appDetails.name,
}),
serializedData: JSON.stringify(result),
},
["objectID"]
);
}
return [appDetails, localizedAppDetails];
});
return result;
}
);
const cachedGame = cachedData?.serializedData
? (JSON.parse(cachedData?.serializedData) as SteamAppDetails)
@@ -46,21 +62,11 @@ const getGameShopDetails = async (
if (cachedGame) {
return {
...cachedGame,
repacks: searchRepacks(cachedGame.name),
objectID,
} as ShopDetails;
}
return result.then(([appDetails, localizedAppDetails]) => {
if (!appDetails || !localizedAppDetails) return null;
return {
...localizedAppDetails,
name: appDetails.name,
repacks: searchRepacks(appDetails.name),
objectID,
} as ShopDetails;
});
return Promise.resolve(appDetails);
}
throw new Error("Not implemented");

View File

@@ -0,0 +1,14 @@
import { searchRepacks } from "../helpers/search-games";
import { registerEvent } from "../register-event";
const searchGameRepacks = (
_event: Electron.IpcMainInvokeEvent,
query: string
) => {
return searchRepacks(query);
};
registerEvent(searchGameRepacks, {
name: "searchGameRepacks",
memoize: true,
});

View File

@@ -7,6 +7,7 @@ import "./catalogue/get-games";
import "./catalogue/get-how-long-to-beat";
import "./catalogue/get-random-game";
import "./catalogue/search-games";
import "./catalogue/search-game-repacks";
import "./hardware/get-disk-free-space";
import "./library/add-game-to-library";
import "./library/close-game";

View File

@@ -12,8 +12,7 @@ export class RealDebridClient {
private static instance: AxiosInstance;
static async addMagnet(magnet: string) {
const searchParams = new URLSearchParams();
searchParams.append("magnet", magnet);
const searchParams = new URLSearchParams({ magnet });
const response = await this.instance.post<RealDebridAddMagnet>(
"/torrents/addMagnet",
@@ -31,8 +30,7 @@ export class RealDebridClient {
}
static async selectAllFiles(id: string) {
const searchParams = new URLSearchParams();
searchParams.append("files", "all");
const searchParams = new URLSearchParams({ files: "all" });
await this.instance.post(
`/torrents/selectFiles/${id}`,
@@ -41,8 +39,7 @@ export class RealDebridClient {
}
static async unrestrictLink(link: string) {
const searchParams = new URLSearchParams();
searchParams.append("link", link);
const searchParams = new URLSearchParams({ link });
const response = await this.instance.post<RealDebridUnrestrictLink>(
"/unrestrict/link",