diff --git a/src/renderer/src/components/override/override-item.tsx b/src/renderer/src/components/override/override-item.tsx index 9b702cf0..83fdedc6 100644 --- a/src/renderer/src/components/override/override-item.tsx +++ b/src/renderer/src/components/override/override-item.tsx @@ -6,7 +6,8 @@ import { Dropdown, DropdownItem, DropdownMenu, - DropdownTrigger + DropdownTrigger, + Switch } from '@heroui/react' import { toast } from '@renderer/components/base/toast' import { IoMdMore, IoMdRefresh } from 'react-icons/io' @@ -41,6 +42,7 @@ const OverrideItem: React.FC = (props) => { const { info, addOverrideItem, removeOverrideItem, mutateOverrideConfig, updateOverrideItem } = props const [updating, setUpdating] = useState(false) + const [savingGlobal, setSavingGlobal] = useState(false) const [openInfoEditor, setOpenInfoEditor] = useState(false) const [openFileEditor, setOpenFileEditor] = useState(false) const [openLog, setOpenLog] = useState(false) @@ -131,6 +133,22 @@ const OverrideItem: React.FC = (props) => { setDropdownOpen(true) } + const stopCardInteraction = (e: React.SyntheticEvent): void => { + e.stopPropagation() + } + + const handleGlobalChange = async (global: boolean): Promise => { + setSavingGlobal(true) + try { + await updateOverrideItem({ ...info, global }) + await mihomoHotReloadConfig() + } catch (e) { + toast.error(String(e)) + } finally { + setSavingGlobal(false) + } + } + return (
= (props) => { className="cursor-pointer" onContextMenu={handleContextMenu} onDoubleClick={(e) => { - if ((e.target as Element)?.closest('button, [role="menu"], [role="menuitem"]')) { + if ( + (e.target as Element)?.closest( + '[data-interactive="true"], button, [role="menu"], [role="menuitem"]' + ) + ) { return } setOpenFileEditor(true) @@ -184,7 +206,7 @@ const OverrideItem: React.FC = (props) => { size="sm" variant="light" color="default" - disabled={updating} + disabled={updating || savingGlobal} onPress={async () => { setUpdating(true) try { @@ -225,22 +247,31 @@ const OverrideItem: React.FC = (props) => {
-
-
- {info.global && ( - - {t('override.labels.global')} - - )} +
+
{info.ext === 'yaml' ? 'YAML' : 'JavaScript'}
- {info.type === 'remote' && ( -
- {dayjs(info.updated).fromNow()} +
+ {info.type === 'remote' && {dayjs(info.updated).fromNow()}} +
+ {t('override.editInfo.global')} +
- )} +