feat: Implemented link game importing

feat: Implemented download page for downloading roms from various sources using plugins. Added support for internet archive external plugin.
feat: Added tasks page to track running tasks/downloads
feat: Added tanstack caching
feat: Added quick play action Fixes #6
feat: Added quick emulator launch action
fix: Made task queue only support 1 task per group and task ID should now be unique
This commit is contained in:
Simeon Radivoev 2026-05-15 13:50:55 +03:00
parent 9a3e605625
commit 9141fb35d4
Signed by: simeonradivoev
GPG key ID: 7611A451D2A5D37A
70 changed files with 1922 additions and 560 deletions

View file

@ -1,7 +1,9 @@
import { AsyncSeriesBailHook } from "tapable";
import AuthHooks from "./auth";
import EmulatorHooks from "./emulators";
import GameHooks from "./games";
import StoreHooks from "./store";
import { DownloadFileEntry, ProgressStats } from "../shared";
export class GameflowHooks
{
@ -9,4 +11,39 @@ export class GameflowHooks
emulators = new EmulatorHooks();
auth = new AuthHooks();
store = new StoreHooks();
/** Download the given files and return their final paths. */
downloadFiles = new AsyncSeriesBailHook<[ctx: {
/** Unique ID of the download */
id: string,
/** The root download path. Each file has it's own download sub path */
downloadPath: string,
abortSignal?: AbortSignal,
/** Authentication needed for download. Should be put in the headers. */
auth?: string,
/** The files to download */
files: DownloadFileEntry[];
/** Call it to update progress in the UI */
updateProgress: (stats: ProgressStats) => void;
}], {
/** What downloaded the files. Will be passed to {@link postDownloadFiles} files hook. */
source: string,
/** The file paths ot the downloaded files. */
files: string[];
} | undefined>(['ctx']);
/** Called after {@link downloadFiles} has finished downloading.
* @returns The modified file paths.
*/
postDownloadFiles = new AsyncSeriesBailHook<[ctx: {
/** Who downloaded the files. Passed from the {@link downloadFiles} hook. */
source: string;
/** Can be directories or files */
files: string[];
/** The root downloads folder. */
downloadPath: string,
/** The sub path where the archive should be extracted to. This will be a sub path of `path_fs` */
extract_path?: string;
/** This is the parent path for the extracted files. */
path_fs?: string;
}], string[] | undefined>(['ctx']);
}