diff --git a/electron/services/exportService.ts b/electron/services/exportService.ts index 7e57c05..f5e750b 100644 --- a/electron/services/exportService.ts +++ b/electron/services/exportService.ts @@ -1605,6 +1605,14 @@ class ExportService { } } + private getWeflowHeader(): { version: string; exportedAt: number; generator: string } { + return { + version: '1.0.3', + exportedAt: Math.floor(Date.now() / 1000), + generator: 'WeFlow' + } + } + /** * 生成通用的导出元数据 (参考 ChatLab 格式) */ @@ -1657,6 +1665,12 @@ class ExportService { const collected = await this.collectMessages(sessionId, cleanedMyWxid, options.dateRange) const allMessages = collected.rows + + // 如果没有消息,不创建文件 + if (allMessages.length === 0) { + return { success: false, error: '该会话在指定时间范围内没有消息' } + } + if (isGroup) { await this.mergeGroupMembers(sessionId, collected.memberSet, options.exportAvatars === true) } @@ -1850,6 +1864,12 @@ class ExportService { }) const collected = await this.collectMessages(sessionId, cleanedMyWxid, options.dateRange) + + // 如果没有消息,不创建文件 + if (collected.rows.length === 0) { + return { success: false, error: '该会话在指定时间范围内没有消息' } + } + const { exportMediaEnabled, mediaRootDir, mediaRelativePrefix } = this.getMediaLayout(outputPath, options) // ========== 阶段1:并行导出媒体文件 ========== @@ -2005,7 +2025,9 @@ class ExportService { options.displayNamePreference || 'remark' ) + const weflow = this.getWeflowHeader() const detailedExport: any = { + weflow, session: { wxid: sessionId, nickname: sessionNickname, @@ -2090,6 +2112,10 @@ class ExportService { const collected = await this.collectMessages(sessionId, cleanedMyWxid, options.dateRange) + // 如果没有消息,不创建文件 + if (collected.rows.length === 0) { + return { success: false, error: '该会话在指定时间范围内没有消息' } + } onProgress?.({ current: 30, @@ -2443,6 +2469,12 @@ class ExportService { }) const collected = await this.collectMessages(sessionId, cleanedMyWxid, options.dateRange) + + // 如果没有消息,不创建文件 + if (collected.rows.length === 0) { + return { success: false, error: '该会话在指定时间范围内没有消息' } + } + const sortedMessages = collected.rows.sort((a, b) => a.createTime - b.createTime) const { exportMediaEnabled, mediaRootDir, mediaRelativePrefix } = this.getMediaLayout(outputPath, options) @@ -2614,6 +2646,12 @@ class ExportService { }) const collected = await this.collectMessages(sessionId, cleanedMyWxid, options.dateRange) + + // 如果没有消息,不创建文件 + if (collected.rows.length === 0) { + return { success: false, error: '该会话在指定时间范围内没有消息' } + } + if (isGroup) { await this.mergeGroupMembers(sessionId, collected.memberSet, options.exportAvatars === true) } diff --git a/package.json b/package.json index 9011c0e..46ab5a0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "weflow", - "version": "1.4.0", + "version": "1.4.1", "description": "WeFlow", "main": "dist-electron/main.js", "author": "cc", diff --git a/src/pages/GroupAnalyticsPage.tsx b/src/pages/GroupAnalyticsPage.tsx index 3cb07c1..1a8dfe1 100644 --- a/src/pages/GroupAnalyticsPage.tsx +++ b/src/pages/GroupAnalyticsPage.tsx @@ -56,7 +56,7 @@ function GroupAnalyticsPage() { useEffect(() => { loadGroups() - }, [loadGroups]) + }, []) useEffect(() => { if (searchQuery) {