fix: solve user not found when notification invitedUserID is zero in InviteUserToGroup. (#3375)

This commit is contained in:
Monet Lee 2025-05-22 14:21:44 +08:00 committed by GitHub
parent 748d783d36
commit 8b23d4f5bb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -379,9 +379,9 @@ func (g *groupServer) InviteUserToGroup(ctx context.Context, req *pbgroup.Invite
} }
var groupMember *model.GroupMember var groupMember *model.GroupMember
var opUserID string opUserID := mcontext.GetOpUserID(ctx)
if !authverify.IsAdmin(ctx) { if !authverify.IsAdmin(ctx) {
opUserID = mcontext.GetOpUserID(ctx)
var err error var err error
groupMember, err = g.db.TakeGroupMember(ctx, req.GroupID, opUserID) groupMember, err = g.db.TakeGroupMember(ctx, req.GroupID, opUserID)
if err != nil { if err != nil {
@ -390,8 +390,6 @@ func (g *groupServer) InviteUserToGroup(ctx context.Context, req *pbgroup.Invite
if err := g.PopulateGroupMember(ctx, groupMember); err != nil { if err := g.PopulateGroupMember(ctx, groupMember); err != nil {
return nil, err return nil, err
} }
} else {
opUserID = mcontext.GetOpUserID(ctx)
} }
if err := g.webhookBeforeInviteUserToGroup(ctx, &g.config.WebhooksConfig.BeforeInviteUserToGroup, req); err != nil && err != servererrs.ErrCallbackContinue { if err := g.webhookBeforeInviteUserToGroup(ctx, &g.config.WebhooksConfig.BeforeInviteUserToGroup, req); err != nil && err != servererrs.ErrCallbackContinue {
@ -450,10 +448,7 @@ func (g *groupServer) InviteUserToGroup(ctx context.Context, req *pbgroup.Invite
const singleQuantity = 50 const singleQuantity = 50
for start := 0; start < len(groupMembers); start += singleQuantity { for start := 0; start < len(groupMembers); start += singleQuantity {
end := start + singleQuantity end := min(start+singleQuantity, len(groupMembers))
if end > len(groupMembers) {
end = len(groupMembers)
}
currentMembers := groupMembers[start:end] currentMembers := groupMembers[start:end]
if err := g.db.CreateGroup(ctx, nil, currentMembers); err != nil { if err := g.db.CreateGroup(ctx, nil, currentMembers); err != nil {
@ -464,8 +459,8 @@ func (g *groupServer) InviteUserToGroup(ctx context.Context, req *pbgroup.Invite
return e.UserID return e.UserID
}) })
if err = g.notification.GroupApplicationAgreeMemberEnterNotification(ctx, req.GroupID, req.SendMessage, opUserID, userIDs...); err != nil { if len(userIDs) != 0 {
return nil, err g.notification.GroupApplicationAgreeMemberEnterNotification(ctx, req.GroupID, req.SendMessage, opUserID, userIDs...)
} }
} }
return &pbgroup.InviteUserToGroupResp{}, nil return &pbgroup.InviteUserToGroupResp{}, nil