mirror of
https://github.com/hydralauncher/hydra.git
synced 2025-03-09 15:40:26 +00:00
115 lines
3.3 KiB
TypeScript
115 lines
3.3 KiB
TypeScript
import { useContext, useEffect, useState } from "react";
|
|
import { useTranslation } from "react-i18next";
|
|
|
|
import { CheckboxField } from "@renderer/components";
|
|
import { useAppSelector } from "@renderer/hooks";
|
|
import { settingsContext } from "@renderer/context";
|
|
|
|
export function SettingsBehavior() {
|
|
const userPreferences = useAppSelector(
|
|
(state) => state.userPreferences.value
|
|
);
|
|
|
|
const [showRunAtStartup, setShowRunAtStartup] = useState(false);
|
|
|
|
const { updateUserPreferences } = useContext(settingsContext);
|
|
|
|
const [form, setForm] = useState({
|
|
preferQuitInsteadOfHiding: false,
|
|
runAtStartup: false,
|
|
startMinimized: false,
|
|
disableNsfwAlert: false,
|
|
showHiddenAchievementsDescription: false,
|
|
});
|
|
|
|
const { t } = useTranslation("settings");
|
|
|
|
useEffect(() => {
|
|
if (userPreferences) {
|
|
setForm({
|
|
preferQuitInsteadOfHiding: userPreferences.preferQuitInsteadOfHiding,
|
|
runAtStartup: userPreferences.runAtStartup,
|
|
startMinimized: userPreferences.startMinimized,
|
|
disableNsfwAlert: userPreferences.disableNsfwAlert,
|
|
showHiddenAchievementsDescription:
|
|
userPreferences.showHiddenAchievementsDescription,
|
|
});
|
|
}
|
|
}, [userPreferences]);
|
|
|
|
useEffect(() => {
|
|
window.electron.isPortableVersion().then((isPortableVersion) => {
|
|
setShowRunAtStartup(!isPortableVersion);
|
|
});
|
|
}, []);
|
|
|
|
const handleChange = (values: Partial<typeof form>) => {
|
|
setForm((prev) => ({ ...prev, ...values }));
|
|
updateUserPreferences(values);
|
|
};
|
|
|
|
return (
|
|
<>
|
|
<CheckboxField
|
|
label={t("quit_app_instead_hiding")}
|
|
checked={form.preferQuitInsteadOfHiding}
|
|
onChange={() =>
|
|
handleChange({
|
|
preferQuitInsteadOfHiding: !form.preferQuitInsteadOfHiding,
|
|
})
|
|
}
|
|
/>
|
|
|
|
{showRunAtStartup && (
|
|
<CheckboxField
|
|
label={t("launch_with_system")}
|
|
onChange={() => {
|
|
handleChange({ runAtStartup: !form.runAtStartup });
|
|
window.electron.autoLaunch({
|
|
enabled: !form.runAtStartup,
|
|
minimized: form.startMinimized,
|
|
});
|
|
}}
|
|
checked={form.runAtStartup}
|
|
/>
|
|
)}
|
|
|
|
{showRunAtStartup && (
|
|
<div style={{ opacity: form.runAtStartup ? 1 : 0.5 }}>
|
|
<CheckboxField
|
|
label={t("launch_minimized")}
|
|
style={{ cursor: form.runAtStartup ? "pointer" : "not-allowed" }}
|
|
checked={form.runAtStartup && form.startMinimized}
|
|
disabled={!form.runAtStartup}
|
|
onChange={() => {
|
|
handleChange({ startMinimized: !form.startMinimized });
|
|
window.electron.autoLaunch({
|
|
minimized: !form.startMinimized,
|
|
enabled: form.runAtStartup,
|
|
});
|
|
}}
|
|
/>
|
|
</div>
|
|
)}
|
|
|
|
<CheckboxField
|
|
label={t("disable_nsfw_alert")}
|
|
checked={form.disableNsfwAlert}
|
|
onChange={() =>
|
|
handleChange({ disableNsfwAlert: !form.disableNsfwAlert })
|
|
}
|
|
/>
|
|
|
|
<CheckboxField
|
|
label={t("show_hidden_achievement_description")}
|
|
checked={form.showHiddenAchievementsDescription}
|
|
onChange={() =>
|
|
handleChange({
|
|
showHiddenAchievementsDescription:
|
|
!form.showHiddenAchievementsDescription,
|
|
})
|
|
}
|
|
/>
|
|
</>
|
|
);
|
|
}
|