@@ -2856,7 +2856,7 @@ public ErrorCode SyncFriendRequestUnread(String userId, long unreadDt, long[] he
28562856 public ErrorCode handleFriendRequest (String userId , WFCMessage .HandleFriendRequest request , WFCMessage .Message .Builder msgBuilder , long [] heads , boolean isAdmin ) {
28572857 HazelcastInstance hzInstance = m_Server .getHazelcastInstance ();
28582858
2859-
2859+ boolean alreadyFriend = false ;
28602860 if (!isAdmin && request .getStatus () == ProtoConstants .FriendRequestStatus .RequestStatus_Accepted ) {
28612861 MultiMap <String , FriendData > friendsMap = hzInstance .getMultiMap (USER_FRIENDS );
28622862
@@ -2868,10 +2868,9 @@ public ErrorCode handleFriendRequest(String userId, WFCMessage.HandleFriendReque
28682868 for (FriendData fd : friends ) {
28692869 if (fd .getFriendUid ().equals (request .getTargetUid ())) {
28702870 if (fd .getState () == 0 ) {
2871- return ErrorCode .ERROR_CODE_ALREADY_FRIENDS ;
2872- } else {
2873- break ;
2871+ alreadyFriend = true ;
28742872 }
2873+ break ;
28752874 }
28762875 }
28772876 }
@@ -2950,7 +2949,7 @@ public ErrorCode handleFriendRequest(String userId, WFCMessage.HandleFriendReque
29502949 }
29512950
29522951 if (existRequest != null ) {
2953- if (mFriendRequestExpiration > 0 && System .currentTimeMillis () - existRequest .getUpdateDt () > mFriendRequestExpiration ) {
2952+ if (! alreadyFriend && mFriendRequestExpiration > 0 && System .currentTimeMillis () - existRequest .getUpdateDt () > mFriendRequestExpiration ) {
29542953 return ErrorCode .ERROR_CODE_FRIEND_REQUEST_EXPIRED ;
29552954 } else {
29562955 existRequest = existRequest .toBuilder ().setStatus (request .getStatus ()).setUpdateDt (System .currentTimeMillis ()).build ();
@@ -2976,7 +2975,7 @@ public ErrorCode handleFriendRequest(String userId, WFCMessage.HandleFriendReque
29762975 }
29772976 }
29782977
2979- if (request .getStatus () == ProtoConstants .FriendRequestStatus .RequestStatus_Accepted ){
2978+ if (! alreadyFriend && request .getStatus () == ProtoConstants .FriendRequestStatus .RequestStatus_Accepted ){
29802979 MultiMap <String , FriendData > friendsMap = hzInstance .getMultiMap (USER_FRIENDS );
29812980 FriendData friendData1 = new FriendData (userId , request .getTargetUid (), "" , request .getExtra (), 0 , 0 , System .currentTimeMillis ());
29822981 databaseStore .persistOrUpdateFriendData (friendData1 );
@@ -2997,6 +2996,9 @@ public ErrorCode handleFriendRequest(String userId, WFCMessage.HandleFriendReque
29972996
29982997 callbackRelationEvent (userId , request .getTargetUid (), 0 , "1" );
29992998 }
2999+ if (alreadyFriend ) {
3000+ return ErrorCode .ERROR_CODE_ALREADY_FRIENDS ;
3001+ }
30003002 return ErrorCode .ERROR_CODE_SUCCESS ;
30013003 }
30023004 } else {
0 commit comments