import { Button } from "@/components/ui/button" import ErrorBanner from "@/components/ui/error-banner" import { Form } from "@/components/ui/form" import _ from "@/lib/translate" import { BankTransactionRule } from "@/types/Accounts/BankTransactionRule" import { FrappeError, useFrappeGetDoc, useFrappeUpdateDoc } from "frappe-react-sdk" import { toast } from "sonner" import { RuleForm } from "./RuleForm" import { useForm } from "react-hook-form" import { Skeleton } from "@/components/ui/skeleton" import { SettingsPanelContent, SettingsPanelDescription, SettingsPanelHeader, SettingsPanelTitle } from "@/components/ui/settings-dialog" import { useHotkeys } from "react-hotkeys-hook" type Props = { onClose: VoidFunction, ruleID: string } const EditRule = ({ onClose, ruleID }: Props) => { const { data: rule, isValidating, error, mutate } = useFrappeGetDoc("Bank Transaction Rule", ruleID, undefined, { revalidateOnMount: true }) const { updateDoc, loading, error: updateError } = useFrappeUpdateDoc() const onSubmit = (data: BankTransactionRule) => { updateDoc("Bank Transaction Rule", ruleID, data) .then(() => { toast.success(_("Rule updated.")) mutate() onClose() }) } return <> } > {rule?.rule_name} {_("Edit this rule")} {isValidating &&
} {error &&
} {rule && }
} const EditRuleForm = ({ rule, onSubmit, error }: { rule: BankTransactionRule, onSubmit: (data: BankTransactionRule) => void, error?: FrappeError | null }) => { const form = useForm({ defaultValues: { ...rule, } }) useHotkeys('meta+s', () => { form.handleSubmit(onSubmit)() }, { enabled: true, preventDefault: true, enableOnFormTags: true }) return (
{error && }
) } export default EditRule