import { useState } from "react" import { useTranslation } from "react-i18next" import { toast } from "sonner" import { Button } from "@/components/ui/button" import { useAppStore } from "@/store" import { openSettingsConfigFile, openSettingsLogFile, } from "./side-effect-utils" import { SettingsLogDialog } from "./settings-dialog-log" import { SettingsRow } from "./settings-row" import { defaultSettingsConfig } from "./utils" interface SettingsSectionAdvancedProps { isItemVisible: (itemId: string) => boolean isAnyItemVisible: (itemIds: string[]) => boolean onNavigateUrlRewrite: () => void } function resolveErrorMessage(error: unknown, fallback: string) { if (error instanceof Error && error.message.trim().length > 0) { return error.message } return fallback } export function SettingsSectionAdvanced({ isItemVisible, isAnyItemVisible, onNavigateUrlRewrite, }: SettingsSectionAdvancedProps) { const { t } = useTranslation() const appConfig = useAppStore.use.appConfig() const settingsConfig = appConfig?.settings ?? defaultSettingsConfig const [isLogDialogOpen, setLogDialogOpen] = useState(false) const [logLevelDraft, setLogLevelDraft] = useState(settingsConfig.logLevel) const [logSizeDraft, setLogSizeDraft] = useState(String(settingsConfig.logFileSizeLimit)) const handleOpenConfigFile = async () => { try { const filePath = await openSettingsConfigFile() toast.success(`${t("SETTINGS_OPEN_CONFIG_FILE")}: ${filePath}`) } catch (error) { toast.error(resolveErrorMessage(error, t("FAILED"))) } } const handleOpenLogFile = async () => { try { const filePath = await openSettingsLogFile() toast.success(`${t("SETTINGS_LOG_FILE")}: ${filePath}`) } catch (error) { toast.error(resolveErrorMessage(error, t("FAILED"))) } } return ( <>
) }