#ifndef IRC_CLI_GROUP_CHAT_H #define IRC_CLI_GROUP_CHAT_H #include #include #include namespace messaging { class Group; class Interface; } namespace irc { // Handy fw declarations class GroupManager; class IRC_PUBLIC GroupChat : public Chat { public: /// @brief Creates a new instance translating the given recipient to a user. static std::shared_ptr create(const std::shared_ptr &group, const std::shared_ptr& observer, irc_session_t *session); /// @brief send_message enqueues the given message for delivery. /// @returns a numeric identifier referencing back to the delivery request. /// @throws std::runtime_error in case of issues. std::string send_message(const messaging::Message& message) override; void mark_message_as_read(const std::string& message_token) override; void start_typing() override; void end_typing() override; void mark_message_as_delivered(const std::string& message_token); std::string id(); private: /// @brief Creates a new instance translating the given recipient to a user. GroupChat(const std::shared_ptr &group, const std::shared_ptr& observer, irc_session_t *session); irc_session_t *irc_session; std::string channel_id; }; } #endif // IRC_CLI_GROUP_CHAT_H