#include "../include/User.hpp" #include namespace dchat { const static std::string SYSTEM_USER_NAME = "System"; const i64 USER_TIMEOUT_SEC = 25; User::User(Type _type) : type(_type) { } OnlineUser::OnlineUser(const std::string &_name, Type type) : User(type), name(_name), pingTimestampSec(0) { } const std::string& OnlineUser::getName() const { return name; } bool OnlineUser::isConnected(i64 timestampUtcSec) const { i64 pingTimeDiffSec = timestampUtcSec - (i64)pingTimestampSec; return pingTimeDiffSec <= USER_TIMEOUT_SEC; } OnlineRemoteUser::OnlineRemoteUser(const std::string &name, const odhtdb::Signature::PublicKey &_publicKey) : OnlineUser(name, Type::ONLINE_REMOTE_USER), publicKey(_publicKey) { } const odhtdb::Signature::PublicKey& OnlineRemoteUser::getPublicKey() const { return publicKey; } OnlineLocalUser::OnlineLocalUser(const std::string &name, const odhtdb::Signature::KeyPair &_keyPair) : OnlineUser(name, Type::ONLINE_LOCAL_USER), keyPair(_keyPair) { } const odhtdb::Signature::PublicKey& OnlineLocalUser::getPublicKey() const { return keyPair.getPublicKey(); } OnlineDiscordUser::OnlineDiscordUser(const std::string &discordUserName, u64 _discordUserId, User *_bridgeOwner) : OnlineUser(discordUserName, Type::ONLINE_DISCORD_USER), discordUserId(_discordUserId), bridgeOwner(_bridgeOwner) { assert(bridgeOwner); } const odhtdb::Signature::PublicKey& OnlineDiscordUser::getPublicKey() const { return odhtdb::Signature::PublicKey::ZERO; } OfflineUser::OfflineUser(const std::string &_name) : User(Type::OFFLINE), name(_name) { } const std::string& OfflineUser::getName() const { return name; } SystemUser::SystemUser() : User(Type::SYSTEM) { } const std::string& SystemUser::getName() const { return SYSTEM_USER_NAME; } }