import { Input, Button, Divider, Switch, Option, Select } from "@mui/joy"; import { useEffect, useState } from "react"; import { toast } from "react-hot-toast"; import { getMyselfUser } from "@/helpers/api"; import React from "react"; import { useTranslation } from "react-i18next"; import { useGlobalStore, useUserStore } from "@/store/module"; import { VISIBILITY_SELECTOR_ITEMS } from "@/helpers/consts"; import AppearanceSelect from "../AppearanceSelect"; import LocaleSelect from "../LocaleSelect"; import "@/less/settings/preferences-section.less"; const PreferencesSection = () => { const { t } = useTranslation(); const globalStore = useGlobalStore(); const userStore = useUserStore(); const { appearance, locale } = globalStore.state; const { setting, localSetting } = userStore.state.user as User; const [telegramUserId, setTelegramUserId] = useState(""); const visibilitySelectorItems = VISIBILITY_SELECTOR_ITEMS.map((item) => { return { value: item.value, text: t(`memo.visibility.${item.text.toLowerCase()}`), }; }); useEffect(() => { getMyselfUser().then( ({ data: { data: { userSettingList: userSettingList }, }, }) => { const telegramUserIdSetting = userSettingList.find((setting: any) => setting.key === "telegram-user-id"); if (telegramUserIdSetting) { setTelegramUserId(JSON.parse(telegramUserIdSetting.value)); } } ); }, []); const dailyReviewTimeOffsetOptions: number[] = [...Array(24).keys()]; const handleLocaleSelectChange = async (locale: Locale) => { await userStore.upsertUserSetting("locale", locale); globalStore.setLocale(locale); }; const handleAppearanceSelectChange = async (appearance: Appearance) => { await userStore.upsertUserSetting("appearance", appearance); globalStore.setAppearance(appearance); }; const handleDefaultMemoVisibilityChanged = async (value: string) => { await userStore.upsertUserSetting("memo-visibility", value); }; const handleDoubleClickEnabledChanged = (event: React.ChangeEvent) => { userStore.upsertLocalSetting({ ...localSetting, enableDoubleClickEditing: event.target.checked }); }; const handleDailyReviewTimeOffsetChanged = (value: number) => { userStore.upsertLocalSetting({ ...localSetting, dailyReviewTimeOffset: value }); }; //enableAutoCollapse const handleAutoCollapseChanged = (event: React.ChangeEvent) => { userStore.upsertLocalSetting({ ...localSetting, enableAutoCollapse: event.target.checked }); }; const handleSaveTelegramUserId = async () => { try { await userStore.upsertUserSetting("telegram-user-id", telegramUserId); toast.success(t("common.dialog.success")); } catch (error: any) { console.error(error); toast.error(error.response.data.message); return; } }; const handleTelegramUserIdChanged = async (value: string) => { setTelegramUserId(value); }; return (

{t("common.basic")}

{t("common.language")}
{t("setting.preference-section.theme")}

{t("setting.preference")}

{t("setting.preference-section.default-memo-visibility")}
{t("setting.preference-section.daily-review-time-offset")}
{t("setting.preference-section.telegram-user-id")}
handleTelegramUserIdChanged(event.target.value)} placeholder={t("setting.preference-section.telegram-user-id-placeholder")} />
); }; export default PreferencesSection;