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

@@ -355,7 +355,8 @@
"common_redist_description": "Common redistributables are required to run some games. Installing them is recommended to avoid issues.",
"install_common_redist": "Install",
"installing_common_redist": "Installing…",
"show_download_speed_in_megabytes": "Show download speed in megabytes per second"
"show_download_speed_in_megabytes": "Show download speed in megabytes per second",
"extract_files_by_default": "Extract files by default after download"
},
"notifications": {
"download_complete": "Download complete",

View File

@@ -342,7 +342,8 @@
"common_redist_description": "Componentes recomendados são necessários para executar alguns jogos. A instalação deles é recomendada para evitar problemas.",
"install_common_redist": "Instalar",
"installing_common_redist": "Instalando…",
"show_download_speed_in_megabytes": "Exibir taxas de download em megabytes por segundo"
"show_download_speed_in_megabytes": "Exibir taxas de download em megabytes por segundo",
"extract_files_by_default": "Extrair arquivos automaticamente após o download"
},
"notifications": {
"download_complete": "Download concluído",

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,
})
}
/>
</>
);
}

View File

@@ -88,6 +88,7 @@ export interface UserPreferences {
achievementNotificationsEnabled?: boolean;
friendRequestNotificationsEnabled?: boolean;
showDownloadSpeedInMegabytes?: boolean;
extractFilesByDefault?: boolean;
}
export interface ScreenState {