diff --git a/app/lib/api-streamer.ts b/app/lib/api-streamer.ts index ca695d1..305b2f0 100644 --- a/app/lib/api-streamer.ts +++ b/app/lib/api-streamer.ts @@ -88,6 +88,7 @@ export interface StudioEntity { open_elec: number; credits: Credit[]; uploader: string; + extra_fields?: string; } export interface LiveStreamerEntity { diff --git a/app/ui/TemplateFields.tsx b/app/ui/TemplateFields.tsx index 0b4282c..b7a5b47 100644 --- a/app/ui/TemplateFields.tsx +++ b/app/ui/TemplateFields.tsx @@ -1,4 +1,4 @@ -import React, { useState, useMemo, useEffect } from 'react' +import React, { useState, useMemo, useEffect, useCallback } from 'react' import { FormFCChild } from '@douyinfe/semi-ui/lib/es/form' import { IconChevronDown, @@ -18,6 +18,8 @@ import { Notification, ScrollList, ScrollItem, + // TextArea, + useFormState, } from '@douyinfe/semi-ui' import useSWR from 'swr' import { BiliType, fetcher, StudioEntity } from '../lib/api-streamer' @@ -181,7 +183,36 @@ const TemplateFields: React.FC> setSelectedMinutes(Math.floor(minutes / 5) * 5) } } - }, [formApi]) + }, [formApi]); + + // useEffect(() => { + // const extraFieldsList = formApi.getValue('extra_fields_list') as Array<{key: string; value: string}>; + // if (!extraFieldsList?.length) return; + + // const extraFieldsObj = extraFieldsList.reduce((tempObj: Record, item) => { + // if (item?.key && item?.value !== undefined) { + // tempObj[item.key] = !isNaN(Number(item.value)) ? Number(item.value) : item.value; + // } + // return tempObj; + // }, {}); + // formApi.setValue('extra_fields', JSON.stringify(extraFieldsObj)); + // }, []); + + // useEffect(() => { + // const extraFields = formApi.getValue('extra_fields'); + // if (extraFields) { + // try { + // const parsedFields = JSON.parse(extraFields); + // const fieldsList = Object.entries(parsedFields).map(([key, value]) => ({ + // key, + // value: String(value) + // })); + // formApi.setValue('extra_fields_list', fieldsList); + // } catch (e) { + // console.error('解析 extra_fields 失败:', e); + // } + // } + // }, []); return ( <> @@ -290,6 +321,91 @@ const TemplateFields: React.FC> maxCount={2000} showClear /> +