diff --git a/package.json b/package.json index 83edfc7..706be5e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wechatexplorer", - "version": "1.0.1", + "version": "1.0.2", "description": "mac 版本获取微信聊天记录, AI群聊总结助手", "keywords": [ "wechat", diff --git a/src/main/index.ts b/src/main/index.ts index fe74269..adfb143 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -161,14 +161,12 @@ app.whenReady().then(() => { return { id: msg.mesLocalID || Math.random().toString(), - from: msg.mesDes === '1' ? 'user' : 'assistant', // 1 通常是接收到的,0 是发送的?需要验证。Swift 说:[1: "user", 0: "assistant"] + from: msg.mesDes === 1 ? 'user' : 'assistant', // 1 通常是接收到的,0 是发送的?需要验证。Swift 说:[1: "user", 0: "assistant"] type: MSG_TYPE_DICT[msgType] || msg.messageType, datetime: date.toLocaleString('zh-CN', { hour12: false }), content: content, - isSender: msg.mesDes === '0', img: img, name: name - // 实际上让我们坚持我们观察到的:1=用户(其他人), 0=助手(我) } }) }) diff --git a/src/main/wechat-db.ts b/src/main/wechat-db.ts index 7b67597..cee1ece 100644 --- a/src/main/wechat-db.ts +++ b/src/main/wechat-db.ts @@ -13,7 +13,7 @@ export interface UserContact { export interface WechatMessage { mesLocalID: string - mesDes: string + mesDes: number messageType: string msgCreateTime: string msgContent: string diff --git a/src/renderer/src/components/ChatWindow.tsx b/src/renderer/src/components/ChatWindow.tsx index 3681faa..e605bc9 100644 --- a/src/renderer/src/components/ChatWindow.tsx +++ b/src/renderer/src/components/ChatWindow.tsx @@ -39,6 +39,7 @@ const ChatWindow: React.FC = ({ onRefresh, onRefreshData }) => { + const isGroupChat = contact?.type === 'group' || contact?.m_nsUsrName?.endsWith('@chatroom') const messagesEndRef = useRef(null) const imageContainerRef = useRef(null) const [generatedImage, setGeneratedImage] = useState(null) @@ -115,11 +116,16 @@ const ChatWindow: React.FC = ({ // 昨天 const startOfYesterday = startOfDay - 86400000 return parsed >= startOfYesterday && parsed < startOfDay - } else { + } else if (days === 7) { // 过去 7 天 const startOf7DaysAgo = startOfDay - 7 * 86400000 return parsed >= startOf7DaysAgo + } else if (days === 30) { + // 过去 30 天 + const startOf30DaysAgo = startOfDay - 30 * 86400000 + return parsed >= startOf30DaysAgo } + return true }) } @@ -127,7 +133,15 @@ const ChatWindow: React.FC = ({ const csvContent = [ headers.join(','), ...filtered.map((m) => { - const content = m.content.replace(/"/g, '""').replace(/\n/g, ' ') + let prefix = '' + if (isGroupChat) { + prefix = m.name ? `${m.name}: ` : '' + } else { + const name = m.from === 'user' ? contact?.m_nsNickName || '未知' : '我' + prefix = `${name}: ` + } + const fullContent = `${prefix}${m.content}` + const content = fullContent.replace(/"/g, '""').replace(/\n/g, ' ') return `"${m.from}","${m.type}","${m.datetime}","${content}"` }) ].join('\n') @@ -300,7 +314,12 @@ const ChatWindow: React.FC = ({ display: !showAvatar ? 'flex' : 'block' }} > - {msg.name &&
{msg.name}:
} + {(msg.name || contact.m_nsNickName) && ( +
+ {isGroupChat ? msg.name : msg.from === 'user' ? contact.m_nsNickName : '我'} + {isGroupChat ? (msg.name ? ':' : '') : ':'} +
+ )}
= ({ +