fix any crash error

This commit is contained in:
pompurin404 2024-08-14 23:09:35 +08:00
parent 9be6617294
commit 0394548f91
No known key found for this signature in database
5 changed files with 23 additions and 18 deletions

View File

@ -12,6 +12,7 @@ const ProxyProvider: React.FC = () => {
const { data, mutate } = useSWR('mihomoProxyProviders', mihomoProxyProviders) const { data, mutate } = useSWR('mihomoProxyProviders', mihomoProxyProviders)
const providers = useMemo(() => { const providers = useMemo(() => {
if (!data) return [] if (!data) return []
if (!data.providers) return []
return Object.keys(data.providers) return Object.keys(data.providers)
.map((key) => data.providers[key]) .map((key) => data.providers[key])
.filter((provider) => { .filter((provider) => {

View File

@ -11,6 +11,7 @@ const RuleProvider: React.FC = () => {
const { data, mutate } = useSWR('mihomoRuleProviders', mihomoRuleProviders) const { data, mutate } = useSWR('mihomoRuleProviders', mihomoRuleProviders)
const providers = useMemo(() => { const providers = useMemo(() => {
if (!data) return [] if (!data) return []
if (!data.providers) return []
return Object.keys(data.providers).map((key) => data.providers[key]) return Object.keys(data.providers).map((key) => data.providers[key])
}, [data]) }, [data])
const [updating, setUpdating] = useState(Array(providers.length).fill(false)) const [updating, setUpdating] = useState(Array(providers.length).fill(false))

View File

@ -11,7 +11,7 @@ const ProxyCard: React.FC = () => {
const navigate = useNavigate() const navigate = useNavigate()
const location = useLocation() const location = useLocation()
const match = location.pathname.includes('/proxies') const match = location.pathname.includes('/proxies')
const { data: proxies = { proxies: {} } } = useSWR('mihomoProxies', mihomoProxies) const { data: proxies } = useSWR('mihomoProxies', mihomoProxies)
const { const {
attributes, attributes,
listeners, listeners,
@ -24,6 +24,8 @@ const ProxyCard: React.FC = () => {
}) })
const transform = tf ? { x: tf.x, y: tf.y, scaleX: 1, scaleY: 1 } : null const transform = tf ? { x: tf.x, y: tf.y, scaleX: 1, scaleY: 1 } : null
const filtered = useMemo(() => { const filtered = useMemo(() => {
if (!proxies) return []
if (!proxies.proxies) return []
return Object.keys(proxies.proxies).filter((key) => 'all' in proxies.proxies[key]) return Object.keys(proxies.proxies).filter((key) => 'all' in proxies.proxies[key])
}, [proxies]) }, [proxies])

View File

@ -32,24 +32,24 @@ const Proxies: React.FC = () => {
} = appConfig || {} } = appConfig || {}
const groups = useMemo(() => { const groups = useMemo(() => {
if (!proxies) return []
if (!proxies.proxies) return []
const groups: IMihomoGroup[] = [] const groups: IMihomoGroup[] = []
if (proxies && proxies.proxies) { runtime?.['proxy-groups']?.forEach((group: { name: string; url?: string }) => {
runtime?.['proxy-groups']?.forEach((group: { name: string; url?: string }) => { group = Object.assign(group, group['<<'])
group = Object.assign(group, group['<<']) const { name, url } = group
const { name, url } = group if (
if ( proxies.proxies[name] &&
proxies.proxies[name] && isGroup(proxies.proxies[name]) &&
isGroup(proxies.proxies[name]) && !proxies.proxies[name].hidden
!proxies.proxies[name].hidden ) {
) { const newGroup = proxies.proxies[name]
const newGroup = proxies.proxies[name] newGroup.testUrl = url
newGroup.testUrl = url groups.push(newGroup as IMihomoGroup)
groups.push(newGroup as IMihomoGroup)
}
})
if (!groups.find((group) => group.name === 'GLOBAL')) {
groups.push(proxies.proxies['GLOBAL'] as IMihomoGroup)
} }
})
if (!groups.find((group) => group.name === 'GLOBAL')) {
groups.push(proxies.proxies['GLOBAL'] as IMihomoGroup)
} }
return groups return groups
}, [proxies, runtime]) }, [proxies, runtime])

View File

@ -7,12 +7,13 @@ import useSWR from 'swr'
import { mihomoRules } from '@renderer/utils/ipc' import { mihomoRules } from '@renderer/utils/ipc'
const Rules: React.FC = () => { const Rules: React.FC = () => {
const { data: rules = { rules: [] } } = useSWR<IMihomoRulesInfo>('mihomoRules', mihomoRules, { const { data: rules } = useSWR<IMihomoRulesInfo>('mihomoRules', mihomoRules, {
refreshInterval: 5000 refreshInterval: 5000
}) })
const [filter, setFilter] = useState('') const [filter, setFilter] = useState('')
const filteredRules = useMemo(() => { const filteredRules = useMemo(() => {
if (!rules) return []
if (filter === '') return rules.rules if (filter === '') return rules.rules
return rules.rules.filter((rule) => { return rules.rules.filter((rule) => {
return ( return (