refactor: change logic to seed new downloads

This commit is contained in:
Hachi-R 2024-11-09 01:16:03 -03:00
parent 7c039ead10
commit 5078946191
2 changed files with 17 additions and 32 deletions

View file

@ -5,7 +5,6 @@ import { WindowManager } from "../window-manager";
import { import {
downloadQueueRepository, downloadQueueRepository,
gameRepository, gameRepository,
userPreferencesRepository,
} from "@main/repository"; } from "@main/repository";
import { publishDownloadCompleteNotification } from "../notifications"; import { publishDownloadCompleteNotification } from "../notifications";
import { RealDebridDownloader } from "./real-debrid-downloader"; import { RealDebridDownloader } from "./real-debrid-downloader";
@ -104,36 +103,6 @@ export class DownloadManager {
{ status: "seeding" } { status: "seeding" }
); );
} }
const userPreferences = await userPreferencesRepository.findOneBy({
id: 1,
});
const shouldSeedOrNot = await gameRepository.find({
where: {
id: In(gameIds),
shouldSeed: false,
isDeleted: false,
status: Not(In(["complete", "seeding"])),
},
});
if (shouldSeedOrNot.length === 0) return;
if (userPreferences?.seedAfterDownloadComplete) {
await gameRepository.update(
{ id: In(shouldSeedOrNot.map((game) => game.id)) },
{ shouldSeed: true, status: "seeding" }
);
} else {
await gameRepository.update(
{ id: In(shouldSeedOrNot.map((game) => game.id)) },
{ shouldSeed: false, status: "complete" }
);
for (const game of shouldSeedOrNot) {
await this.pauseSeeding(game.id);
}
}
} }
static async pauseSeeding(gameId: number) { static async pauseSeeding(gameId: number) {

View file

@ -6,7 +6,7 @@ import {
RPC_PORT, RPC_PORT,
startTorrentClient as startRPCClient, startTorrentClient as startRPCClient,
} from "./torrent-client"; } from "./torrent-client";
import { gameRepository } from "@main/repository"; import { gameRepository, userPreferencesRepository } from "@main/repository";
import type { DownloadProgress } from "@types"; import type { DownloadProgress } from "@types";
import { QueryDeepPartialEntity } from "typeorm/query-builder/QueryPartialEntity"; import { QueryDeepPartialEntity } from "typeorm/query-builder/QueryPartialEntity";
import { calculateETA } from "./helpers"; import { calculateETA } from "./helpers";
@ -107,6 +107,22 @@ export class PythonInstance {
} }
if (progress === 1 && !isCheckingFiles) { if (progress === 1 && !isCheckingFiles) {
const userPreferences = await userPreferencesRepository.findOneBy({
id: 1,
});
if (userPreferences?.seedAfterDownloadComplete) {
gameRepository.update(
{ id: gameId },
{ status: "seeding", shouldSeed: true }
);
} else {
gameRepository.update(
{ id: gameId },
{ status: "complete", shouldSeed: false }
);
}
this.downloadingGameId = -1; this.downloadingGameId = -1;
} }