summaryrefslogtreecommitdiff
path: root/internal/server/api/api.go
diff options
context:
space:
mode:
authorKyren223 <Kyren223@proton.me>2025-01-21 17:40:19 +0200
committerKyren223 <Kyren223@proton.me>2025-01-21 17:40:19 +0200
commitad58adeeb296b39d68fcfdffed99f84dd74d251e (patch)
tree5023624ae948ace7322ff8f417d47bd356769551 /internal/server/api/api.go
parenta91411fde4911f6cef62bbc05d17638d08839389 (diff)
Fixed a bug where when kicking a member, it'd send a left request to the
person who is kicking and not to the person who was kicked
Diffstat (limited to 'internal/server/api/api.go')
-rw-r--r--internal/server/api/api.go13
1 files changed, 11 insertions, 2 deletions
diff --git a/internal/server/api/api.go b/internal/server/api/api.go
index e52372b..2d70174 100644
--- a/internal/server/api/api.go
+++ b/internal/server/api/api.go
@@ -615,18 +615,27 @@ func SetMember(ctx context.Context, sess *session.Session, request *packet.SetMe
}
if !newMember.IsMember {
- NetworkPropagate(ctx, sess, request.Network, &packet.MembersInfo{
+ membersInfoPayload := NetworkPropagateWithFilter(ctx, sess, request.Network, &packet.MembersInfo{
RemovedMembers: []snowflake.ID{newMember.UserID},
Members: nil,
Users: nil,
Network: request.Network,
+ }, func(userId snowflake.ID) (pass bool) {
+ return userId != newMember.UserID
})
- return &packet.NetworksInfo{
+ networksInfoPayload := &packet.NetworksInfo{
Networks: nil,
RemovedNetworks: []snowflake.ID{request.Network},
Partial: false,
}
+
+ if newMember.UserID == sess.ID() {
+ return networksInfoPayload
+ } else {
+ UserPropagate(ctx, sess, newMember.UserID, networksInfoPayload)
+ return membersInfoPayload
+ }
}
user, err := queries.GetUserById(ctx, newMember.UserID)