From 0d45b5b85778b267f98cf0d9d3c779cc60b71bb6 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Sun, 26 Aug 2018 16:19:50 +0300 Subject: [PATCH] Add power level to Matrix user if they're admin --- portal.go | 13 +++++++++---- whatsapp-ext/chat.go | 3 +++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/portal.go b/portal.go index 4e6e699..4adbb45 100644 --- a/portal.go +++ b/portal.go @@ -128,16 +128,17 @@ func (portal *Portal) SyncParticipants(metadata *whatsappExt.GroupInfo) { for _, participant := range metadata.Participants { puppet := portal.user.GetPuppetByJID(participant.JID) puppet.Intent().EnsureJoined(portal.MXID) - level := levels.GetUserLevel(puppet.MXID) + expectedLevel := 0 if participant.IsSuperAdmin { expectedLevel = 95 } else if participant.IsAdmin { expectedLevel = 50 } - if level != expectedLevel { - levels.SetUserLevel(puppet.MXID, expectedLevel) - changed = true + changed = levels.EnsureUserLevel(puppet.MXID, expectedLevel) || changed + + if participant.JID == portal.user.JID() { + changed = levels.EnsureUserLevel(portal.user.ID, expectedLevel) || changed } } if changed { @@ -278,6 +279,10 @@ func (portal *Portal) ChangeAdminStatus(jids []string, setAdmin bool) { for _, jid := range jids { puppet := portal.user.GetPuppetByJID(jid) changed = levels.EnsureUserLevel(puppet.MXID, newLevel) || changed + + if jid == portal.user.JID() { + changed = levels.EnsureUserLevel(portal.user.ID, newLevel) || changed + } } if changed { portal.MainIntent().SetPowerLevels(portal.MXID, levels) diff --git a/whatsapp-ext/chat.go b/whatsapp-ext/chat.go index 6271d6d..0bc73ae 100644 --- a/whatsapp-ext/chat.go +++ b/whatsapp-ext/chat.go @@ -118,6 +118,9 @@ func (cud *ChatUpdateData) UnmarshalJSON(data []byte) error { return err } cud.NameChange.SetBy = strings.Replace(cud.NameChange.SetBy, OldUserSuffix, NewUserSuffix, 1) + for index, jid := range cud.PermissionChange.JIDs { + cud.PermissionChange.JIDs[index] = strings.Replace(jid, OldUserSuffix, NewUserSuffix, 1) + } return nil }