MR-3: Bunch of fixes

This commit is contained in:
Mind Rapist
2025-12-25 08:45:03 +02:00
parent b2931f0f7d
commit a91d49f440
11 changed files with 200 additions and 77 deletions

View File

@@ -409,13 +409,13 @@ void MessengerManager::EraseRequestsForAccount(keyA account)
std::vector<DWORD> toRemove;
auto itFrom = m_map_requestsFrom.find(dw);
// auto itFrom = m_map_requestsFrom.find(dw);
if (itFrom != m_map_requestsFrom.end())
{
for (DWORD c : itFrom->second)
toRemove.push_back(c);
}
// if (itFrom != m_map_requestsFrom.end())
// {
// for (DWORD c : itFrom->second)
// toRemove.push_back(c);
// }
auto itTo = m_map_requestsTo.find(dw);
@@ -510,19 +510,14 @@ void MessengerManager::AddToList(MessengerManager::keyA account, MessengerManage
P2P_MANAGER::instance().Send(&p2ppck, sizeof(TPacketGGMessenger));
}
void MessengerManager::__RemoveFromList(MessengerManager::keyA account, MessengerManager::keyA companion, bool isRequester)
// MR-3: Remove from messenger Fix
void MessengerManager::__RemoveFromList(MessengerManager::keyA account, MessengerManager::keyA companion)
{
m_Relation[account].erase(companion);
m_InverseRelation[companion].erase(account);
m_Relation[companion].erase(account);
m_InverseRelation[account].erase(companion);
LPCHARACTER ch = CHARACTER_MANAGER::instance().FindPC(account.c_str());
LPDESC d = ch ? ch->GetDesc() : NULL;
if (d && isRequester)
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<메신져> %s 님을 메신저에서 삭제하였습니다."), companion.c_str());
LPCHARACTER tch = CHARACTER_MANAGER::Instance().FindPC(companion.c_str());
if (tch && tch->GetDesc())
@@ -539,6 +534,7 @@ void MessengerManager::__RemoveFromList(MessengerManager::keyA account, Messenge
tch->GetDesc()->Packet(account.c_str(), account.size());
}
}
// MR-3: -- END OF -- Remove from messenger Fix
bool MessengerManager::IsInList(MessengerManager::keyA account, MessengerManager::keyA companion) // Fix
{
@@ -551,7 +547,7 @@ bool MessengerManager::IsInList(MessengerManager::keyA account, MessengerManager
return m_Relation[account].find(companion) != m_Relation[account].end();
}
void MessengerManager::RemoveFromList(MessengerManager::keyA account, MessengerManager::keyA companion)
void MessengerManager::RemoveFromList(MessengerManager::keyA account, MessengerManager::keyA companion, bool isRequester)
{
if (companion.empty())
return;
@@ -559,9 +555,6 @@ void MessengerManager::RemoveFromList(MessengerManager::keyA account, MessengerM
if (companion.size() == 0)
return;
if (!IsInList(account, companion)) // Fix
return;
DBManager::instance().EscapeString(__account, sizeof(__account), account.c_str(), account.size());
DBManager::instance().EscapeString(__companion, sizeof(__companion), companion.c_str(), companion.size());
@@ -574,6 +567,14 @@ void MessengerManager::RemoveFromList(MessengerManager::keyA account, MessengerM
DBManager::instance().Query("DELETE FROM messenger_list%s WHERE (account='%s' AND companion = '%s') OR (account = '%s' AND companion = '%s')",
get_table_postfix(), account.c_str(), companion.c_str(), companion.c_str(), account.c_str());
// MR-3: Remove from messenger Fix
LPCHARACTER ch = CHARACTER_MANAGER::instance().FindPC(account.c_str());
LPDESC d = ch ? ch->GetDesc() : NULL;
if (d && isRequester)
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<메신져> %s 님을 메신저에서 삭제하였습니다."), companion.c_str());
// MR-3: -- END OF -- Remove from messenger Fix
__RemoveFromList(account, companion);
TPacketGGMessenger p2ppck;
@@ -602,8 +603,10 @@ void MessengerManager::RemoveAllList(keyA account)
iter != company.end();
iter++ )
{
this->RemoveFromList(account, *iter);
this->RemoveFromList(*iter, account);
// MR-3: Remove from messenger Fix
this->RemoveFromList(account, *iter, false);
this->RemoveFromList(*iter, account, false);
// MR-3: -- END OF -- Remove from messenger Fix
}
/* 복사한 데이타 삭제 */