feat: add option to extract files by default after download in settings behavior

This commit is contained in:
Hachi-R
2025-04-13 17:11:04 -03:00
parent f2efbfba3a
commit bd0b2ce2c1
5 changed files with 32 additions and 8 deletions

View File

@@ -34,13 +34,26 @@ export function DownloadSettingsModal({
}: Readonly<DownloadSettingsModalProps>) {
const { t } = useTranslation("game_details");
const userPreferences = useAppSelector(
(state) => state.userPreferences.value
);
const getAutomaticExtractionValue = useCallback(() => {
if (userPreferences?.extractFilesByDefault === undefined) {
window.electron.updateUserPreferences({ extractFilesByDefault: true });
}
return userPreferences?.extractFilesByDefault ?? true;
}, [userPreferences?.extractFilesByDefault]);
const { showErrorToast } = useToast();
const [diskFreeSpace, setDiskFreeSpace] = useState<number | null>(null);
const [selectedPath, setSelectedPath] = useState("");
const [downloadStarting, setDownloadStarting] = useState(false);
const [automaticExtractionEnabled, setAutomaticExtractionEnabled] =
useState(true);
const [automaticExtractionEnabled, setAutomaticExtractionEnabled] = useState(
getAutomaticExtractionValue()
);
const [selectedDownloader, setSelectedDownloader] =
useState<Downloader | null>(null);
const [hasWritePermission, setHasWritePermission] = useState<boolean | null>(
@@ -49,10 +62,6 @@ export function DownloadSettingsModal({
const { isFeatureEnabled, Feature } = useFeature();
const userPreferences = useAppSelector(
(state) => state.userPreferences.value
);
const getDiskFreeSpace = async (path: string) => {
const result = await window.electron.getDiskFreeSpace(path);
setDiskFreeSpace(result.free);

View File

@@ -24,6 +24,7 @@ export function SettingsBehavior() {
seedAfterDownloadComplete: false,
showHiddenAchievementsDescription: false,
showDownloadSpeedInMegabytes: false,
extractFilesByDefault: false,
});
const { t } = useTranslation("settings");
@@ -43,6 +44,7 @@ export function SettingsBehavior() {
userPreferences.showHiddenAchievementsDescription ?? false,
showDownloadSpeedInMegabytes:
userPreferences.showDownloadSpeedInMegabytes ?? false,
extractFilesByDefault: userPreferences.extractFilesByDefault ?? false,
});
}
}, [userPreferences]);
@@ -152,6 +154,16 @@ export function SettingsBehavior() {
})
}
/>
<CheckboxField
label={t("extract_files_by_default")}
checked={form.extractFilesByDefault}
onChange={() =>
handleChange({
extractFilesByDefault: !form.extractFilesByDefault,
})
}
/>
</>
);
}