fix: proxy providers not filtered in proxy groups

This commit is contained in:
Howard Cheung 2022-09-04 14:55:18 +08:00
parent 6d30c58054
commit cfc35e1028

View File

@ -96,7 +96,8 @@ func QueryProxyGroup(name string, sortMode SortMode, uiSubtitlePattern *regexp2.
return nil return nil
} }
proxies := collectProviders(g.Providers(), uiSubtitlePattern) proxies := convertProxies(g.Proxies(), uiSubtitlePattern)
//proxies := collectProviders(g.Providers(), uiSubtitlePattern)
switch sortMode { switch sortMode {
case Title: case Title:
@ -162,6 +163,36 @@ func PatchSelector(selector, name string) bool {
return true return true
} }
func convertProxies(proxies []C.Proxy, uiSubtitlePattern *regexp2.Regexp) []*Proxy {
result := make([]*Proxy, 0, 128)
for _, p := range proxies {
name := p.Name()
title := name
subtitle := p.Type().String()
if uiSubtitlePattern != nil {
if _, ok := p.(*adapter.Proxy).ProxyAdapter.(outboundgroup.ProxyGroup); !ok {
runes := []rune(name)
match, err := uiSubtitlePattern.FindRunesMatch(runes)
if err == nil && match != nil {
title = string(runes[:match.Index]) + string(runes[match.Index+match.Length:])
subtitle = string(runes[match.Index : match.Index+match.Length])
}
}
}
result = append(result, &Proxy{
Name: name,
Title: strings.TrimSpace(title),
Subtitle: strings.TrimSpace(subtitle),
Type: p.Type().String(),
Delay: int(p.LastDelay()),
})
}
return result
}
func collectProviders(providers []provider.ProxyProvider, uiSubtitlePattern *regexp2.Regexp) []*Proxy { func collectProviders(providers []provider.ProxyProvider, uiSubtitlePattern *regexp2.Regexp) []*Proxy {
result := make([]*Proxy, 0, 128) result := make([]*Proxy, 0, 128)