From cb8e162f4ea57af3b6ed25ee028d607e7142b8b5 Mon Sep 17 00:00:00 2001 From: GyDi <segydi@foxmail.com> Date: Wed, 6 Apr 2022 01:13:06 +0800 Subject: [PATCH] refactor: update profile menu --- src/components/profile/enhanced.tsx | 35 ++++++++++++++++++++++--- src/components/profile/profile-more.tsx | 11 ++++---- 2 files changed, 38 insertions(+), 8 deletions(-) diff --git a/src/components/profile/enhanced.tsx b/src/components/profile/enhanced.tsx index 430e7c8..dc603c3 100644 --- a/src/components/profile/enhanced.tsx +++ b/src/components/profile/enhanced.tsx @@ -1,6 +1,7 @@ import useSWR from "swr"; import { useLockFn } from "ahooks"; -import { Box, Grid } from "@mui/material"; +import { Box, Grid, IconButton, Stack } from "@mui/material"; +import { RestartAltRounded } from "@mui/icons-material"; import { getProfiles, deleteProfile, @@ -22,7 +23,14 @@ const EnhancedMode = (props: Props) => { const { mutate } = useSWR("getProfiles", getProfiles); // handler - const onEnhance = useLockFn(enhanceProfiles); + const onEnhance = useLockFn(async () => { + try { + await enhanceProfiles(); + Notice.success("Refresh clash config", 2000); + } catch (err: any) { + Notice.error(err.message || err.toString()); + } + }); const onEnhanceEnable = useLockFn(async (uid: string) => { if (chain.includes(uid)) return; @@ -68,18 +76,39 @@ const EnhancedMode = (props: Props) => { return ( <Box sx={{ mt: 4 }}> + <Stack + spacing={1} + direction="row" + alignItems="center" + justifyContent="flex-end" + sx={{ mb: 0.5 }} + > + <IconButton + size="small" + color="inherit" + title="refresh enhanced profiles" + onClick={onEnhance} + > + <RestartAltRounded /> + </IconButton> + + {/* <IconButton size="small" color="inherit"> + <MenuRounded /> + </IconButton> */} + </Stack> + <Grid container spacing={2}> {items.map((item) => ( <Grid item xs={12} sm={6} key={item.file}> <ProfileMore selected={!!chain.includes(item.uid)} itemData={item} + enableNum={chain.length} onEnable={() => onEnhanceEnable(item.uid)} onDisable={() => onEnhanceDisable(item.uid)} onDelete={() => onEnhanceDelete(item.uid)} onMoveTop={() => onMoveTop(item.uid)} onMoveEnd={() => onMoveEnd(item.uid)} - onEnhance={onEnhance} /> </Grid> ))} diff --git a/src/components/profile/profile-more.tsx b/src/components/profile/profile-more.tsx index ed14028..2ead76a 100644 --- a/src/components/profile/profile-more.tsx +++ b/src/components/profile/profile-more.tsx @@ -35,12 +35,12 @@ const OS = getSystem(); interface Props { selected: boolean; itemData: CmdType.ProfileItem; + enableNum: number; onEnable: () => void; onDisable: () => void; onMoveTop: () => void; onMoveEnd: () => void; onDelete: () => void; - onEnhance: () => void; } // profile enhanced item @@ -48,12 +48,12 @@ const ProfileMore = (props: Props) => { const { selected, itemData, + enableNum, onEnable, onDisable, onMoveTop, onMoveEnd, onDelete, - onEnhance, } = props; const { uid, type } = itemData; @@ -95,14 +95,15 @@ const ProfileMore = (props: Props) => { return fn(); }; + const showMove = enableNum > 1 && !hasError; + const enableMenu = [ { label: "Disable", handler: fnWrapper(onDisable) }, - { label: "Refresh", handler: fnWrapper(onEnhance) }, { label: "Edit Info", handler: onEditInfo }, { label: "Edit File", handler: onEditFile }, { label: "Open File", handler: onOpenFile }, - { label: "To Top", show: !hasError, handler: fnWrapper(onMoveTop) }, - { label: "To End", show: !hasError, handler: fnWrapper(onMoveEnd) }, + { label: "To Top", show: showMove, handler: fnWrapper(onMoveTop) }, + { label: "To End", show: showMove, handler: fnWrapper(onMoveEnd) }, { label: "Delete", handler: fnWrapper(onDelete) }, ]; -- GitLab