fix handle friend request issue

This commit is contained in:
imndx
2020-02-25 10:57:23 +08:00
parent a1b4eca6f2
commit c3ae7cb0a7
2 changed files with 18 additions and 17 deletions
@@ -28,7 +28,7 @@ public class HandleFriendRequestHandler extends IMHandler<WFCMessage.HandleFrien
long[] heads = new long[2];
ErrorCode errorCode = m_messagesStore.handleFriendRequest(fromUser, request, builder, heads, isAdmin);
if (errorCode == ERROR_CODE_SUCCESS && !isAdmin) {
if (errorCode == ERROR_CODE_SUCCESS && !isAdmin && builder.getConversation() != null) {
long messageId = MessageShardingUtil.generateId();
long timestamp = System.currentTimeMillis();
builder.setMessageId(messageId);
@@ -1294,7 +1294,7 @@ public class MemoryMessagesStore implements IMessagesStore {
if (members == null || members.size() == 0) {
members = loadGroupMemberFromDB(hzInstance, groupId);
}
boolean isInGroup = false;
for (WFCMessage.GroupMember member : members) {
if (member.getMemberId().equals(memberId)) {
@@ -2099,26 +2099,27 @@ public class MemoryMessagesStore implements IMessagesStore {
if (mFriendRequestExpiration > 0 && System.currentTimeMillis() - existRequest.getUpdateDt() > mFriendRequestExpiration) {
return ErrorCode.ERROR_CODE_FRIEND_REQUEST_EXPIRED;
} else {
existRequest = existRequest.toBuilder().setStatus(ProtoConstants.FriendRequestStatus.RequestStatus_Accepted).setUpdateDt(System.currentTimeMillis()).build();
existRequest = existRequest.toBuilder().setStatus(request.getStatus()).setUpdateDt(System.currentTimeMillis()).build();
databaseStore.persistOrUpdateFriendRequest(existRequest);
MultiMap<String, FriendData> friendsMap = hzInstance.getMultiMap(USER_FRIENDS);
if(request.getStatus() == ProtoConstants.FriendRequestStatus.RequestStatus_Accepted){
MultiMap<String, FriendData> friendsMap = hzInstance.getMultiMap(USER_FRIENDS);
FriendData friendData1 = new FriendData(userId, request.getTargetUid(), "", request.getStatus(), 0, System.currentTimeMillis());
databaseStore.persistOrUpdateFriendData(friendData1);
FriendData friendData1 = new FriendData(userId, request.getTargetUid(), "", 0, 0, System.currentTimeMillis());
databaseStore.persistOrUpdateFriendData(friendData1);
FriendData friendData2 = new FriendData(request.getTargetUid(), userId, "", request.getStatus(), 0, friendData1.getTimestamp());
databaseStore.persistOrUpdateFriendData(friendData2);
FriendData friendData2 = new FriendData(request.getTargetUid(), userId, "", 0, 0, friendData1.getTimestamp());
databaseStore.persistOrUpdateFriendData(friendData2);
requestMap.remove(userId);
requestMap.remove(request.getTargetUid());
friendsMap.remove(userId);
friendsMap.remove(request.getTargetUid());
requestMap.remove(userId);
requestMap.remove(request.getTargetUid());
friendsMap.remove(userId);
friendsMap.remove(request.getTargetUid());
heads[0] = friendData2.getTimestamp();
heads[1] = friendData1.getTimestamp();
heads[0] = friendData2.getTimestamp();
heads[1] = friendData1.getTimestamp();
msgBuilder.setConversation(WFCMessage.Conversation.newBuilder().setTarget(userId).setLine(0).setType(ProtoConstants.ConversationType.ConversationType_Private).build());
msgBuilder.setContent(WFCMessage.MessageContent.newBuilder().setType(1).setSearchableContent(existRequest.getReason()).build());
msgBuilder.setConversation(WFCMessage.Conversation.newBuilder().setTarget(userId).setLine(0).setType(ProtoConstants.ConversationType.ConversationType_Private).build());
msgBuilder.setContent(WFCMessage.MessageContent.newBuilder().setType(1).setSearchableContent(existRequest.getReason()).build());
}
return ErrorCode.ERROR_CODE_SUCCESS;
}
} else {