import { Form, Input, Modal, Select, Tag } from "antd"; import React, { useEffect, useState } from "react"; import { useSelector } from "react-redux"; import { addSubscribe, getTargetName, updateSubscribe } from "src/api/config"; import { InputTag } from "src/component/inputTag"; import { platformConfSelector } from "src/store/globalConfSlice"; import { CategoryConfig, SubscribeConfig } from "src/utils/type"; interface InputTagCustomProp { value?: Array; onChange?: (value: Array) => void; disabled?: boolean; } function InputTagCustom(prop: InputTagCustomProp) { const [value, setValue] = useState(prop.value || []); const handleSetValue = (newVal: Array) => { setValue(() => newVal); if (prop.onChange) { prop.onChange(newVal); } }; useEffect(() => { if (prop.value) { setValue(prop.value); } }, [prop.value]); return ( <> {prop.disabled ? ( 不支持标签 ) : ( <> {value.length === 0 && 全部标签} )} ); } interface AddModalProp { showModal: boolean; groupNumber: string; setShowModal: (s: boolean) => void; refresh: () => void; initVal?: SubscribeConfig; } export function AddModal({ showModal, groupNumber, setShowModal, refresh, initVal, }: AddModalProp) { const [confirmLoading, setConfirmLoading] = useState(false); const platformConf = useSelector(platformConfSelector); const [hasTarget, setHasTarget] = useState(false); const [categories, setCategories] = useState({} as CategoryConfig); const [enabledTag, setEnableTag] = useState(false); const [form] = Form.useForm(); const [inited, setInited] = useState(false); const changePlatformSelect = (platform: string) => { setHasTarget((_) => platformConf[platform].hasTarget); setCategories((_) => platformConf[platform].categories); setEnableTag(platformConf[platform].enabledTag); if (!platformConf[platform].hasTarget) { getTargetName(platform, "default").then((res) => { console.log(res); form.setFieldsValue({ targetName: res.targetName, target: "", }); }); } else { form.setFieldsValue({ targetName: "", target: "", }); } }; const handleSubmit = (value: any) => { let newVal = Object.assign({}, value); if (typeof newVal.tags !== "object") { newVal.tags = []; } if (typeof newVal.cats !== "object") { newVal.cats = []; } if (newVal.target === "") { newVal.target = "default"; } if (initVal) { // patch updateSubscribe(groupNumber, newVal).then(() => { setConfirmLoading(false); setShowModal(false); form.resetFields(); refresh(); }); } else { addSubscribe(groupNumber, newVal).then(() => { setConfirmLoading(false); setShowModal(false); form.resetFields(); refresh(); }); } }; const handleModleFinish = () => { form.submit(); setConfirmLoading(() => true); }; useEffect(() => { if (initVal && !inited) { const platformName = initVal.platformName; setHasTarget(platformConf[platformName].hasTarget); setCategories(platformConf[platformName].categories); setEnableTag(platformConf[platformName].enabledTag); setInited(true); form.setFieldsValue(initVal); } }, [initVal, form, platformConf, inited]); return ( setShowModal(false)} onOk={handleModleFinish} >
{ try { const res = await getTargetName( form.getFieldValue("platformName"), value ); if (res.targetName) { form.setFieldsValue({ targetName: res.targetName, }); return Promise.resolve(); } else { form.setFieldsValue({ targetName: "", }); return Promise.reject("账号不正确,请重新检查账号"); } } catch { return Promise.reject("服务器错误,请稍后再试"); } }, }, ]} > 0, message: "请至少选择一个分类进行订阅", }, ]} >
); }