mirror of
https://github.com/mautrix/whatsapp.git
synced 2025-03-14 14:15:38 +00:00
chatinfo: improve handling LIDs
This commit is contained in:
parent
96c00016f7
commit
cc52b435f2
2 changed files with 28 additions and 1 deletions
|
@ -286,23 +286,35 @@ func (wa *WhatsAppClient) wrapGroupInfoChange(evt *events.GroupInfo) *bridgev2.C
|
|||
MemberMap: make(map[networkid.UserID]bridgev2.ChatMember),
|
||||
}
|
||||
for _, userID := range evt.Join {
|
||||
if userID.Server != types.DefaultUserServer {
|
||||
continue
|
||||
}
|
||||
memberChanges.MemberMap[waid.MakeUserID(userID)] = bridgev2.ChatMember{
|
||||
EventSender: wa.makeEventSender(userID),
|
||||
}
|
||||
}
|
||||
for _, userID := range evt.Promote {
|
||||
if userID.Server != types.DefaultUserServer {
|
||||
continue
|
||||
}
|
||||
memberChanges.MemberMap[waid.MakeUserID(userID)] = bridgev2.ChatMember{
|
||||
EventSender: wa.makeEventSender(userID),
|
||||
PowerLevel: ptr.Ptr(adminPL),
|
||||
}
|
||||
}
|
||||
for _, userID := range evt.Demote {
|
||||
if userID.Server != types.DefaultUserServer {
|
||||
continue
|
||||
}
|
||||
memberChanges.MemberMap[waid.MakeUserID(userID)] = bridgev2.ChatMember{
|
||||
EventSender: wa.makeEventSender(userID),
|
||||
PowerLevel: ptr.Ptr(defaultPL),
|
||||
}
|
||||
}
|
||||
for _, userID := range evt.Leave {
|
||||
if userID.Server != types.DefaultUserServer {
|
||||
continue
|
||||
}
|
||||
memberChanges.MemberMap[waid.MakeUserID(userID)] = bridgev2.ChatMember{
|
||||
EventSender: wa.makeEventSender(userID),
|
||||
Membership: event.MembershipLeave,
|
||||
|
|
|
@ -36,15 +36,30 @@ func ParsePortalID(portal networkid.PortalID) (types.JID, error) {
|
|||
return parsed, nil
|
||||
}
|
||||
|
||||
const LIDPrefix = "lid-"
|
||||
|
||||
func MakeUserID(user types.JID) networkid.UserID {
|
||||
return networkid.UserID(user.User)
|
||||
switch user.Server {
|
||||
case types.DefaultUserServer:
|
||||
return networkid.UserID(user.User)
|
||||
case types.HiddenUserServer:
|
||||
return networkid.UserID(LIDPrefix + user.User)
|
||||
default:
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
func ParseUserID(user networkid.UserID) types.JID {
|
||||
if strings.HasPrefix(string(user), LIDPrefix) {
|
||||
return types.NewJID(strings.TrimPrefix(string(user), LIDPrefix), types.HiddenUserServer)
|
||||
}
|
||||
return types.NewJID(string(user), types.DefaultUserServer)
|
||||
}
|
||||
|
||||
func MakeUserLoginID(user types.JID) networkid.UserLoginID {
|
||||
if user.Server != types.DefaultUserServer {
|
||||
return ""
|
||||
}
|
||||
return networkid.UserLoginID(user.User)
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue