diff --git a/app/src/api/mask.ts b/app/src/api/mask.ts index 2f26cce..2213b44 100644 --- a/app/src/api/mask.ts +++ b/app/src/api/mask.ts @@ -10,7 +10,12 @@ type ListMaskResponse = CommonResponse & { export async function listMasks(): Promise { try { const resp = await axios.get("/conversation/mask/view"); - return resp.data; + return ( + resp.data ?? { + status: true, + data: [], + } + ); } catch (e) { return { status: false, diff --git a/app/src/dialogs/MaskDialog.tsx b/app/src/dialogs/MaskDialog.tsx index 258c2f9..8bd0679 100644 --- a/app/src/dialogs/MaskDialog.tsx +++ b/app/src/dialogs/MaskDialog.tsx @@ -30,6 +30,7 @@ import { MousePointerSquareDashed, Pencil, Plus, + RotateCw, Search, Trash, } from "lucide-react"; @@ -557,6 +558,7 @@ function searchMasks(search: string, masks: Mask[]): Mask[] { function MaskSelector() { const { t } = useTranslation(); + const global = useDispatch(); const [search, setSearch] = useState(""); const custom_masks = useSelector(selectCustomMasks); @@ -570,6 +572,8 @@ function MaskSelector() { const [open, setOpen] = useState(false); const [selected, dispatch] = useReducer(reducer, { ...initialCustomMask }); + const [loading, setLoading] = useState(false); + const event = (e: any) => { dispatch(e); setOpen(true); @@ -583,25 +587,42 @@ function MaskSelector() { open={open} onOpenChange={setOpen} /> -
- - setSearch(e.target.value)} - placeholder={t("mask.search")} - className={`mx-2`} - /> +
+
+ +
+
+ setSearch(e.target.value)} + placeholder={t("mask.search")} + className={`mr-2`} + /> +
diff --git a/app/src/resources/i18n/cn.json b/app/src/resources/i18n/cn.json index 001ea3f..106f985 100644 --- a/app/src/resources/i18n/cn.json +++ b/app/src/resources/i18n/cn.json @@ -397,7 +397,7 @@ "dashboard": "仪表盘", "users": "后台管理", "user": "用户管理", - "broadcast": "公告通知", + "broadcast": "通知管理", "channel": "渠道设置", "settings": "系统设置", "prize": "价格设定",