aboutsummaryrefslogtreecommitdiff
path: root/include/Channel.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/Channel.hpp')
-rw-r--r--include/Channel.hpp103
1 files changed, 0 insertions, 103 deletions
diff --git a/include/Channel.hpp b/include/Channel.hpp
deleted file mode 100644
index 58bbcc3..0000000
--- a/include/Channel.hpp
+++ /dev/null
@@ -1,103 +0,0 @@
-#pragma once
-
-#include "MessageBoard.hpp"
-#include "Chatbar.hpp"
-#include "User.hpp"
-#include "Channel.hpp"
-#include "types.hpp"
-#include "Suggestions.hpp"
-#include "../bridge/DiscordService.hpp"
-#include <vector>
-#include <unordered_map>
-#include <SFML/System/Clock.hpp>
-#include <odhtdb/DatabaseNode.hpp>
-#include <odhtdb/Signature.hpp>
-#include <odhtdb/Group.hpp>
-#include <odhtdb/Hash.hpp>
-#include <odhtdb/DhtKey.hpp>
-#include <odhtdb/Database.hpp>
-
-
-namespace dchat
-{
- enum class ChannelDataType : u8
- {
- ADD_MESSAGE,
- EDIT_MESSAGE,
- DELETE_MESSAGE,
- NICKNAME_CHANGE,
- CHANGE_AVATAR,
- CHANGE_CHANNEL_NAME,
- };
-
- class Channel
- {
- public:
- Channel(const std::string &name, const odhtdb::DatabaseNode &databaseNodeInfo = odhtdb::DatabaseNode(), User *localUser = nullptr, std::shared_ptr<odhtdb::Database> database = nullptr);
- virtual ~Channel();
- Channel(const Channel& other) = delete;
- Channel& operator = (const Channel &other) = delete;
-
- User* getLocalUser();
- SystemUser* getSystemUser();
- MessageBoard& getMessageBoard();
-
- const std::string& getName() const;
- const std::vector<User*>& getUsers() const;
- OnlineUser* getUserByPublicKey(const odhtdb::Signature::PublicKey &publicKey);
- const odhtdb::DatabaseNode& getNodeInfo() const;
- Message* getLatestMessage();
-
- // If timestamp is 0, then current time is used
- void addLocalMessage(const std::string &msg, User *owner, u64 timestampSeconds = 0);
- void addLocalMessage(const std::string &msg, User *owner, u64 timestampSeconds, const odhtdb::Hash &id);
- void addLocalDiscordMessage(const std::string &discordUserName, u64 discordUserId, const std::string &msg, User *owner, u64 timestampSeconds, const odhtdb::Hash &id);
- void addSystemMessage(const std::string &msg, bool plainText = true);
- void addMessage(const std::string &msg);
- void deleteLocalMessage(const odhtdb::Hash &id, const odhtdb::Signature::PublicKey &requestedByUser);
- void deleteMessage(const odhtdb::Hash &id, const odhtdb::Signature::PublicKey &requestedByUser);
-
- void addUserLocally(User *user);
- bool addUser(const odhtdb::Signature::PublicKey &userId, const odhtdb::DataView &groupId);
- void replaceLocalUser(OnlineLocalUser *newOnlineLocalUser);
- void changeNick(const std::string &newNick);
- void setAvatar(const std::string &newAvatarUrl);
- void setNameLocally(const std::string &name);
- void setName(const std::string &name);
-
- // Returns -1 on failure
- int getUserLowestPermissionLevel(OnlineUser *user) const;
-
- void processEvent(const sf::Event &event, Cache &cache);
- void draw(sf::RenderWindow &window, Cache &cache);
-
- void update();
- // Returns 0 if we are offline
- u32 getSyncedTimestampUtcInSec();
-
- const std::vector<BridgeService*>& getBridgeServices() const;
- DiscordService* getDiscordService();
-
- static void setCurrent(Channel *channel);
- static Channel* getCurrent();
- private:
- void sendPing(u32 pingTimestampSec);
- protected:
- std::shared_ptr<odhtdb::Database> database;
- odhtdb::DatabaseNode databaseNodeInfo;
- std::string name;
- MessageBoard messageBoard;
- Chatbar chatbar;
- Suggestions suggestions;
- User *localUser;
- SystemUser systemUser;
- std::vector<User*> users;
- std::unordered_map<u64, OnlineDiscordUser*> discordUserById;
- odhtdb::Signature::MapPublicKey<OnlineUser*> publicKeyOnlineUsersMap;
- odhtdb::InfoHash pingKey;
- sibs::ListenHandle pingListener;
- sf::Clock pingTimer;
-
- std::vector<BridgeService*> bridgeServices;
- };
-}