1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-19 13:03:11 +01:00

remove user from users.json when kicked (#11)

This commit is contained in:
Ted John
2016-05-27 19:23:51 +01:00
committed by Michał Janiszewski
parent f08f2bef2c
commit 1b3331f584
3 changed files with 28 additions and 3 deletions

View File

@@ -42,6 +42,7 @@ NetworkUser * NetworkUser::FromJson(json_t * json)
if (!json_is_null(jsonGroupId)) {
user->GroupId = (uint8)json_integer_value(jsonGroupId);
}
user->Remove = false;
return user;
}
return user;
@@ -137,8 +138,19 @@ void NetworkUserManager::Save()
{
auto hashString = std::string(hash);
const NetworkUser * networkUser = GetUserByHash(hashString);
networkUser->ToJson(jsonUser);
savedHashes.insert(hashString);
if (networkUser != nullptr)
{
if (networkUser->Remove)
{
json_array_remove(jsonUsers, i);
i--;
}
else
{
networkUser->ToJson(jsonUser);
savedHashes.insert(hashString);
}
}
}
}
@@ -146,7 +158,7 @@ void NetworkUserManager::Save()
for (const auto &kvp : _usersByHash)
{
const NetworkUser * networkUser = kvp.second;
if (savedHashes.find(networkUser->Hash) == savedHashes.end())
if (!networkUser->Remove && savedHashes.find(networkUser->Hash) == savedHashes.end())
{
json_t * jsonUser = networkUser->ToJson();
json_array_append_new(jsonUsers, jsonUser);
@@ -170,6 +182,11 @@ void NetworkUserManager::UnsetUsersOfGroup(uint8 groupId)
}
}
void NetworkUserManager::RemoveUser(const std::string &hash)
{
_usersByHash[hash]->Remove = true;
}
NetworkUser * NetworkUserManager::GetUserByHash(const std::string &hash)
{
auto it = _usersByHash.find(hash);