diff --git a/Client/src/ClientManager/ClientManager.cpp b/Client/src/ClientManager/ClientManager.cpp index c48dac3..58a10ea 100644 --- a/Client/src/ClientManager/ClientManager.cpp +++ b/Client/src/ClientManager/ClientManager.cpp @@ -188,15 +188,27 @@ void ClientManager::processUsersListResponsePacket(UsersListResponsePacket users else userNames = std::unordered_map(); - auto promise = std::promise>(); - userNames_ = promise.get_future(); + auto userNamesPromise = std::promise>(); + userNames_ = userNamesPromise.get_future(); + + std::unordered_map findUserId; + + if (findUserId_.valid() && findUserId_.wait_for(std::chrono::seconds(0)) == std::future_status::ready) + findUserId = findUserId_.get(); + else + findUserId = std::unordered_map(); + + auto findUserIdPromise = std::promise>(); + findUserId_ = findUserIdPromise.get_future(); Snowflake userId; ::memcpy(&userId.snowflake, usersListResponsePacket.__data.userId, sizeof(Snowflake)); std::string userName((char*)usersListResponsePacket.__data.name, usersListResponsePacket.__data.packetLength - (sizeof(std::uint16_t) * 7)); userNames[userId] = userName; + findUserId[userName] = userId; - promise.set_value(userNames); + userNamesPromise.set_value(userNames); + findUserIdPromise.set_value(findUserId); spdlog::info("{}", userName); }