use thunk to get targetName

This commit is contained in:
felinae98 2022-10-09 21:09:17 +08:00
parent af002ad3e5
commit 8db0ed3fe1
No known key found for this signature in database
GPG Key ID: 00C8B010587FF610
2 changed files with 21 additions and 16 deletions

View File

@ -4,7 +4,7 @@ import {
} from '@arco-design/web-react'; } from '@arco-design/web-react';
import useForm from '@arco-design/web-react/es/Form/useForm'; import useForm from '@arco-design/web-react/es/Form/useForm';
import { IconInfoCircle } from '@arco-design/web-react/icon'; import { IconInfoCircle } from '@arco-design/web-react/icon';
import { useAppSelector } from '../../app/hooks'; import { useAppDispatch, useAppSelector } from '../../app/hooks';
import { selectPlatformConf } from '../globalConf/globalConfSlice'; import { selectPlatformConf } from '../globalConf/globalConfSlice';
import { CategoryConfig, SubscribeConfig } from '../../utils/type'; import { CategoryConfig, SubscribeConfig } from '../../utils/type';
import getTargetName from '../targetName/targetNameReq'; import getTargetName from '../targetName/targetNameReq';
@ -67,6 +67,7 @@ function SubscribeModal({
const platformConf = useAppSelector(selectPlatformConf); const platformConf = useAppSelector(selectPlatformConf);
const [updateSub] = useUpdateSubMutation(); const [updateSub] = useUpdateSubMutation();
const [newSub] = useNewSubMutation(); const [newSub] = useNewSubMutation();
const dispatch = useAppDispatch();
const onSubmit = () => { const onSubmit = () => {
form.validate().then((value: SubscribeConfig) => { form.validate().then((value: SubscribeConfig) => {
@ -115,7 +116,7 @@ function SubscribeModal({
setPlatformStates(platform); setPlatformStates(platform);
form.setFieldValue('cats', []); form.setFieldValue('cats', []);
if (!platformConf[platform].hasTarget) { if (!platformConf[platform].hasTarget) {
getTargetName(platform, 'default').then((res) => { dispatch(getTargetName(platform, 'default')).then((res) => {
form.setFieldsValue({ form.setFieldsValue({
targetName: res, targetName: res,
target: '', target: '',
@ -168,7 +169,7 @@ function SubscribeModal({
{ required: hasTarget, message: '请输入账号' }, { required: hasTarget, message: '请输入账号' },
{ {
validator: (value, callback) => new Promise<void>((resolve) => { validator: (value, callback) => new Promise<void>((resolve) => {
getTargetName(form.getFieldValue('platformName'), value) dispatch(getTargetName(form.getFieldValue('platformName'), value))
.then((res) => { .then((res) => {
if (res) { if (res) {
form.setFieldsValue({ form.setFieldsValue({

View File

@ -1,9 +1,11 @@
import { RootState, store } from '../../app/store'; import { AppThunk } from '../../app/store';
import { baseUrl } from '../../utils/urls'; import { baseUrl } from '../../utils/urls';
export default async function getTargetName(platformName: string, target: string) { // eslint-disable-next-line
export const getTargetName =
(platformName: string, target: string): AppThunk<Promise<string>> => async (_, getState) => {
const url = `${baseUrl}target_name?platformName=${platformName}&target=${target}`; const url = `${baseUrl}target_name?platformName=${platformName}&target=${target}`;
const state = store.getState() as RootState; const state = getState();
const authToken = state.auth.token; const authToken = state.auth.token;
const res = await fetch(url, { const res = await fetch(url, {
headers: { headers: {
@ -12,4 +14,6 @@ export default async function getTargetName(platformName: string, target: string
}); });
const resObj = await res.json(); const resObj = await res.json();
return resObj.targetName as string; return resObj.targetName as string;
} };
export default getTargetName;