diff --git a/src/main/core/factory.ts b/src/main/core/factory.ts index 6d13917..5efa3ae 100644 --- a/src/main/core/factory.ts +++ b/src/main/core/factory.ts @@ -31,9 +31,20 @@ async function overrideProfile( case 'js': profile = runOverrideScript(profile, content) break - case 'yaml': - profile = deepMerge(profile, yaml.parse(content)) + case 'yaml': { + const patch = yaml.parse(content) + if (patch.rules) { + patch.rules = [...patch.rules, ...(profile.rules || [])] + } + if (patch.proxies) { + patch.proxies = [...patch.proxies, ...(profile.proxies || [])] + } + if (patch['proxy-groups']) { + patch['proxy-groups'] = [...patch['proxy-groups'], ...(profile['proxy-groups'] || [])] + } + profile = deepMerge(profile, patch) break + } } } return profile diff --git a/src/renderer/src/components/override/edit-file-modal.tsx b/src/renderer/src/components/override/edit-file-modal.tsx index 3bf7234..5e9d971 100644 --- a/src/renderer/src/components/override/edit-file-modal.tsx +++ b/src/renderer/src/components/override/edit-file-modal.tsx @@ -1,7 +1,7 @@ import { Modal, ModalContent, ModalHeader, ModalBody, ModalFooter, Button } from '@nextui-org/react' import React, { useEffect, useState } from 'react' import { BaseEditor } from '../base/base-editor' -import { getOverride, setOverride } from '@renderer/utils/ipc' +import { getOverride, restartCore, setOverride } from '@renderer/utils/ipc' interface Props { id: string language: 'javascript' | 'yaml' @@ -47,6 +47,7 @@ const EditFileModal: React.FC = (props) => { color="primary" onPress={async () => { await setOverride(id, language === 'javascript' ? 'js' : 'yaml', currData) + await restartCore() onClose() }} > diff --git a/src/renderer/src/components/profiles/edit-info-modal.tsx b/src/renderer/src/components/profiles/edit-info-modal.tsx index a6b93da..245dbbc 100644 --- a/src/renderer/src/components/profiles/edit-info-modal.tsx +++ b/src/renderer/src/components/profiles/edit-info-modal.tsx @@ -14,6 +14,7 @@ import React, { useState } from 'react' import SettingItem from '../base/base-setting-item' import dayjs from 'dayjs' import { useOverrideConfig } from '@renderer/hooks/use-override-config' +import { restartCore } from '@renderer/utils/ipc' interface Props { item: IProfileItem updateProfileItem: (item: IProfileItem) => Promise @@ -27,6 +28,7 @@ const EditInfoModal: React.FC = (props) => { const onSave = async (): Promise => { await updateProfileItem(values) + await restartCore() onClose() }