#pragma once #include "common/Aliases.hpp" #include "common/Singleton.hpp" #include "util/QStringHash.hpp" #include #include #include #include #include #include #include namespace chatterino { struct Emote; using EmotePtr = std::shared_ptr; class FfzBadges : public Singleton { public: virtual void initialize(Settings &settings, Paths &paths) override; FfzBadges() = default; struct Badge { EmotePtr emote; QColor color; }; std::vector getUserBadges(const UserId &id); private: boost::optional getBadge(int badgeID); void load(); std::shared_mutex mutex_; // userBadges points a user ID to the list of badges they have std::unordered_map> userBadges; // badges points a badge ID to the information about the badge std::unordered_map badges; }; } // namespace chatterino