diff --git a/admin-frontend/package.json b/admin-frontend/package.json index dd0e164..dddd2ee 100644 --- a/admin-frontend/package.json +++ b/admin-frontend/package.json @@ -3,7 +3,7 @@ "version": "0.1.0", "private": true, "homepage": "bison", - "proxy": "http://localhost:8080", + "proxy": "http://127.0.0.1:8080", "dependencies": { "@ant-design/icons": "^4.6.4", "@testing-library/jest-dom": "^5.11.4", diff --git a/admin-frontend/src/api/config.ts b/admin-frontend/src/api/config.ts index ea88904..3286f74 100644 --- a/admin-frontend/src/api/config.ts +++ b/admin-frontend/src/api/config.ts @@ -31,3 +31,8 @@ export async function delSubscribe(groupNumber: string, platformName: string, ta const res = await axios.delete(`${baseUrl}subs`, {params: {groupNumber, platformName, target}}); return res.data; } + +export async function updateSubscribe(groupNumber: string, req: SubscribeConfig) { + return axios.patch(`${baseUrl}subs`, req, {params: {groupNumber}}) + .then(res => res.data); +} diff --git a/admin-frontend/src/pages/admin/configPage/AddSubsModal.tsx b/admin-frontend/src/component/addSubsModal.tsx similarity index 74% rename from admin-frontend/src/pages/admin/configPage/AddSubsModal.tsx rename to admin-frontend/src/component/addSubsModal.tsx index 22f70cf..a1238d8 100644 --- a/admin-frontend/src/pages/admin/configPage/AddSubsModal.tsx +++ b/admin-frontend/src/component/addSubsModal.tsx @@ -1,9 +1,9 @@ -import { Form, Input, Modal, Select, Tag } from 'antd'; -import React, { useContext, useState } from "react"; -import { addSubscribe, getTargetName } from 'src/api/config'; -import { InputTag } from 'src/component/inputTag'; -import { GlobalConfContext } from "src/utils/context"; -import { CategoryConfig } from 'src/utils/type'; +import {Form, Input, Modal, Select, Tag} from 'antd'; +import React, {useContext, useEffect, useState} from "react"; +import {addSubscribe, getTargetName, updateSubscribe} from 'src/api/config'; +import {InputTag} from 'src/component/inputTag'; +import {GlobalConfContext} from "src/utils/context"; +import {CategoryConfig, SubscribeConfig} from 'src/utils/type'; interface InputTagCustomProp { value?: Array, @@ -18,6 +18,11 @@ function InputTagCustom(prop: InputTagCustomProp) { prop.onChange(newVal); } } + useEffect(() => { + if (prop.value) { + setValue(prop.value); + } + }, [prop.value]) return ( <> { @@ -38,14 +43,18 @@ interface AddModalProp { groupNumber: string, setShowModal: (s: boolean) => void, refresh: () => void + initVal?: SubscribeConfig } -export function AddModal(prop: AddModalProp) { +export function AddModal({ + showModal, groupNumber, setShowModal, refresh, initVal +}: AddModalProp) { const [ confirmLoading, setConfirmLoading ] = useState(false); const { platformConf } = useContext(GlobalConfContext); 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); @@ -74,23 +83,42 @@ export function AddModal(prop: AddModalProp) { if (newVal.target === '') { newVal.target = 'default' } - addSubscribe(prop.groupNumber, newVal) - .then(() => { - setConfirmLoading(false); - prop.setShowModal(false); - prop.refresh(); - }); + 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); } - - return prop.setShowModal(false)} + 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}> -
+