This commit is contained in:
aozhiwei 2020-06-23 14:25:39 +08:00
parent 80f6613e86
commit 5e5eba196d
2 changed files with 8 additions and 5 deletions

View File

@ -325,7 +325,7 @@ void Player::_CMFriendDelete(f8::MsgHdr& hdr, const cs::CMFriendDelete& msg)
cs::SMFriendDelete respmsg;
Friend* p = GetFriendById(msg.friend_id());
if (p) {
RemoveFriend(p->base_data.account_id);
RemoveFriend(p->base_data.account_id, true);
}
respmsg.set_friend_id(msg.friend_id());
SendMsg(respmsg);
@ -524,6 +524,7 @@ void Player::_SS_IM_FriendAgreeRequest(f8::MsgHdr& hdr, const ss::SS_IM_FriendAg
void Player::_SS_IM_FriendDeleteRequest(f8::MsgHdr& hdr, const ss::SS_IM_FriendDeleteRequest& msg)
{
if (GetFriendById(msg.context().user_info().base_data().account_id())) {
RemoveFriend(msg.context().user_info().base_data().account_id(), false);
}
f8::MsgHdr* hdr_copy = hdr.Clone();
ss::SS_IM_FriendDeleteRequest* msg_copy = new ss::SS_IM_FriendDeleteRequest;
@ -804,7 +805,7 @@ int Player::AddFriend(Friend* friendobj)
return -1;
}
void Player::RemoveFriend(const std::string& account_id)
void Player::RemoveFriend(const std::string& account_id, bool need_sync)
{
Friend* friendobj = GetFriendById(account_id);
if (friendobj) {
@ -813,7 +814,9 @@ void Player::RemoveFriend(const std::string& account_id)
notifymsg.add_user_list(account_id);
SendMsg(notifymsg);
}
SyncHelper::Instance()->SyncDeleteFriend(this, friendobj->base_data.account_id);
if (need_sync) {
SyncHelper::Instance()->SyncDeleteFriend(this, friendobj->base_data.account_id);
}
PlayerMgr::Instance()->UnWatchPlayer(friendobj);
friend_hash_.erase(account_id);
delete friendobj;
@ -1030,7 +1033,7 @@ void Player::OnFriendDeleteEvent(Event& event)
if (!GetFriendById(event.sender_id)) {
return;
}
RemoveFriend(event.sender_id);
RemoveFriend(event.sender_id, false);
}
bool Player::CanAddFriend(const std::string& account_id)

View File

@ -119,7 +119,7 @@ private:
::google::protobuf::Message& msg);
void InternalUpdateUserInfo();
int AddFriend(Friend* friendobj);
void RemoveFriend(const std::string& account_id);
void RemoveFriend(const std::string& account_id, bool need_sync);
void PushFriendList();
void SyncOtherFriend();
void ProcessEventTimerFunc();