import { observer } from "mobx-react-lite"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { Separator } from "@/components/ui/separator"; import { userStore, workspaceStore } from "@/store"; import { Visibility } from "@/types/proto/api/v1/memo_service"; import { UserSetting_GeneralSetting } from "@/types/proto/api/v1/user_service"; import { useTranslate } from "@/utils/i18n"; import { convertVisibilityFromString, convertVisibilityToString } from "@/utils/memo"; import LocaleSelect from "../LocaleSelect"; import ThemeSelect from "../ThemeSelect"; import VisibilityIcon from "../VisibilityIcon"; import WebhookSection from "./WebhookSection"; const PreferencesSection = observer(() => { const t = useTranslate(); const generalSetting = userStore.state.userGeneralSetting; const handleLocaleSelectChange = async (locale: Locale) => { // Update workspace store immediately for instant UI feedback workspaceStore.state.setPartial({ locale }); // Persist to user settings await userStore.updateUserGeneralSetting({ locale }, ["locale"]); }; const handleDefaultMemoVisibilityChanged = async (value: string) => { await userStore.updateUserGeneralSetting({ memoVisibility: value }, ["memoVisibility"]); }; const handleThemeChange = async (theme: string) => { await userStore.updateUserGeneralSetting({ theme }, ["theme"]); }; // Provide default values if setting is not loaded yet const setting: UserSetting_GeneralSetting = generalSetting || { locale: "en", memoVisibility: "PRIVATE", theme: "default", }; return (
{t("common.basic")}
{t("setting.preference")}