diff options
author | dec05eba <dec05eba@protonmail.com> | 2018-08-08 23:17:10 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2018-08-08 23:17:14 +0200 |
commit | 06f30543730c372226c398c11b3de0213d711d13 (patch) | |
tree | d6229ff224a9e7e5457c856747c2f8726e7a3868 /bridge/DiscordService.cpp | |
parent | 26edc563cb0ba1a9fb35507e7f32d2d43a845e68 (diff) |
Add support for discord
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 |