aboutsummaryrefslogtreecommitdiff
path: root/bridge/DiscordService.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'bridge/DiscordService.cpp')
-rw-r--r--bridge/DiscordService.cpp43
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