Skip to content

Commit 78a7219

Browse files
committed
fix: MemberEnterNotification
1 parent 2644b59 commit 78a7219

File tree

2 files changed

+47
-3
lines changed

2 files changed

+47
-3
lines changed

internal/rpc/group/group.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -465,7 +465,7 @@ func (g *groupServer) InviteUserToGroup(ctx context.Context, req *pbgroup.Invite
465465
return nil, err
466466
}
467467

468-
if err = g.notification.MemberEnterNotification(ctx, req.GroupID, req.InvitedUserIDs...); err != nil {
468+
if err = g.notification.GroupApplicationAgreeMemberEnterNotification(ctx, req.GroupID, opUserID, req.InvitedUserIDs...); err != nil {
469469
return nil, err
470470
}
471471
return &pbgroup.InviteUserToGroupResp{}, nil

internal/rpc/group/notification.go

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import (
3838
"github.com/openimsdk/tools/utils/datautil"
3939
"github.com/openimsdk/tools/utils/stringutil"
4040
"go.mongodb.org/mongo-driver/mongo"
41+
"time"
4142
)
4243

4344
// GroupApplicationReceiver
@@ -572,8 +573,51 @@ func (g *GroupNotificationSender) GroupApplicationAgreeMemberEnterNotification(c
572573
return nil
573574
}
574575

575-
func (g *GroupNotificationSender) MemberEnterNotification(ctx context.Context, groupID string, entrantUserID ...string) error {
576-
return g.GroupApplicationAgreeMemberEnterNotification(ctx, groupID, "", entrantUserID...)
576+
func (g *GroupNotificationSender) MemberEnterNotification(ctx context.Context, groupID string, entrantUserID string) error {
577+
var err error
578+
defer func() {
579+
if err != nil {
580+
log.ZError(ctx, stringutil.GetFuncName(1)+" failed", err)
581+
}
582+
}()
583+
584+
if !g.config.RpcConfig.EnableHistoryForNewMembers {
585+
conversationID := msgprocessor.GetConversationIDBySessionType(constant.ReadGroupChatType, groupID)
586+
maxSeq, err := g.msgRpcClient.GetConversationMaxSeq(ctx, conversationID)
587+
if err != nil {
588+
return err
589+
}
590+
if _, err = g.msgRpcClient.SetUserConversationsMinSeq(ctx, &msg.SetUserConversationsMinSeqReq{
591+
UserIDs: []string{entrantUserID},
592+
ConversationID: conversationID,
593+
Seq: maxSeq,
594+
}); err != nil {
595+
return err
596+
}
597+
}
598+
599+
if err := g.conversationRpcClient.GroupChatFirstCreateConversation(ctx, groupID, []string{entrantUserID}); err != nil {
600+
return err
601+
}
602+
603+
var group *sdkws.GroupInfo
604+
group, err = g.getGroupInfo(ctx, groupID)
605+
if err != nil {
606+
return err
607+
}
608+
user, err := g.getGroupMember(ctx, groupID, entrantUserID)
609+
if err != nil {
610+
return err
611+
}
612+
613+
tips := &sdkws.MemberEnterTips{
614+
Group: group,
615+
EntrantUser: user,
616+
OperationTime: time.Now().UnixMilli(),
617+
}
618+
g.setVersion(ctx, &tips.GroupMemberVersion, &tips.GroupMemberVersionID, database.GroupMemberVersionName, tips.Group.GroupID)
619+
g.Notification(ctx, mcontext.GetOpUserID(ctx), group.GroupID, constant.MemberInvitedNotification, tips)
620+
return nil
577621
}
578622

579623
func (g *GroupNotificationSender) GroupDismissedNotification(ctx context.Context, tips *sdkws.GroupDismissedTips) {

0 commit comments

Comments
 (0)