diff options
Diffstat (limited to 'include/Channel.hpp')
-rw-r--r-- | include/Channel.hpp | 103 |
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; - }; -} |