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:
committed by
Michał Janiszewski
parent
f08f2bef2c
commit
1b3331f584
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user