fix: align IM client interaction edge cases

This commit is contained in:
richjohnrambo
2026-09-13 10:06:52 +08:00
parent e5fbca735d
commit d107fba8bf
5 changed files with 137 additions and 21 deletions
+8 -3
View File
@@ -3432,9 +3432,13 @@ func (a *adapter) TopicsForUser(uid t.Uid, keepDeleted bool, opts *t.QueryOpt) (
if len(usrq) > 0 {
q = `SELECT u.id,u.updatedat,u.state,u.access,u.lastseen,u.useragent,u.public,u.trusted,
p.nickname AS profile_nickname,p.avatar_file_id AS profile_avatar_file_id,p.signature AS profile_signature,
p.gender AS profile_gender,p.region AS profile_region,p.public_account AS profile_public_account,p.updated_at AS profile_updated_at
FROM im_users AS u LEFT JOIN im_user_profiles AS p ON p.user_id=u.id WHERE u.id IN (?)`
q, args, _ = sqlx.In(q, usrq)
p.gender AS profile_gender,p.region AS profile_region,p.public_account AS profile_public_account,p.updated_at AS profile_updated_at,
fs.remark AS friendship_remark
FROM im_users AS u
LEFT JOIN im_user_profiles AS p ON p.user_id=u.id
LEFT JOIN im_friendships AS fs ON fs.user_id=? AND fs.peer_id=u.id AND fs.status=?
WHERE u.id IN (?)`
q, args, _ = sqlx.In(q, store.DecodeUid(uid), t.RelationshipFriend, usrq)
if !keepDeleted {
// Optionally skip deleted users.
q += " AND u.state!=?"
@@ -3466,6 +3470,7 @@ func (a *adapter) TopicsForUser(uid t.Uid, keepDeleted bool, opts *t.QueryOpt) (
sub.SetTrusted(common.FromJSON(usr2.Trusted))
sub.SetDefaultAccess(usr2.Access.Auth, usr2.Access.Anon)
sub.SetLastSeenAndUA(usr2.lastSeen(), usr2.UserAgent)
sub.Private = ensureP2PPrivatePeerRemark(sub.Private, common.EncodeUidString(usr2.ID).UserId(), usr2.FriendshipRemark.String)
join[joinOn] = sub
p2pResolved[joinOn] = true
}