import { zodResolver } from "@hookform/resolvers/zod"; import { useFieldArray, useForm } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { schema } from "./schema"; import { RuleItem } from "./rule-item"; import { HStack, Button, Form, Sortable, ScrollArea, FormLabel, Separator, Awaiting, } from "@marzneshin/components"; import { Schema } from "./schema" import { Overlay } from "./overlay" import { TemplateOnAcceptanceField, ProfileTitleField, SupportLinkField, UpdateIntervalField, PlaceholderRemarkField, PlaceholderIfDisabledField, ShuffleConfigsField } from "./fields"; import { NoRulesAlert } from "./no-rules-alert"; import { useSubscriptionSettingsQuery, useSubscriptionSettingsMutation, } from "@marzneshin/features/subscription-settings"; import { useEffect, useCallback } from "react"; export function SubscriptionRulesForm() { const { t } = useTranslation() const { data, isFetching } = useSubscriptionSettingsQuery() const subscriptionSettings = useSubscriptionSettingsMutation() const form = useForm({ resolver: zodResolver(schema), defaultValues: data, }) const handleResetLocalChanges = useCallback( () => { form.reset(data) }, [form, data], ) const handleSubscriptionRulesDataUpdate = useCallback( () => { form.reset(data, { keepDirtyValues: true }) }, [form, data], ) useEffect(() => { if (data) { handleSubscriptionRulesDataUpdate() } }, [data, handleSubscriptionRulesDataUpdate]) const onSubmit = (data: Schema) => { subscriptionSettings.mutate(data) } const { fields, append, move, remove } = useFieldArray({ control: form.control, name: "rules" }) return (

{t("page.settings.subscription-settings.subscription-title")}

{t("page.settings.subscription-settings.subscription-desc")}

} isNotFound={fields.length === 0} NotFound={} Component={
move(activeIndex, overIndex) } >
{t("pattern")} {t("result")}
{fields.map((field, index) => ( ))}
} /> ) }