feat: pause seeding before deleting game

This commit is contained in:
Hachi-R 2024-11-09 14:29:45 -03:00
parent 518d919da5
commit f66bdd706b
3 changed files with 11 additions and 2 deletions

View File

@ -3,11 +3,16 @@ import { registerEvent } from "../register-event";
import { DownloadManager } from "@main/services";
import { dataSource } from "@main/data-source";
import { Game } from "@main/entity";
import { gameRepository } from "@main/repository";
const pauseGameSeed = async (
_event: Electron.IpcMainInvokeEvent,
gameId: number
) => {
const game = await gameRepository.findOneBy({ id: gameId });
if (game?.status !== "seeding") return;
await dataSource.transaction(async (transactionalEntityManager) => {
await transactionalEntityManager
.getRepository(Game)

View File

@ -21,11 +21,13 @@ export default function Downloads() {
const [showBinaryNotFoundModal, setShowBinaryNotFoundModal] = useState(false);
const [showDeleteModal, setShowDeleteModal] = useState(false);
const { removeGameInstaller } = useDownload();
const { removeGameInstaller, pauseSeeding } = useDownload();
const handleDeleteGame = async () => {
if (gameToBeDeleted.current)
if (gameToBeDeleted.current) {
await pauseSeeding(gameToBeDeleted.current);
await removeGameInstaller(gameToBeDeleted.current);
}
};
const { lastPacket } = useDownload();

View File

@ -195,6 +195,8 @@ class TorrentDownloader:
if torrent_handle:
torrent_handle.pause()
torrent_handle.unset_flags(lt.torrent_flags.auto_managed)
self.session.remove_torrent(torrent_handle)
self.torrent_handles.pop(game_id, None)
def resume_seeding(self, game_id: int, magnet: str, save_path: str):
params = {'url': magnet, 'save_path': save_path, 'trackers': self.trackers}