mirror of
https://github.com/hicccc77/WeFlow.git
synced 2026-03-24 23:06:51 +00:00
fix: 进一步修复头像无法加载的问题;修复了构建脚本错误的配置
This commit is contained in:
Submodule echotrace deleted from 98280f0d0d
@@ -1687,11 +1687,24 @@ class ChatService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const cleanedWxid = this.cleanAccountDirName(myWxid)
|
const cleanedWxid = this.cleanAccountDirName(myWxid)
|
||||||
const result = await wcdbService.getAvatarUrls([myWxid, cleanedWxid])
|
// 增加 'self' 作为兜底标识符,微信有时将个人信息存储在 'self' 记录中
|
||||||
|
const fetchList = Array.from(new Set([myWxid, cleanedWxid, 'self']))
|
||||||
|
|
||||||
|
console.log(`[ChatService] 尝试获取个人头像, wxids: ${JSON.stringify(fetchList)}`)
|
||||||
|
const result = await wcdbService.getAvatarUrls(fetchList)
|
||||||
|
|
||||||
if (result.success && result.map) {
|
if (result.success && result.map) {
|
||||||
const avatarUrl = result.map[myWxid] || result.map[cleanedWxid]
|
// 按优先级尝试匹配
|
||||||
return { success: true, avatarUrl }
|
const avatarUrl = result.map[myWxid] || result.map[cleanedWxid] || result.map['self']
|
||||||
|
if (avatarUrl) {
|
||||||
|
console.log(`[ChatService] 成功获取个人头像: ${avatarUrl.substring(0, 50)}...`)
|
||||||
|
return { success: true, avatarUrl }
|
||||||
|
}
|
||||||
|
console.warn(`[ChatService] 未能在 contact.db 中找到个人头像, 请求列表: ${JSON.stringify(fetchList)}`)
|
||||||
|
return { success: true, avatarUrl: undefined }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.error(`[ChatService] 查询个人头像失败: ${result.error || '未知错误'}`)
|
||||||
return { success: true, avatarUrl: undefined }
|
return { success: true, avatarUrl: undefined }
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error('ChatService: 获取当前用户头像失败:', e)
|
console.error('ChatService: 获取当前用户头像失败:', e)
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"postinstall": "echo 'No native modules to rebuild'",
|
"postinstall": "echo 'No native modules to rebuild'",
|
||||||
"rebuild": "echo 'No native modules to rebuild'",
|
"rebuild": "echo 'No native modules to rebuild'",
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
"build": "vue-tsc && vite build && electron-builder",
|
"build": "tsc && vite build && electron-builder",
|
||||||
"preview": "vite preview",
|
"preview": "vite preview",
|
||||||
"electron:dev": "vite --mode electron",
|
"electron:dev": "vite --mode electron",
|
||||||
"electron:build": "npm run build"
|
"electron:build": "npm run build"
|
||||||
|
|||||||
@@ -127,6 +127,7 @@ function ChatPage(_props: ChatPageProps) {
|
|||||||
const sessionListRef = useRef<HTMLDivElement>(null)
|
const sessionListRef = useRef<HTMLDivElement>(null)
|
||||||
const [currentOffset, setCurrentOffset] = useState(0)
|
const [currentOffset, setCurrentOffset] = useState(0)
|
||||||
const [myAvatarUrl, setMyAvatarUrl] = useState<string | undefined>(undefined)
|
const [myAvatarUrl, setMyAvatarUrl] = useState<string | undefined>(undefined)
|
||||||
|
const [myWxid, setMyWxid] = useState<string | undefined>(undefined)
|
||||||
const [showScrollToBottom, setShowScrollToBottom] = useState(false)
|
const [showScrollToBottom, setShowScrollToBottom] = useState(false)
|
||||||
const [sidebarWidth, setSidebarWidth] = useState(260)
|
const [sidebarWidth, setSidebarWidth] = useState(260)
|
||||||
const [isResizing, setIsResizing] = useState(false)
|
const [isResizing, setIsResizing] = useState(false)
|
||||||
@@ -203,6 +204,9 @@ function ChatPage(_props: ChatPageProps) {
|
|||||||
setConnected(true)
|
setConnected(true)
|
||||||
await loadSessions()
|
await loadSessions()
|
||||||
await loadMyAvatar()
|
await loadMyAvatar()
|
||||||
|
// 获取 myWxid 用于匹配个人头像
|
||||||
|
const wxid = await window.electronAPI.config.get('myWxid')
|
||||||
|
if (wxid) setMyWxid(wxid as string)
|
||||||
} else {
|
} else {
|
||||||
setConnectionError(result.error || '连接失败')
|
setConnectionError(result.error || '连接失败')
|
||||||
}
|
}
|
||||||
@@ -434,6 +438,12 @@ function ChatPage(_props: ChatPageProps) {
|
|||||||
for (const [username, contact] of Object.entries(result.contacts)) {
|
for (const [username, contact] of Object.entries(result.contacts)) {
|
||||||
contactUpdateQueueRef.current.set(username, contact)
|
contactUpdateQueueRef.current.set(username, contact)
|
||||||
|
|
||||||
|
// 如果是自己的信息且当前个人头像为空,同步更新
|
||||||
|
if (myWxid && username === myWxid && contact.avatarUrl && !myAvatarUrl) {
|
||||||
|
console.log('[ChatPage] 从联系人同步获取到个人头像')
|
||||||
|
setMyAvatarUrl(contact.avatarUrl)
|
||||||
|
}
|
||||||
|
|
||||||
// 【核心优化】同步更新全局发送者头像缓存,供 MessageBubble 使用
|
// 【核心优化】同步更新全局发送者头像缓存,供 MessageBubble 使用
|
||||||
senderAvatarCache.set(username, {
|
senderAvatarCache.set(username, {
|
||||||
avatarUrl: contact.avatarUrl,
|
avatarUrl: contact.avatarUrl,
|
||||||
@@ -1378,9 +1388,9 @@ function MessageBubble({ message, session, showTime, myAvatarUrl, isGroupChat }:
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 群聊中获取发送者信息
|
// 群聊中获取发送者信息 (如果自己发的没头像,也尝试拉取)
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (isGroupChat && !isSent && message.senderUsername) {
|
if (message.senderUsername && (isGroupChat || (isSent && !myAvatarUrl))) {
|
||||||
const sender = message.senderUsername
|
const sender = message.senderUsername
|
||||||
const cached = senderAvatarCache.get(sender)
|
const cached = senderAvatarCache.get(sender)
|
||||||
if (cached) {
|
if (cached) {
|
||||||
@@ -1410,7 +1420,7 @@ function MessageBubble({ message, session, showTime, myAvatarUrl, isGroupChat }:
|
|||||||
senderAvatarLoading.delete(sender)
|
senderAvatarLoading.delete(sender)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}, [isGroupChat, isSent, message.senderUsername])
|
}, [isGroupChat, isSent, message.senderUsername, myAvatarUrl])
|
||||||
|
|
||||||
// 自动下载表情包
|
// 自动下载表情包
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -1577,11 +1587,11 @@ function MessageBubble({ message, session, showTime, myAvatarUrl, isGroupChat }:
|
|||||||
const bubbleClass = isSent ? 'sent' : 'received'
|
const bubbleClass = isSent ? 'sent' : 'received'
|
||||||
|
|
||||||
// 头像逻辑:
|
// 头像逻辑:
|
||||||
// - 自己发的:使用 myAvatarUrl
|
// - 自己发的:优先使用 myAvatarUrl,缺失则用 senderAvatarUrl (补救)
|
||||||
// - 群聊中对方发的:使用发送者头像
|
// - 群聊中对方发的:使用发送者头像
|
||||||
// - 私聊中对方发的:使用会话头像
|
// - 私聊中对方发的:使用会话头像
|
||||||
const avatarUrl = isSent
|
const avatarUrl = isSent
|
||||||
? myAvatarUrl
|
? (myAvatarUrl || senderAvatarUrl)
|
||||||
: (isGroupChat ? senderAvatarUrl : session.avatarUrl)
|
: (isGroupChat ? senderAvatarUrl : session.avatarUrl)
|
||||||
const avatarLetter = isSent
|
const avatarLetter = isSent
|
||||||
? '我'
|
? '我'
|
||||||
|
|||||||
1
wx_key
1
wx_key
Submodule wx_key deleted from 40be59dc47
Reference in New Issue
Block a user