重构: 连接切换链收敛与代码清理

- 切换连接统一switchConnection入口,删watcher与抑制机制
- 删除活跃服务器后回落本地并加载
- 侧边栏与指示器点击统一上抛,重复点击可刷新
- Wails事件解析归一,查重谓词抽公共
- 删空壳别名文件与过期文档截图
This commit is contained in:
lxy
2026-09-15 22:26:36 +08:00
parent 6ea9d9ac99
commit 0475d55bff
23 changed files with 395 additions and 351 deletions
-24
View File
@@ -1,24 +0,0 @@
package filesystem
import (
"bytes"
"io"
"unicode/utf8"
"golang.org/x/text/encoding/simplifiedchinese"
"golang.org/x/text/transform"
)
// BytesToString 智能编码转换:UTF-8 直接返回,否则尝试 GBK → UTF-8
func BytesToString(data []byte) string {
if utf8.Valid(data) {
return string(data)
}
// 尝试 GBK 解码
reader := transform.NewReader(bytes.NewReader(data), simplifiedchinese.GBK.NewDecoder())
decoded, err := io.ReadAll(reader)
if err != nil || !utf8.Valid(decoded) {
return string(data) // 转换失败或结果无效,返回原始内容
}
return string(decoded)
}
-47
View File
@@ -1,47 +0,0 @@
package filesystem
import (
"regexp"
"strings"
)
var (
htmlResRegex = regexp.MustCompile(`(?:src|href|data|poster)=["']([^"']+)["']`)
htmlCssUrlRe = regexp.MustCompile(`url\(\s*["']?([^"')]+)["']?\s*\)`)
)
// ExtractHtmlResources 从 HTML 内容提取资源路径
func ExtractHtmlResources(html string) []string {
seen := make(map[string]bool)
var resources []string
add := func(v string) {
v = strings.TrimSpace(v)
if v != "" && !seen[v] {
seen[v] = true
resources = append(resources, v)
}
}
for _, m := range htmlResRegex.FindAllStringSubmatch(html, -1) {
if len(m) > 1 {
add(m[1])
}
}
for _, m := range htmlCssUrlRe.FindAllStringSubmatch(html, -1) {
if len(m) > 1 {
add(m[1])
}
}
return resources
}
// ShouldSkipResource 判断资源路径是否应跳过
func ShouldSkipResource(p string) bool {
return strings.HasPrefix(p, "data:") ||
strings.HasPrefix(p, "http://") ||
strings.HasPrefix(p, "https://") ||
strings.HasPrefix(p, "//") ||
strings.HasPrefix(p, "#") ||
strings.HasPrefix(p, "javascript:") ||
strings.HasPrefix(p, "mailto:") ||
strings.HasPrefix(p, "blob:")
}