diff options
Diffstat (limited to 'bridge/DiscordService.cpp')
-rw-r--r-- | bridge/DiscordService.cpp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/bridge/DiscordService.cpp b/bridge/DiscordService.cpp new file mode 100644 index 0000000..a4546a8 --- /dev/null +++ b/bridge/DiscordService.cpp @@ -0,0 +1,43 @@ +#include "DiscordService.hpp" + +namespace dchat +{ + DiscordServiceUser::DiscordServiceUser(const std::string &name, const u64 _id, bool _connected) : + BridgeServiceUser(Type::DISCORD, name), + id(_id), + connected(_connected) + { + + } + + bool DiscordServiceUser::equals(BridgeServiceUser *other) const + { + return other && type == other->type && id == static_cast<DiscordServiceUser*>(other)->id; + } + + bool DiscordService::removeUser(u64 discordUserId) + { + for(auto it = users.begin(), end = users.end(); it != end; ++it) + { + BridgeServiceUser *serviceUser = static_cast<BridgeServiceUser*>(*it); + if(serviceUser->type == BridgeServiceUser::Type::DISCORD && static_cast<DiscordServiceUser*>(serviceUser)->id == discordUserId) + { + delete serviceUser; + users.erase(it); + return true; + } + } + return false; + } + + DiscordServiceUser* DiscordService::getUserById(u64 discordUserId) + { + for(User *user : users) + { + BridgeServiceUser *serviceUser = static_cast<BridgeServiceUser*>(user); + if(serviceUser->type == BridgeServiceUser::Type::DISCORD && static_cast<DiscordServiceUser*>(serviceUser)->id == discordUserId) + return static_cast<DiscordServiceUser*>(serviceUser); + } + return nullptr; + } +}
\ No newline at end of file |