修复聊天头像与列表:配对群元数据、排序与连接稳定(miniprogram目录)
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
50
miniprogram/utils/im-user.js
Normal file
50
miniprogram/utils/im-user.js
Normal file
@@ -0,0 +1,50 @@
|
||||
/**
|
||||
* IM 用户展示:从本地缓存读取最新头像,空则用默认图
|
||||
*/
|
||||
export function getDefaultAvatar(app) {
|
||||
const oss = app.globalData.ossImageUrl || '';
|
||||
return oss + (app.globalData.morentouxiang || '');
|
||||
}
|
||||
|
||||
export function resolveAvatarUrl(raw, app) {
|
||||
const def = getDefaultAvatar(app);
|
||||
if (!raw) return def;
|
||||
if (raw.startsWith('http')) return raw;
|
||||
const oss = app.globalData.ossImageUrl || '';
|
||||
return oss + raw.replace(/^\//, '');
|
||||
}
|
||||
|
||||
export function getFreshImUser(app, role, uid) {
|
||||
const prefixMap = {
|
||||
normal: 'Boss', dashou: 'Ds', shangjia: 'Sj',
|
||||
guanshi: 'Gs', zuzhang: 'Zz', kaoheguan: 'Kh',
|
||||
};
|
||||
const prefix = prefixMap[role] || 'Boss';
|
||||
const touxiang = wx.getStorageSync('touxiang') || '';
|
||||
const avatar = resolveAvatarUrl(touxiang, app);
|
||||
const name = app.globalData.currentUser?.name || `用户${(uid || '').slice(-6)}`;
|
||||
return {
|
||||
id: prefix + uid,
|
||||
name,
|
||||
avatar,
|
||||
};
|
||||
}
|
||||
|
||||
export function persistGroupMeta(app, groupId, meta) {
|
||||
if (!groupId || !meta) return;
|
||||
if (!app.globalData.groupInfoMap) app.globalData.groupInfoMap = {};
|
||||
app.globalData.groupInfoMap[groupId] = { ...app.globalData.groupInfoMap[groupId], ...meta };
|
||||
try {
|
||||
const cache = wx.getStorageSync('pairGroupMetaCache') || {};
|
||||
cache[groupId] = app.globalData.groupInfoMap[groupId];
|
||||
wx.setStorageSync('pairGroupMetaCache', cache);
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
export function loadGroupMetaCache(app) {
|
||||
try {
|
||||
const cache = wx.getStorageSync('pairGroupMetaCache') || {};
|
||||
if (!app.globalData.groupInfoMap) app.globalData.groupInfoMap = {};
|
||||
Object.assign(app.globalData.groupInfoMap, cache);
|
||||
} catch (e) {}
|
||||
}
|
||||
Reference in New Issue
Block a user