XuqmGroup-RNSDK/packages/im/src/runtime.ts

29 行
1.0 KiB
TypeScript

import type { ConversationData, ImMessage } from './types'
export function buildDbName(appKey: string, userId: string): string {
return `xuqm_im_${appKey}_${userId}`
}
export function sortMessages(messages: ImMessage[]): ImMessage[] {
const deduped = new Map<string, ImMessage>()
messages.forEach((message) => {
const existing = deduped.get(message.id)
if (!existing || message.createdAt >= existing.createdAt) {
deduped.set(message.id, message)
}
})
return [...deduped.values()]
.sort((a, b) => {
if (b.createdAt !== a.createdAt) return b.createdAt - a.createdAt
return b.id.localeCompare(a.id)
})
}
export function sortConversations(conversations: ConversationData[]): ConversationData[] {
return [...conversations].sort((a, b) => {
if (a.isPinned !== b.isPinned) return Number(b.isPinned) - Number(a.isPinned)
if (b.lastMsgTime !== a.lastMsgTime) return b.lastMsgTime - a.lastMsgTime
return `${a.chatType}:${a.targetId}`.localeCompare(`${b.chatType}:${b.targetId}`)
})
}