From bd0b2ce2c1d50b1df240ad6f055e63c62ef5adb8 Mon Sep 17 00:00:00 2001 From: Hachi-R Date: Sun, 13 Apr 2025 17:11:04 -0300 Subject: [PATCH 1/6] feat: add option to extract files by default after download in settings behavior --- src/locales/en/translation.json | 3 ++- src/locales/pt-BR/translation.json | 3 ++- .../modals/download-settings-modal.tsx | 21 +++++++++++++------ .../src/pages/settings/settings-behavior.tsx | 12 +++++++++++ src/types/level.types.ts | 1 + 5 files changed, 32 insertions(+), 8 deletions(-) diff --git a/src/locales/en/translation.json b/src/locales/en/translation.json index 8b3893b3..25c660db 100644 --- a/src/locales/en/translation.json +++ b/src/locales/en/translation.json @@ -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", diff --git a/src/locales/pt-BR/translation.json b/src/locales/pt-BR/translation.json index 41c58ebf..4baff652 100644 --- a/src/locales/pt-BR/translation.json +++ b/src/locales/pt-BR/translation.json @@ -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", diff --git a/src/renderer/src/pages/game-details/modals/download-settings-modal.tsx b/src/renderer/src/pages/game-details/modals/download-settings-modal.tsx index c06f280b..6bbbc09f 100644 --- a/src/renderer/src/pages/game-details/modals/download-settings-modal.tsx +++ b/src/renderer/src/pages/game-details/modals/download-settings-modal.tsx @@ -34,13 +34,26 @@ export function DownloadSettingsModal({ }: Readonly) { 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(null); const [selectedPath, setSelectedPath] = useState(""); const [downloadStarting, setDownloadStarting] = useState(false); - const [automaticExtractionEnabled, setAutomaticExtractionEnabled] = - useState(true); + const [automaticExtractionEnabled, setAutomaticExtractionEnabled] = useState( + getAutomaticExtractionValue() + ); const [selectedDownloader, setSelectedDownloader] = useState(null); const [hasWritePermission, setHasWritePermission] = useState( @@ -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); diff --git a/src/renderer/src/pages/settings/settings-behavior.tsx b/src/renderer/src/pages/settings/settings-behavior.tsx index 0afbf5b6..b21b6025 100644 --- a/src/renderer/src/pages/settings/settings-behavior.tsx +++ b/src/renderer/src/pages/settings/settings-behavior.tsx @@ -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() { }) } /> + + + handleChange({ + extractFilesByDefault: !form.extractFilesByDefault, + }) + } + /> ); } diff --git a/src/types/level.types.ts b/src/types/level.types.ts index f17abbd9..764998af 100644 --- a/src/types/level.types.ts +++ b/src/types/level.types.ts @@ -88,6 +88,7 @@ export interface UserPreferences { achievementNotificationsEnabled?: boolean; friendRequestNotificationsEnabled?: boolean; showDownloadSpeedInMegabytes?: boolean; + extractFilesByDefault?: boolean; } export interface ScreenState { From 51d476035219d2edb891f75f5913eeee4ea058c9 Mon Sep 17 00:00:00 2001 From: Hachi-R Date: Sun, 13 Apr 2025 17:21:10 -0300 Subject: [PATCH 2/6] fix: simplify logic --- .../game-details/modals/download-settings-modal.tsx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/renderer/src/pages/game-details/modals/download-settings-modal.tsx b/src/renderer/src/pages/game-details/modals/download-settings-modal.tsx index 6bbbc09f..b1dcc8c9 100644 --- a/src/renderer/src/pages/game-details/modals/download-settings-modal.tsx +++ b/src/renderer/src/pages/game-details/modals/download-settings-modal.tsx @@ -38,13 +38,13 @@ export function DownloadSettingsModal({ (state) => state.userPreferences.value ); - const getAutomaticExtractionValue = useCallback(() => { + const getAutomaticExtractionValue = () => { if (userPreferences?.extractFilesByDefault === undefined) { window.electron.updateUserPreferences({ extractFilesByDefault: true }); } return userPreferences?.extractFilesByDefault ?? true; - }, [userPreferences?.extractFilesByDefault]); + }; const { showErrorToast } = useToast(); @@ -139,6 +139,12 @@ export function DownloadSettingsModal({ userPreferences?.torBoxApiToken, ]); + useEffect(() => { + if (userPreferences?.extractFilesByDefault === undefined) { + window.electron.updateUserPreferences({ extractFilesByDefault: true }); + } + }, [userPreferences?.extractFilesByDefault]); + const handleChooseDownloadsPath = async () => { const { filePaths } = await window.electron.showOpenDialog({ defaultPath: selectedPath, From e1fb3bac7668243a9ceaae3f2e2dfe24abd757e2 Mon Sep 17 00:00:00 2001 From: Hachi-R Date: Sat, 26 Apr 2025 13:01:09 -0300 Subject: [PATCH 3/6] fix: remove unnecessary useEffect --- .../pages/game-details/modals/download-settings-modal.tsx | 6 ------ src/types/level.types.ts | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/src/renderer/src/pages/game-details/modals/download-settings-modal.tsx b/src/renderer/src/pages/game-details/modals/download-settings-modal.tsx index 6a21b0be..9293071f 100644 --- a/src/renderer/src/pages/game-details/modals/download-settings-modal.tsx +++ b/src/renderer/src/pages/game-details/modals/download-settings-modal.tsx @@ -139,12 +139,6 @@ export function DownloadSettingsModal({ userPreferences?.torBoxApiToken, ]); - useEffect(() => { - if (userPreferences?.extractFilesByDefault === undefined) { - window.electron.updateUserPreferences({ extractFilesByDefault: true }); - } - }, [userPreferences?.extractFilesByDefault]); - const handleChooseDownloadsPath = async () => { const { filePaths } = await window.electron.showOpenDialog({ defaultPath: selectedPath, diff --git a/src/types/level.types.ts b/src/types/level.types.ts index 764998af..d5a2d934 100644 --- a/src/types/level.types.ts +++ b/src/types/level.types.ts @@ -88,7 +88,7 @@ export interface UserPreferences { achievementNotificationsEnabled?: boolean; friendRequestNotificationsEnabled?: boolean; showDownloadSpeedInMegabytes?: boolean; - extractFilesByDefault?: boolean; + extractFilesByDefault?: boolean | undefined; } export interface ScreenState { From f374a9ffffae5e8fa4667c23093be78336cb1afa Mon Sep 17 00:00:00 2001 From: Hachi-R Date: Sat, 26 Apr 2025 13:18:00 -0300 Subject: [PATCH 4/6] fix: update default value of extractFilesByDefault --- src/renderer/src/pages/settings/settings-behavior.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/renderer/src/pages/settings/settings-behavior.tsx b/src/renderer/src/pages/settings/settings-behavior.tsx index b21b6025..4fcdb92d 100644 --- a/src/renderer/src/pages/settings/settings-behavior.tsx +++ b/src/renderer/src/pages/settings/settings-behavior.tsx @@ -24,7 +24,7 @@ export function SettingsBehavior() { seedAfterDownloadComplete: false, showHiddenAchievementsDescription: false, showDownloadSpeedInMegabytes: false, - extractFilesByDefault: false, + extractFilesByDefault: true, }); const { t } = useTranslation("settings"); @@ -44,7 +44,7 @@ export function SettingsBehavior() { userPreferences.showHiddenAchievementsDescription ?? false, showDownloadSpeedInMegabytes: userPreferences.showDownloadSpeedInMegabytes ?? false, - extractFilesByDefault: userPreferences.extractFilesByDefault ?? false, + extractFilesByDefault: userPreferences.extractFilesByDefault ?? true, }); } }, [userPreferences]); From b6bd424bac8031941a4b84422feb2f95578a68c1 Mon Sep 17 00:00:00 2001 From: Hachi-R Date: Sat, 26 Apr 2025 13:49:02 -0300 Subject: [PATCH 5/6] fix: simplify automatic extraction value initialization --- .../game-details/modals/download-settings-modal.tsx | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/renderer/src/pages/game-details/modals/download-settings-modal.tsx b/src/renderer/src/pages/game-details/modals/download-settings-modal.tsx index 9293071f..c0ea5df1 100644 --- a/src/renderer/src/pages/game-details/modals/download-settings-modal.tsx +++ b/src/renderer/src/pages/game-details/modals/download-settings-modal.tsx @@ -38,21 +38,13 @@ export function DownloadSettingsModal({ (state) => state.userPreferences.value ); - const getAutomaticExtractionValue = () => { - if (userPreferences?.extractFilesByDefault === undefined) { - window.electron.updateUserPreferences({ extractFilesByDefault: true }); - } - - return userPreferences?.extractFilesByDefault ?? true; - }; - const { showErrorToast } = useToast(); const [diskFreeSpace, setDiskFreeSpace] = useState(null); const [selectedPath, setSelectedPath] = useState(""); const [downloadStarting, setDownloadStarting] = useState(false); const [automaticExtractionEnabled, setAutomaticExtractionEnabled] = useState( - getAutomaticExtractionValue() + userPreferences?.extractFilesByDefault ?? true ); const [selectedDownloader, setSelectedDownloader] = useState(null); From 42d52aafacc4cf2b59a256b9cfa3cd3fa82fd01a Mon Sep 17 00:00:00 2001 From: Hachi-R Date: Sat, 26 Apr 2025 13:53:07 -0300 Subject: [PATCH 6/6] fix: remove redundant type --- src/types/level.types.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/types/level.types.ts b/src/types/level.types.ts index d5a2d934..764998af 100644 --- a/src/types/level.types.ts +++ b/src/types/level.types.ts @@ -88,7 +88,7 @@ export interface UserPreferences { achievementNotificationsEnabled?: boolean; friendRequestNotificationsEnabled?: boolean; showDownloadSpeedInMegabytes?: boolean; - extractFilesByDefault?: boolean | undefined; + extractFilesByDefault?: boolean; } export interface ScreenState {