Skip to content

Commit 7d5e4a2

Browse files
authored
Merge pull request #3671 from withchao/3.8.3-patch
feat: add error code for handled friend requests and improve error handling in friend operations
2 parents 5f81f63 + 452e3b2 commit 7d5e4a2

File tree

3 files changed

+14
-14
lines changed

3 files changed

+14
-14
lines changed

pkg/common/servererrs/code.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ const (
6868
BlockedByPeer = 1302 // Blocked by the peer
6969
NotPeersFriend = 1303 // Not the peer's friend
7070
RelationshipAlreadyError = 1304 // Already in a friend relationship
71+
FriendRequestHandled = 1305 // Friend request has already been handled
7172

7273
// Message error codes.
7374
MessageHasReadDisable = 1401

pkg/common/servererrs/predefine.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,11 @@ var (
4949

5050
ErrMessageHasReadDisable = errs.NewCodeError(MessageHasReadDisable, "MessageHasReadDisable")
5151

52-
ErrCanNotAddYourself = errs.NewCodeError(CanNotAddYourselfError, "CanNotAddYourselfError")
53-
ErrBlockedByPeer = errs.NewCodeError(BlockedByPeer, "BlockedByPeer")
54-
ErrNotPeersFriend = errs.NewCodeError(NotPeersFriend, "NotPeersFriend")
55-
ErrRelationshipAlready = errs.NewCodeError(RelationshipAlreadyError, "RelationshipAlreadyError")
52+
ErrCanNotAddYourself = errs.NewCodeError(CanNotAddYourselfError, "CanNotAddYourselfError")
53+
ErrBlockedByPeer = errs.NewCodeError(BlockedByPeer, "BlockedByPeer")
54+
ErrNotPeersFriend = errs.NewCodeError(NotPeersFriend, "NotPeersFriend")
55+
ErrRelationshipAlready = errs.NewCodeError(RelationshipAlreadyError, "RelationshipAlreadyError")
56+
ErrFriendRequestHandled = errs.NewCodeError(FriendRequestHandled, "FriendRequestHandled")
5657

5758
ErrMutedInGroup = errs.NewCodeError(MutedInGroup, "MutedInGroup")
5859
ErrMutedGroup = errs.NewCodeError(MutedGroup, "MutedGroup")

pkg/common/storage/controller/friend.go

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ package controller
1616

1717
import (
1818
"context"
19-
"fmt"
2019
"time"
2120

21+
"github.com/openimsdk/open-im-server/v3/pkg/common/servererrs"
2222
"github.com/openimsdk/open-im-server/v3/pkg/common/storage/database"
2323
"github.com/openimsdk/open-im-server/v3/pkg/common/storage/database/mgo"
2424
"github.com/openimsdk/open-im-server/v3/pkg/common/storage/model"
@@ -109,15 +109,13 @@ func (f *friendDatabase) CheckIn(ctx context.Context, userID1, userID2 string) (
109109
// Retrieve friend IDs of userID1 from the cache
110110
userID1FriendIDs, err := f.cache.GetFriendIDs(ctx, userID1)
111111
if err != nil {
112-
err = fmt.Errorf("error retrieving friend IDs for user %s: %w", userID1, err)
113-
return
112+
return false, false, err
114113
}
115114

116115
// Retrieve friend IDs of userID2 from the cache
117116
userID2FriendIDs, err := f.cache.GetFriendIDs(ctx, userID2)
118117
if err != nil {
119-
err = fmt.Errorf("error retrieving friend IDs for user %s: %w", userID2, err)
120-
return
118+
return false, false, err
121119
}
122120

123121
// Check if userID2 is in userID1's friend list and vice versa
@@ -214,12 +212,12 @@ func (f *friendDatabase) RefuseFriendRequest(ctx context.Context, friendRequest
214212
// Attempt to retrieve the friend request from the database.
215213
fr, err := f.friendRequest.Take(ctx, friendRequest.FromUserID, friendRequest.ToUserID)
216214
if err != nil {
217-
return fmt.Errorf("failed to retrieve friend request from %s to %s: %w", friendRequest.FromUserID, friendRequest.ToUserID, err)
215+
return err
218216
}
219217

220218
// Check if the friend request has already been handled.
221219
if fr.HandleResult != 0 {
222-
return fmt.Errorf("friend request from %s to %s has already been processed", friendRequest.FromUserID, friendRequest.ToUserID)
220+
return servererrs.ErrFriendRequestHandled.WrapMsg("friend request has already been processed", "from", friendRequest.FromUserID, "to", friendRequest.ToUserID)
223221
}
224222

225223
// Log the action of refusing the friend request for debugging and auditing purposes.
@@ -232,7 +230,7 @@ func (f *friendDatabase) RefuseFriendRequest(ctx context.Context, friendRequest
232230
friendRequest.HandleResult = constant.FriendResponseRefuse
233231
friendRequest.HandleTime = time.Now()
234232
if err := f.friendRequest.Update(ctx, friendRequest); err != nil {
235-
return fmt.Errorf("failed to update friend request from %s to %s as refused: %w", friendRequest.FromUserID, friendRequest.ToUserID, err)
233+
return err
236234
}
237235

238236
return nil
@@ -350,9 +348,9 @@ func (f *friendDatabase) PageFriendRequestToMe(ctx context.Context, userID strin
350348
func (f *friendDatabase) FindFriendsWithError(ctx context.Context, ownerUserID string, friendUserIDs []string) (friends []*model.Friend, err error) {
351349
friends, err = f.friend.FindFriends(ctx, ownerUserID, friendUserIDs)
352350
if err != nil {
353-
return
351+
return nil, err
354352
}
355-
return
353+
return friends, nil
356354
}
357355

358356
func (f *friendDatabase) FindFriendUserIDs(ctx context.Context, ownerUserID string) (friendUserIDs []string, err error) {

0 commit comments

Comments
 (0)