@@ -2,6 +2,7 @@ import { Avatar, Button, Card, CardBody, Chip } from '@nextui-org/react'
2
2
import BasePage from '@renderer/components/base/base-page'
3
3
import { useAppConfig } from '@renderer/hooks/use-app-config'
4
4
import {
5
+ getRuntimeConfig ,
5
6
mihomoChangeProxy ,
6
7
mihomoGroupDelay ,
7
8
mihomoProxies ,
@@ -21,29 +22,31 @@ import { MdOutlineSpeed } from 'react-icons/md'
21
22
22
23
const Proxies : React . FC = ( ) => {
23
24
const { data : proxies , mutate } = useSWR ( 'mihomoProxies' , mihomoProxies )
25
+ const { data : runtime } = useSWR ( 'getRuntimeConfig' , getRuntimeConfig )
24
26
const { appConfig, patchAppConfig } = useAppConfig ( )
25
27
const { proxyDisplayMode = 'simple' , proxyDisplayOrder = 'default' } = appConfig || { }
28
+
26
29
const groups = useMemo ( ( ) => {
27
30
const groups : IMihomoGroup [ ] = [ ]
28
- if ( proxies && proxies . proxies && proxies . proxies [ 'GLOBAL' ] ) {
29
- const globalGroup = proxies . proxies [ 'GLOBAL' ] as IMihomoGroup
30
- for ( const global of globalGroup . all ) {
31
- if ( isGroup ( proxies . proxies [ global ] ) ) {
32
- if ( proxies . proxies [ global ] . hidden ) continue
33
- groups . push ( proxies . proxies [ global ] as IMihomoGroup )
34
- }
35
- }
36
- Object . keys ( proxies . proxies ) . forEach ( ( key ) => {
37
- if ( isGroup ( proxies . proxies [ key ] ) ) {
38
- if ( ! groups . find ( ( group ) => group . name === key ) ) {
39
- if ( proxies . proxies [ key ] . hidden ) return
40
- groups . push ( proxies . proxies [ key ] as IMihomoGroup )
41
- }
31
+ if ( proxies && proxies . proxies ) {
32
+ runtime ?. [ 'proxy-groups' ] ?. forEach ( ( group : { name : string ; url ?: string } ) => {
33
+ const { name, url } = group
34
+ if (
35
+ proxies . proxies [ name ] &&
36
+ isGroup ( proxies . proxies [ name ] ) &&
37
+ ! proxies . proxies [ name ] . hidden
38
+ ) {
39
+ const newGroup = proxies . proxies [ name ]
40
+ newGroup . testUrl = url
41
+ groups . push ( newGroup as IMihomoGroup )
42
42
}
43
43
} )
44
+ if ( ! groups . find ( ( group ) => group . name === 'GLOBAL' ) ) {
45
+ groups . push ( proxies . proxies [ 'GLOBAL' ] as IMihomoGroup )
46
+ }
44
47
}
45
48
return groups
46
- } , [ proxies ] )
49
+ } , [ proxies , runtime ] )
47
50
48
51
const [ isOpen , setIsOpen ] = useState ( Array ( groups . length ) . fill ( false ) )
49
52
const virtuosoRef = useRef < GroupedVirtuosoHandle > ( null )
0 commit comments