fix: proxy from proxies

This commit is contained in:
Zephyruso 2023-09-01 11:17:15 +08:00
parent 7e28aa9aa9
commit 42d9e7bc9f
2 changed files with 27 additions and 19 deletions

View File

@ -29,19 +29,31 @@ export default () => {
setProxyGroupByProxyName(proxy, proxyName) setProxyGroupByProxyName(proxy, proxyName)
} }
const onSpeedTestClick = (e: MouseEvent, name: string) => { const onSpeedTestClick = async (e: MouseEvent, name: string) => {
const el = e.target as HTMLElement
el.classList.add('animate-pulse')
e.stopPropagation() e.stopPropagation()
delayTestByProxyGroupName(name) await delayTestByProxyGroupName(name)
el.classList.remove('animate-pulse')
} }
const onHealthCheckClick = (e: MouseEvent, name: string) => { const onHealthCheckClick = async (e: MouseEvent, name: string) => {
const el = e.target as HTMLElement
el.classList.add('animate-pulse')
e.stopPropagation() e.stopPropagation()
healthCheckByProviderName(name) await healthCheckByProviderName(name)
el.classList.remove('animate-pulse')
} }
const onUpdateProviderClick = (e: MouseEvent, name: string) => { const onUpdateProviderClick = async (e: MouseEvent, name: string) => {
const el = e.target as HTMLElement
el.classList.add('animate-spin')
e.stopPropagation() e.stopPropagation()
updateProviderByProviderName(name) await updateProviderByProviderName(name)
el.classList.remove('animate-spin')
} }
return ( return (

View File

@ -1,15 +1,13 @@
import { createSignal } from 'solid-js' import { createSignal } from 'solid-js'
import { useRequest } from '~/signals' import { useRequest } from '~/signals'
import type { Proxy, ProxyNode, ProxyProvider } from '~/types' import type { Proxy, ProxyProvider } from '~/types'
// these signals should be global state // these signals should be global state
const [proxies, setProxies] = createSignal<Proxy[]>([]) const [proxies, setProxies] = createSignal<Proxy[]>([])
const [proxyProviders, setProxyProviders] = createSignal<ProxyProvider[]>([]) const [proxyProviders, setProxyProviders] = createSignal<ProxyProvider[]>([])
const [delayMap, setDelayMap] = createSignal<Record<string, number>>({}) const [delayMap, setDelayMap] = createSignal<Record<string, number>>({})
const [proxyNodeMap, setProxyNodeMap] = createSignal<Record<string, ProxyNode>>( const [proxyNodeMap, setProxyNodeMap] = createSignal<Record<string, Proxy>>({})
{},
)
export function useProxies() { export function useProxies() {
const request = useRequest() const request = useRequest()
@ -18,16 +16,7 @@ export function useProxies() {
const { providers } = await request const { providers } = await request
.get('providers/proxies') .get('providers/proxies')
.json<{ providers: Record<string, ProxyProvider> }>() .json<{ providers: Record<string, ProxyProvider> }>()
const delay = delayMap()
Object.values(providers).forEach((provider) => {
provider.proxies.forEach((proxy) => {
setProxyNodeMap({ ...proxyNodeMap(), [proxy.name]: proxy })
delay[proxy.name] = proxy.history[proxy.history.length - 1]?.delay
})
})
setDelayMap(delay)
setProxyProviders( setProxyProviders(
Object.values(providers).filter( Object.values(providers).filter(
(provider) => (provider) =>
@ -39,7 +28,14 @@ export function useProxies() {
.get('proxies') .get('proxies')
.json<{ proxies: Record<string, Proxy> }>() .json<{ proxies: Record<string, Proxy> }>()
const sortIndex = [...(proxies['GLOBAL'].all ?? []), 'GLOBAL'] const sortIndex = [...(proxies['GLOBAL'].all ?? []), 'GLOBAL']
const delay = delayMap()
Object.values(proxies).forEach((proxy) => {
setProxyNodeMap({ ...proxyNodeMap(), [proxy.name]: proxy })
delay[proxy.name] = proxy.history[proxy.history.length - 1]?.delay
})
setDelayMap(delay)
setProxies( setProxies(
Object.values(proxies) Object.values(proxies)
.filter((proxy) => proxy.all && proxy.all.length > 0) .filter((proxy) => proxy.all && proxy.all.length > 0)