<commit_before>#pragma once

#include "concurrentmap.hpp"
#include "emotemanager.hpp"
#include "logging/loggingchannel.hpp"
#include "messages/lazyloadedimage.hpp"
#include "messages/limitedqueue.hpp"

#include <QMap>
#include <QMutex>
#include <QString>
#include <QVector>
#include <boost/signals2.hpp>

#include <memory>
#include <set>

namespace chatterino {
namespace messages {
class Message;
}

class Channel
{
public:
    explicit Channel(const QString &_name);

    boost::signals2::signal<void(messages::SharedMessage &)> messageRemovedFromStart;
    boost::signals2::signal<void(messages::SharedMessage &)> messageAppended;

    virtual bool isEmpty() const;
    messages::LimitedQueueSnapshot<messages::SharedMessage> getMessageSnapshot();

    void addMessage(messages::SharedMessage message);
    void addRecentChatter(const std::shared_ptr<messages::Message> &message);

    struct NameOptions {
        QString displayName;
        QString localizedName;
    };

    std::vector<NameOptions> getUsernamesForCompletions();

    QString name;
    QStringList modList;

    // Key = login name
    std::map<QString, NameOptions> recentChatters;
    std::mutex recentChattersMutex;

    virtual bool canSendMessage() const;
    virtual void sendMessage(const QString &message);

    bool dontAddMessages;

private:
    messages::LimitedQueue<messages::SharedMessage> messages;

    // std::shared_ptr<logging::Channel> loggingChannel;
};

}  // namespace chatterino
<commit_msg>fixed the emote popup not showing anything<commit_after>#pragma once

#include "concurrentmap.hpp"
#include "emotemanager.hpp"
#include "logging/loggingchannel.hpp"
#include "messages/lazyloadedimage.hpp"
#include "messages/limitedqueue.hpp"

#include <QMap>
#include <QMutex>
#include <QString>
#include <QVector>
#include <boost/signals2.hpp>

#include <memory>
#include <set>

namespace chatterino {
namespace messages {
class Message;
}

class Channel
{
public:
    explicit Channel(const QString &_name);

    boost::signals2::signal<void(messages::SharedMessage &)> messageRemovedFromStart;
    boost::signals2::signal<void(messages::SharedMessage &)> messageAppended;

    virtual bool isEmpty() const;
    messages::LimitedQueueSnapshot<messages::SharedMessage> getMessageSnapshot();

    void addMessage(messages::SharedMessage message);
    void addRecentChatter(const std::shared_ptr<messages::Message> &message);

    struct NameOptions {
        QString displayName;
        QString localizedName;
    };

    std::vector<NameOptions> getUsernamesForCompletions();

    QString name;
    QStringList modList;

    // Key = login name
    std::map<QString, NameOptions> recentChatters;
    std::mutex recentChattersMutex;

    virtual bool canSendMessage() const;
    virtual void sendMessage(const QString &message);

    bool dontAddMessages = false;

private:
    messages::LimitedQueue<messages::SharedMessage> messages;

    // std::shared_ptr<logging::Channel> loggingChannel;
};

}  // namespace chatterino

{'fraction_non_alphanumeric': 0.1111111111111111, 'fraction_numerical': 0.001990049751243781, 'mean_word_length': 5.218556701030928, 'pattern_counts': {'":': 0, '<': 33, '<?xml version=': 0, '>': 33, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2306233', 'n_tokens_mistral': 883, 'n_tokens_neox': 873, 'n_words': 195}