mirror of
https://github.com/hydralauncher/hydra.git
synced 2025-01-23 05:24:55 +03:00
refactor: improve reset achievements handling and modal state management
This commit is contained in:
parent
8cf549ff05
commit
93b86f8c6c
@ -31,10 +31,10 @@ export function GameOptionsModal({
|
||||
|
||||
const [showDeleteModal, setShowDeleteModal] = useState(false);
|
||||
const [showRemoveGameModal, setShowRemoveGameModal] = useState(false);
|
||||
const [launchOptions, setLaunchOptions] = useState(game.launchOptions ?? "");
|
||||
const [showResetAchievementsModal, setShowResetAchievementsModal] =
|
||||
useState(false);
|
||||
|
||||
const [launchOptions, setLaunchOptions] = useState(game.launchOptions ?? "");
|
||||
const [isDeleting, setIsDeleting] = useState(false);
|
||||
|
||||
const {
|
||||
removeGameInstaller,
|
||||
@ -146,8 +146,13 @@ export function GameOptionsModal({
|
||||
window.electron.platform === "linux";
|
||||
|
||||
const handleResetAchievements = async () => {
|
||||
await window.electron.resetGameAchievements(game.id);
|
||||
updateGame();
|
||||
setIsDeleting(true);
|
||||
try {
|
||||
await window.electron.resetGameAchievements(game.id);
|
||||
} finally {
|
||||
await updateGame();
|
||||
setIsDeleting(false);
|
||||
}
|
||||
};
|
||||
|
||||
const shouldShowLaunchOptionsConfiguration = false;
|
||||
@ -333,7 +338,7 @@ export function GameOptionsModal({
|
||||
<Button
|
||||
onClick={() => setShowResetAchievementsModal(true)}
|
||||
theme="danger"
|
||||
disabled={isGameDownloading || deleting}
|
||||
disabled={isGameDownloading || deleting || isDeleting}
|
||||
>
|
||||
{t("reset_achievements")}
|
||||
</Button>
|
||||
|
@ -2,7 +2,6 @@ import { useTranslation } from "react-i18next";
|
||||
import { Button, Modal } from "@renderer/components";
|
||||
import * as styles from "./remove-from-library-modal.css";
|
||||
import type { Game } from "@types";
|
||||
|
||||
type ResetAchievementsModalProps = Readonly<{
|
||||
visible: boolean;
|
||||
game: Game;
|
||||
@ -19,18 +18,21 @@ export function ResetAchievementsModal({
|
||||
const { t } = useTranslation("game_details");
|
||||
|
||||
const handleResetAchievements = async () => {
|
||||
await resetAchievements();
|
||||
onClose();
|
||||
try {
|
||||
await resetAchievements();
|
||||
} finally {
|
||||
onClose();
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<Modal
|
||||
visible={visible}
|
||||
onClose={onClose}
|
||||
title={t("reset_achievements_title")}
|
||||
description={t("reset_achievements_description", {
|
||||
game: game.title,
|
||||
})}
|
||||
onClose={onClose}
|
||||
>
|
||||
<div className={styles.deleteActionsButtonsCtn}>
|
||||
<Button onClick={handleResetAchievements} theme="outline">
|
||||
|
Loading…
Reference in New Issue
Block a user