diff --git a/package-lock.json b/package-lock.json index 84cdacd..58bbb42 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "weflow", - "version": "2.0.1", + "version": "2.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "weflow", - "version": "2.0.1", + "version": "2.1.0", "hasInstallScript": true, "dependencies": { "better-sqlite3": "^12.5.0", diff --git a/package.json b/package.json index 155eeb1..8bba440 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "weflow", - "version": "2.0.1", + "version": "2.1.0", "description": "WeFlow", "main": "dist-electron/main.js", "author": "cc", diff --git a/src/pages/AnalyticsPage.scss b/src/pages/AnalyticsPage.scss index 81102df..73d7ca9 100644 --- a/src/pages/AnalyticsPage.scss +++ b/src/pages/AnalyticsPage.scss @@ -45,6 +45,12 @@ font-weight: 600; color: var(--primary); } + + .error-actions { + display: flex; + align-items: center; + gap: 8px; + } } .page-header { @@ -521,4 +527,4 @@ display: flex; gap: 8px; } -} \ No newline at end of file +} diff --git a/src/pages/AnalyticsPage.tsx b/src/pages/AnalyticsPage.tsx index df8a6c7..1557679 100644 --- a/src/pages/AnalyticsPage.tsx +++ b/src/pages/AnalyticsPage.tsx @@ -108,6 +108,7 @@ function AnalyticsPage() { }, [loadExcludedUsernames]) const handleRefresh = () => loadData(true) + const isNoSessionError = error?.includes('未找到消息会话') ?? false const loadExcludeCandidates = useCallback(async () => { setExcludeLoading(true) @@ -175,6 +176,23 @@ function AnalyticsPage() { } } + const handleResetExcluded = async () => { + try { + const result = await window.electronAPI.analytics.setExcludedUsernames([]) + if (!result.success) { + setError(result.error || '重置排除好友失败') + return + } + setExcludedUsernames(new Set()) + setDraftExcluded(new Set()) + clearCache() + await window.electronAPI.cache.clearAnalytics() + await loadData(true) + } catch (e) { + setError(`重置排除好友失败: ${String(e)}`) + } + } + const visibleExcludeCandidates = excludeCandidates .filter((candidate) => { const query = excludeQuery.trim().toLowerCase() @@ -355,6 +373,22 @@ function AnalyticsPage() { ) } + if (error && !isLoaded && isNoSessionError && excludedUsernames.size > 0) { + return ( +
+

{error}

+
+ + +
+
+ ) + } + if (error && !isLoaded) { return (

{error}

) }