mirror of
https://github.com/hydralauncher/hydra.git
synced 2026-01-26 20:31:03 +00:00
fix: removing repacks from worker threads to fix race condition
This commit is contained in:
@@ -2,8 +2,7 @@ import { getSteamAppAsset } from "@main/helpers";
|
||||
import type { CatalogueEntry, GameShop } from "@types";
|
||||
|
||||
import { registerEvent } from "../register-event";
|
||||
import { requestSteam250 } from "@main/services";
|
||||
import { repacksWorker } from "@main/workers";
|
||||
import { RepacksManager, requestSteam250 } from "@main/services";
|
||||
import { formatName } from "@shared";
|
||||
|
||||
const resultSize = 12;
|
||||
@@ -19,10 +18,7 @@ const getCatalogue = async (_event: Electron.IpcMainInvokeEvent) => {
|
||||
}
|
||||
|
||||
const { title, objectID } = trendingGames[i]!;
|
||||
const repacks = await repacksWorker.run(
|
||||
{ query: formatName(title) },
|
||||
{ name: "search" }
|
||||
);
|
||||
const repacks = RepacksManager.search({ query: formatName(title) });
|
||||
|
||||
const catalogueEntry = {
|
||||
objectID,
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import type { CatalogueEntry } from "@types";
|
||||
|
||||
import { registerEvent } from "../register-event";
|
||||
import { repacksWorker, steamGamesWorker } from "@main/workers";
|
||||
import { steamGamesWorker } from "@main/workers";
|
||||
import { convertSteamGameToCatalogueEntry } from "../helpers/search-games";
|
||||
import { RepacksManager } from "@main/services";
|
||||
|
||||
const getGames = async (
|
||||
_event: Electron.IpcMainInvokeEvent,
|
||||
@@ -14,11 +15,8 @@ const getGames = async (
|
||||
{ name: "list" }
|
||||
);
|
||||
|
||||
const entries = await repacksWorker.run(
|
||||
steamGames.map((game) => convertSteamGameToCatalogueEntry(game)),
|
||||
{
|
||||
name: "findRepacksForCatalogueEntries",
|
||||
}
|
||||
const entries = RepacksManager.findRepacksForCatalogueEntries(
|
||||
steamGames.map((game) => convertSteamGameToCatalogueEntry(game))
|
||||
);
|
||||
|
||||
return {
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { RepacksManager } from "@main/services";
|
||||
import { registerEvent } from "../register-event";
|
||||
import { repacksWorker } from "@main/workers";
|
||||
|
||||
const searchGameRepacks = (
|
||||
_event: Electron.IpcMainInvokeEvent,
|
||||
query: string
|
||||
) => repacksWorker.run({ query }, { name: "search" });
|
||||
) => RepacksManager.search({ query });
|
||||
|
||||
registerEvent("searchGameRepacks", searchGameRepacks);
|
||||
|
||||
@@ -3,9 +3,8 @@ import { dataSource } from "@main/data-source";
|
||||
import { DownloadSource } from "@main/entity";
|
||||
import axios from "axios";
|
||||
import { downloadSourceSchema } from "../helpers/validators";
|
||||
import { repackRepository } from "@main/repository";
|
||||
import { repacksWorker } from "@main/workers";
|
||||
import { insertDownloadsFromSource } from "@main/helpers";
|
||||
import { RepacksManager } from "@main/services";
|
||||
|
||||
const addDownloadSource = async (
|
||||
_event: Electron.IpcMainInvokeEvent,
|
||||
@@ -31,15 +30,7 @@ const addDownloadSource = async (
|
||||
}
|
||||
);
|
||||
|
||||
repackRepository
|
||||
.find({
|
||||
order: {
|
||||
createdAt: "DESC",
|
||||
},
|
||||
})
|
||||
.then((repacks) => {
|
||||
repacksWorker.run(repacks, { name: "setRepacks" });
|
||||
});
|
||||
await RepacksManager.updateRepacks();
|
||||
|
||||
return downloadSource;
|
||||
};
|
||||
|
||||
@@ -1,22 +1,13 @@
|
||||
import { downloadSourceRepository, repackRepository } from "@main/repository";
|
||||
import { downloadSourceRepository } from "@main/repository";
|
||||
import { registerEvent } from "../register-event";
|
||||
import { repacksWorker } from "@main/workers";
|
||||
import { RepacksManager } from "@main/services";
|
||||
|
||||
const removeDownloadSource = async (
|
||||
_event: Electron.IpcMainInvokeEvent,
|
||||
id: number
|
||||
) => {
|
||||
await downloadSourceRepository.delete(id);
|
||||
|
||||
repackRepository
|
||||
.find({
|
||||
order: {
|
||||
createdAt: "DESC",
|
||||
},
|
||||
})
|
||||
.then((repacks) => {
|
||||
repacksWorker.run(repacks, { name: "setRepacks" });
|
||||
});
|
||||
await RepacksManager.updateRepacks();
|
||||
};
|
||||
|
||||
registerEvent("removeDownloadSource", removeDownloadSource);
|
||||
|
||||
@@ -2,8 +2,7 @@ import { registerEvent } from "../register-event";
|
||||
import axios from "axios";
|
||||
import { downloadSourceRepository } from "@main/repository";
|
||||
import { downloadSourceSchema } from "../helpers/validators";
|
||||
import { repacksWorker } from "@main/workers";
|
||||
import { GameRepack } from "@types";
|
||||
import { RepacksManager } from "@main/services";
|
||||
|
||||
const validateDownloadSource = async (
|
||||
_event: Electron.IpcMainInvokeEvent,
|
||||
@@ -20,9 +19,7 @@ const validateDownloadSource = async (
|
||||
if (existingSource)
|
||||
throw new Error("Source with the same url already exists");
|
||||
|
||||
const repacks = (await repacksWorker.run(undefined, {
|
||||
name: "list",
|
||||
})) as GameRepack[];
|
||||
const repacks = RepacksManager.repacks;
|
||||
|
||||
const existingUris = source.downloads
|
||||
.flatMap((download) => download.uris)
|
||||
|
||||
@@ -4,7 +4,8 @@ import flexSearch from "flexsearch";
|
||||
import type { GameShop, CatalogueEntry, SteamGame } from "@types";
|
||||
|
||||
import { getSteamAppAsset } from "@main/helpers";
|
||||
import { repacksWorker, steamGamesWorker } from "@main/workers";
|
||||
import { steamGamesWorker } from "@main/workers";
|
||||
import { RepacksManager } from "@main/services";
|
||||
|
||||
export interface SearchGamesArgs {
|
||||
query?: string;
|
||||
@@ -29,11 +30,8 @@ export const searchSteamGames = async (
|
||||
name: "search",
|
||||
})) as SteamGame[];
|
||||
|
||||
const result = await repacksWorker.run(
|
||||
steamGames.map((game) => convertSteamGameToCatalogueEntry(game)),
|
||||
{
|
||||
name: "findRepacksForCatalogueEntries",
|
||||
}
|
||||
const result = RepacksManager.findRepacksForCatalogueEntries(
|
||||
steamGames.map((game) => convertSteamGameToCatalogueEntry(game))
|
||||
);
|
||||
|
||||
return orderBy(
|
||||
|
||||
Reference in New Issue
Block a user