refactor(代码重复): 抽取共享工具函数与 UI 组件,消除多处重复实现

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
雨霖铃
2026-06-19 20:55:39 +08:00
parent 47d74f999e
commit 0f3060dcf3
24 changed files with 386 additions and 309 deletions
+33
View File
@@ -0,0 +1,33 @@
/** 浏览器内部/受限协议(含尾部冒号,用于 protocol 匹配) */
export const RESTRICTED_PROTOCOLS = [
'chrome:',
'chrome-extension:',
'about:',
'edge:',
'brave:',
'view-source:',
'file:',
'data:',
] as const;
export function getUrlProtocol(url: string): string | null {
try {
return new URL(url).protocol;
} catch {
return null;
}
}
/** 用于 content script / 右键恢复等(protocol 精确匹配) */
export function isUnsupportedPageUrl(url: string | undefined): boolean {
if (!url) return true;
const protocol = getUrlProtocol(url);
if (!protocol) return true;
return (RESTRICTED_PROTOCOLS as readonly string[]).includes(protocol);
}
/** 用于 storage cleaner tab 检测(前缀匹配,兼容无 protocol 的场景) */
export function isRestrictedUrl(url?: string): boolean {
if (!url) return true;
return RESTRICTED_PROTOCOLS.some((p) => url.startsWith(p));
}