mirror of
https://github.com/mautrix/signal.git
synced 2025-03-14 14:15:36 +00:00
chatinfo: stop using deprecated Members list
This commit is contained in:
parent
fc6a95375e
commit
8cdc01f21d
2 changed files with 33 additions and 26 deletions
|
@ -227,11 +227,12 @@ func (s *SignalClient) GetContactList(ctx context.Context) ([]*bridgev2.ResolveI
|
|||
func (s *SignalClient) makeCreateDMResponse(recipient *types.Recipient) *bridgev2.CreateChatResponse {
|
||||
name := ""
|
||||
topic := PrivateChatTopic
|
||||
selfUser := s.makeEventSender(s.Client.Store.ACI)
|
||||
members := &bridgev2.ChatMemberList{
|
||||
IsFull: true,
|
||||
Members: []bridgev2.ChatMember{
|
||||
{
|
||||
EventSender: s.makeEventSender(s.Client.Store.ACI),
|
||||
MemberMap: map[networkid.UserID]bridgev2.ChatMember{
|
||||
selfUser.Sender: {
|
||||
EventSender: selfUser,
|
||||
Membership: event.MembershipJoin,
|
||||
PowerLevel: &moderatorPL,
|
||||
},
|
||||
|
@ -257,11 +258,12 @@ func (s *SignalClient) makeCreateDMResponse(recipient *types.Recipient) *bridgev
|
|||
}
|
||||
} else {
|
||||
// The other user is only present if their ACI is known
|
||||
members.Members = append(members.Members, bridgev2.ChatMember{
|
||||
EventSender: s.makeEventSender(recipient.ACI),
|
||||
recipientUser := s.makeEventSender(recipient.ACI)
|
||||
members.MemberMap[recipientUser.Sender] = bridgev2.ChatMember{
|
||||
EventSender: recipientUser,
|
||||
Membership: event.MembershipJoin,
|
||||
PowerLevel: &moderatorPL,
|
||||
})
|
||||
}
|
||||
}
|
||||
serviceID = libsignalgo.NewACIServiceID(recipient.ACI)
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@ import (
|
|||
"go.mau.fi/util/ptr"
|
||||
"maunium.net/go/mautrix/bridgev2"
|
||||
"maunium.net/go/mautrix/bridgev2/database"
|
||||
"maunium.net/go/mautrix/bridgev2/networkid"
|
||||
"maunium.net/go/mautrix/event"
|
||||
|
||||
"go.mau.fi/mautrix-signal/pkg/libsignalgo"
|
||||
|
@ -47,7 +48,7 @@ func roleToPL(role signalmeow.GroupMemberRole) *int {
|
|||
}
|
||||
}
|
||||
|
||||
func applyAnnouncementsOnly(plc *bridgev2.PowerLevelChanges, announcementsOnly bool) {
|
||||
func applyAnnouncementsOnly(plc *bridgev2.PowerLevelOverrides, announcementsOnly bool) {
|
||||
if announcementsOnly {
|
||||
plc.EventsDefault = &moderatorPL
|
||||
} else {
|
||||
|
@ -55,7 +56,7 @@ func applyAnnouncementsOnly(plc *bridgev2.PowerLevelChanges, announcementsOnly b
|
|||
}
|
||||
}
|
||||
|
||||
func applyAttributesAccess(plc *bridgev2.PowerLevelChanges, attributeAccess signalmeow.AccessControl) {
|
||||
func applyAttributesAccess(plc *bridgev2.PowerLevelOverrides, attributeAccess signalmeow.AccessControl) {
|
||||
attributePL := defaultPL
|
||||
if attributeAccess == signalmeow.AccessControl_ADMINISTRATOR {
|
||||
attributePL = moderatorPL
|
||||
|
@ -65,7 +66,7 @@ func applyAttributesAccess(plc *bridgev2.PowerLevelChanges, attributeAccess sign
|
|||
plc.Events[event.StateTopic] = attributePL
|
||||
}
|
||||
|
||||
func applyMembersAccess(plc *bridgev2.PowerLevelChanges, memberAccess signalmeow.AccessControl) {
|
||||
func applyMembersAccess(plc *bridgev2.PowerLevelOverrides, memberAccess signalmeow.AccessControl) {
|
||||
if memberAccess == signalmeow.AccessControl_ADMINISTRATOR {
|
||||
plc.Invite = &moderatorPL
|
||||
} else {
|
||||
|
@ -98,9 +99,9 @@ func (s *SignalClient) getGroupInfo(ctx context.Context, groupID types.GroupIden
|
|||
return nil, err
|
||||
}
|
||||
members := &bridgev2.ChatMemberList{
|
||||
IsFull: true,
|
||||
Members: make([]bridgev2.ChatMember, len(groupInfo.Members), len(groupInfo.Members)+len(groupInfo.PendingMembers)+len(groupInfo.RequestingMembers)+len(groupInfo.BannedMembers)),
|
||||
PowerLevels: &bridgev2.PowerLevelChanges{
|
||||
IsFull: true,
|
||||
MemberMap: make(map[networkid.UserID]bridgev2.ChatMember, len(groupInfo.Members)+len(groupInfo.PendingMembers)+len(groupInfo.RequestingMembers)+len(groupInfo.BannedMembers)),
|
||||
PowerLevels: &bridgev2.PowerLevelOverrides{
|
||||
Events: map[event.Type]int{
|
||||
event.StatePowerLevels: moderatorPL,
|
||||
},
|
||||
|
@ -113,9 +114,10 @@ func (s *SignalClient) getGroupInfo(ctx context.Context, groupID types.GroupIden
|
|||
applyMembersAccess(members.PowerLevels, groupInfo.AccessControl.Members)
|
||||
joinRule = inviteLinkToJoinRule(groupInfo.AccessControl.AddFromInviteLink)
|
||||
}
|
||||
for i, member := range groupInfo.Members {
|
||||
members.Members[i] = bridgev2.ChatMember{
|
||||
EventSender: s.makeEventSender(member.ACI),
|
||||
for _, member := range groupInfo.Members {
|
||||
evtSender := s.makeEventSender(member.ACI)
|
||||
members.MemberMap[evtSender.Sender] = bridgev2.ChatMember{
|
||||
EventSender: evtSender,
|
||||
PowerLevel: roleToPL(member.Role),
|
||||
Membership: event.MembershipJoin,
|
||||
}
|
||||
|
@ -125,27 +127,30 @@ func (s *SignalClient) getGroupInfo(ctx context.Context, groupID types.GroupIden
|
|||
if aci == nil {
|
||||
continue
|
||||
}
|
||||
members.Members = append(members.Members, bridgev2.ChatMember{
|
||||
EventSender: s.makeEventSender(*aci),
|
||||
evtSender := s.makeEventSender(*aci)
|
||||
members.MemberMap[evtSender.Sender] = bridgev2.ChatMember{
|
||||
EventSender: evtSender,
|
||||
PowerLevel: roleToPL(member.Role),
|
||||
Membership: event.MembershipInvite,
|
||||
})
|
||||
}
|
||||
}
|
||||
for _, member := range groupInfo.RequestingMembers {
|
||||
members.Members = append(members.Members, bridgev2.ChatMember{
|
||||
EventSender: s.makeEventSender(member.ACI),
|
||||
evtSender := s.makeEventSender(member.ACI)
|
||||
members.MemberMap[evtSender.Sender] = bridgev2.ChatMember{
|
||||
EventSender: evtSender,
|
||||
Membership: event.MembershipKnock,
|
||||
})
|
||||
}
|
||||
}
|
||||
for _, member := range groupInfo.BannedMembers {
|
||||
aci := s.maybeResolvePNItoACI(ctx, &member.ServiceID)
|
||||
if aci == nil {
|
||||
continue
|
||||
}
|
||||
members.Members = append(members.Members, bridgev2.ChatMember{
|
||||
EventSender: s.makeEventSender(*aci),
|
||||
evtSender := s.makeEventSender(*aci)
|
||||
members.MemberMap[evtSender.Sender] = bridgev2.ChatMember{
|
||||
EventSender: evtSender,
|
||||
Membership: event.MembershipBan,
|
||||
})
|
||||
}
|
||||
}
|
||||
return &bridgev2.ChatInfo{
|
||||
Name: &groupInfo.Title,
|
||||
|
@ -203,11 +208,11 @@ func (s *SignalClient) groupChangeToChatInfoChange(ctx context.Context, rev uint
|
|||
}
|
||||
}
|
||||
|
||||
var pls *bridgev2.PowerLevelChanges
|
||||
var pls *bridgev2.PowerLevelOverrides
|
||||
if groupChange.ModifyAnnouncementsOnly != nil ||
|
||||
groupChange.ModifyAttributesAccess != nil ||
|
||||
groupChange.ModifyMemberAccess != nil {
|
||||
pls = &bridgev2.PowerLevelChanges{Events: make(map[event.Type]int)}
|
||||
pls = &bridgev2.PowerLevelOverrides{Events: make(map[event.Type]int)}
|
||||
if groupChange.ModifyAnnouncementsOnly != nil {
|
||||
applyAnnouncementsOnly(pls, *groupChange.ModifyAnnouncementsOnly)
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue