mirror of
https://wget.la/https://github.com/Wxw-Gu/WechatExplorer
synced 2026-08-17 03:27:00 +08:00
fix: 修复 macOS 会话昵称显示
(cherry picked from commit be092c64e528cfc363f0ddd32c480eea5532799f)
This commit is contained in:
@@ -179,7 +179,9 @@ export function listContacts(filter?: string): FormattedContact[] {
|
||||
export async function listContactsAsync(filter?: string): Promise<FormattedContact[]> {
|
||||
if (!dbRef) return []
|
||||
await dbRef.getWcdb4Client().getSessionsAsync({
|
||||
hydrateDisplayNames: false,
|
||||
// macOS session rows frequently contain only wxid/chatroom ids. Hydrate
|
||||
// contact display names before exposing the list to the renderer.
|
||||
hydrateDisplayNames: true,
|
||||
hydrateStatuses: true
|
||||
})
|
||||
return listContacts(filter)
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
import { afterEach, describe, expect, it, vi } from 'vitest'
|
||||
import type { WechatDb } from '../../src/main/wechat-db'
|
||||
import { listContactsAsync, setChatDb } from '../../src/main/services/chat-service'
|
||||
|
||||
describe('chat service contacts', () => {
|
||||
afterEach(() => setChatDb(null))
|
||||
|
||||
it('hydrates display names before returning macOS-style session ids', async () => {
|
||||
const session = {
|
||||
username: '57101206391@chatroom',
|
||||
nickname: '57101206391@chatroom'
|
||||
}
|
||||
const getSessionsAsync = vi.fn(async (options: { hydrateDisplayNames?: boolean }) => {
|
||||
if (options.hydrateDisplayNames) session.nickname = '测试群聊'
|
||||
return [session]
|
||||
})
|
||||
const fakeDb = {
|
||||
close: vi.fn(),
|
||||
md5: () => 'fixture-md5',
|
||||
getAllGroupContacts: () => ({ fixture: session.nickname }),
|
||||
getUserList: () => [
|
||||
{
|
||||
m_nsUsrName: session.username,
|
||||
nickname: session.nickname
|
||||
}
|
||||
],
|
||||
getWcdb4Client: () => ({ getSessionsAsync })
|
||||
} as unknown as WechatDb
|
||||
|
||||
setChatDb(fakeDb)
|
||||
const contacts = await listContactsAsync()
|
||||
|
||||
expect(getSessionsAsync).toHaveBeenCalledWith({
|
||||
hydrateDisplayNames: true,
|
||||
hydrateStatuses: true
|
||||
})
|
||||
expect(contacts[0]?.m_nsNickName).toBe('测试群聊')
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user