mirror of
https://gh.catmak.name/https://github.com/mihomo-party-org/mihomo-party
synced 2025-12-26 20:50:30 +08:00
adjust
This commit is contained in:
parent
6d1fe87fe2
commit
ceb89d28c8
@ -17,31 +17,32 @@ import { calcTraffic } from '@renderer/utils/calc'
|
||||
import { getHash } from '@renderer/utils/hash'
|
||||
|
||||
const ProxyProvider: React.FC = () => {
|
||||
const [ShowProvider, setShowProvider] = useState(false)
|
||||
const [ShowPath, setShowPath] = useState('')
|
||||
const [ShowType, setShowType] = useState('')
|
||||
|
||||
const [showDetails, setShowDetails] = useState({
|
||||
show: false,
|
||||
path: '',
|
||||
type: '',
|
||||
title: ''
|
||||
})
|
||||
useEffect(() => {
|
||||
if (showDetails.title) {
|
||||
const fetchProviderPath = async (name: string): Promise<void> => {
|
||||
try {
|
||||
const providers = await getRuntimeConfig()
|
||||
const providers= await getRuntimeConfig()
|
||||
const provider = providers['proxy-providers'][name]
|
||||
console.log(provider)
|
||||
if (provider?.path) {
|
||||
setShowPath(provider.path)
|
||||
} else if (provider?.url) {
|
||||
setShowPath(`proxies/` + getHash(provider.url))
|
||||
if (provider) {
|
||||
setShowDetails((prev) => ({
|
||||
...prev,
|
||||
show: true,
|
||||
path: provider?.path || `proxies/${getHash(provider?.url)}`
|
||||
}))
|
||||
}
|
||||
setShowProvider(true)
|
||||
} catch (error) {
|
||||
setShowPath('')
|
||||
} catch {
|
||||
setShowDetails((prev) => ({ ...prev, path: '' }))
|
||||
}
|
||||
}
|
||||
|
||||
if (ShowPath != '') {
|
||||
fetchProviderPath(ShowPath)
|
||||
fetchProviderPath(showDetails.title)
|
||||
}
|
||||
}, [ShowProvider, ShowPath])
|
||||
}, [showDetails.title])
|
||||
|
||||
const { data, mutate } = useSWR('mihomoProxyProviders', mihomoProxyProviders)
|
||||
const providers = useMemo(() => {
|
||||
@ -79,15 +80,12 @@ const ProxyProvider: React.FC = () => {
|
||||
|
||||
return (
|
||||
<SettingCard>
|
||||
{ShowProvider && (
|
||||
{showDetails.show && (
|
||||
<Viewer
|
||||
onClose={() => {
|
||||
setShowProvider(false)
|
||||
setShowPath('')
|
||||
setShowType('')
|
||||
}}
|
||||
path={ShowPath}
|
||||
type={ShowType}
|
||||
path={showDetails.path}
|
||||
type={showDetails.type}
|
||||
title={showDetails.title}
|
||||
onClose={() => setShowDetails({ show: false, path: '', type: '', title: '' })}
|
||||
/>
|
||||
)}
|
||||
<SettingItem title="代理集合" divider>
|
||||
@ -125,8 +123,12 @@ const ProxyProvider: React.FC = () => {
|
||||
className="ml-2"
|
||||
size="sm"
|
||||
onPress={() => {
|
||||
setShowType(provider.vehicleType)
|
||||
setShowPath(provider.name)
|
||||
setShowDetails({
|
||||
show: false,
|
||||
path: provider.name,
|
||||
type: provider.vehicleType,
|
||||
title: provider.name
|
||||
})
|
||||
}}
|
||||
>
|
||||
{provider.vehicleType == 'File' ? (
|
||||
|
||||
@ -16,10 +16,33 @@ import { MdEditDocument } from 'react-icons/md'
|
||||
import dayjs from 'dayjs'
|
||||
|
||||
const RuleProvider: React.FC = () => {
|
||||
const [ShowProvider, setShowProvider] = useState(false)
|
||||
const [ShowPath, setShowPath] = useState('')
|
||||
const [ShowType, setShowType] = useState('')
|
||||
const [ShowFormat, setShowFormat] = useState('')
|
||||
const [showDetails, setShowDetails] = useState({
|
||||
show: false,
|
||||
path: '',
|
||||
type: '',
|
||||
title: '',
|
||||
format: ''
|
||||
})
|
||||
useEffect(() => {
|
||||
if (showDetails.title) {
|
||||
const fetchProviderPath = async (name: string): Promise<void> => {
|
||||
try {
|
||||
const providers= await getRuntimeConfig()
|
||||
const provider = providers['rule-providers'][name]
|
||||
if (provider) {
|
||||
setShowDetails((prev) => ({
|
||||
...prev,
|
||||
show: true,
|
||||
path: provider?.path || `rules/${getHash(provider?.url)}`
|
||||
}))
|
||||
}
|
||||
} catch {
|
||||
setShowDetails((prev) => ({ ...prev, path: '' }))
|
||||
}
|
||||
}
|
||||
fetchProviderPath(showDetails.title)
|
||||
}
|
||||
}, [showDetails.title])
|
||||
|
||||
const { data, mutate } = useSWR('mihomoRuleProviders', mihomoRuleProviders)
|
||||
const providers = useMemo(() => {
|
||||
@ -29,26 +52,6 @@ const RuleProvider: React.FC = () => {
|
||||
}, [data])
|
||||
const [updating, setUpdating] = useState(Array(providers.length).fill(false))
|
||||
|
||||
useEffect(() => {
|
||||
const fetchProviderPath = async (name: string): Promise<void> => {
|
||||
try {
|
||||
const providers = await getRuntimeConfig()
|
||||
const provider = providers['rule-providers'][name]
|
||||
if (provider?.path) {
|
||||
setShowPath(provider.path)
|
||||
} else if (provider?.url) {
|
||||
setShowPath(`rules/` + getHash(provider.url))
|
||||
}
|
||||
setShowProvider(true)
|
||||
} catch (error) {
|
||||
setShowPath('')
|
||||
}
|
||||
}
|
||||
if (ShowPath != '') {
|
||||
fetchProviderPath(ShowPath)
|
||||
}
|
||||
}, [ShowProvider, ShowPath])
|
||||
|
||||
const onUpdate = async (name: string, index: number): Promise<void> => {
|
||||
setUpdating((prev) => {
|
||||
prev[index] = true
|
||||
@ -73,16 +76,13 @@ const RuleProvider: React.FC = () => {
|
||||
|
||||
return (
|
||||
<SettingCard>
|
||||
{ShowProvider && (
|
||||
{showDetails.show && (
|
||||
<Viewer
|
||||
path={ShowPath}
|
||||
type={ShowType}
|
||||
format={ShowFormat}
|
||||
onClose={() => {
|
||||
setShowProvider(false)
|
||||
setShowPath('')
|
||||
setShowType('')
|
||||
}}
|
||||
path={showDetails.path}
|
||||
type={showDetails.type}
|
||||
title={showDetails.title}
|
||||
format={showDetails.format}
|
||||
onClose={() => setShowDetails({ show: false, path: '', type: '', title: '', format: '' })}
|
||||
/>
|
||||
)}
|
||||
<SettingItem title="规则集合" divider>
|
||||
@ -117,9 +117,13 @@ const RuleProvider: React.FC = () => {
|
||||
className="ml-2"
|
||||
size="sm"
|
||||
onPress={() => {
|
||||
setShowType(provider.vehicleType)
|
||||
setShowFormat(provider.format)
|
||||
setShowPath(provider.name)
|
||||
setShowDetails({
|
||||
show: false,
|
||||
path: provider.name,
|
||||
type: provider.vehicleType,
|
||||
title: provider.name,
|
||||
format: provider.format
|
||||
})
|
||||
}}
|
||||
>
|
||||
{provider.vehicleType == 'File' ? (
|
||||
|
||||
@ -8,10 +8,11 @@ interface Props {
|
||||
onClose: () => void
|
||||
path: string
|
||||
type: string
|
||||
title: string
|
||||
format?: string
|
||||
}
|
||||
const Viewer: React.FC<Props> = (props) => {
|
||||
const { type, path, format, onClose } = props
|
||||
const { type, path, title, format, onClose } = props
|
||||
const [currData, setCurrData] = useState('')
|
||||
const language: Language = !format || format === 'YamlRule' ? 'yaml' : 'text'
|
||||
|
||||
@ -34,7 +35,7 @@ const Viewer: React.FC<Props> = (props) => {
|
||||
scrollBehavior="inside"
|
||||
>
|
||||
<ModalContent className="h-full w-[calc(100%-100px)]">
|
||||
<ModalHeader className="flex pb-0 app-drag">Provider 内容</ModalHeader>
|
||||
<ModalHeader className="flex pb-0 app-drag">{title}</ModalHeader>
|
||||
<ModalBody className="h-full">
|
||||
<BaseEditor
|
||||
language={language}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user