fix(emoji): use flags over strings for capabilities (#5616)
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
#include "messages/Emote.hpp"
|
||||
#include "messages/Image.hpp"
|
||||
#include "singletons/Settings.hpp"
|
||||
#include "util/QMagicEnum.hpp"
|
||||
#include "util/RapidjsonHelpers.hpp"
|
||||
|
||||
#include <boost/variant.hpp>
|
||||
@@ -62,19 +63,19 @@ void parseEmoji(const std::shared_ptr<EmojiData> &emojiData,
|
||||
|
||||
if (capabilities.apple)
|
||||
{
|
||||
emojiData->capabilities.insert("Apple");
|
||||
emojiData->capabilities.set(EmojiData::Capability::Apple);
|
||||
}
|
||||
if (capabilities.google)
|
||||
{
|
||||
emojiData->capabilities.insert("Google");
|
||||
emojiData->capabilities.set(EmojiData::Capability::Google);
|
||||
}
|
||||
if (capabilities.twitter)
|
||||
{
|
||||
emojiData->capabilities.insert("Twitter");
|
||||
emojiData->capabilities.set(EmojiData::Capability::Twitter);
|
||||
}
|
||||
if (capabilities.facebook)
|
||||
{
|
||||
emojiData->capabilities.insert("Facebook");
|
||||
emojiData->capabilities.set(EmojiData::Capability::Facebook);
|
||||
}
|
||||
|
||||
QStringList unicodeCharacters = emojiData->unifiedCode.toLower().split('-');
|
||||
@@ -244,6 +245,10 @@ void Emojis::sortEmojis()
|
||||
void Emojis::loadEmojiSet()
|
||||
{
|
||||
getSettings()->emojiSet.connect([this](const auto &emojiSet) {
|
||||
EmojiData::Capability setCapability =
|
||||
qmagicenum::enumCast<EmojiData::Capability>(emojiSet).value_or(
|
||||
EmojiData::Capability::Google);
|
||||
|
||||
for (const auto &emoji : this->emojis)
|
||||
{
|
||||
QString emojiSetToUse = emojiSet;
|
||||
@@ -271,9 +276,9 @@ void Emojis::loadEmojiSet()
|
||||
// clang-format on
|
||||
|
||||
// As of emoji-data v15.1.1, google is the only source missing no images.
|
||||
if (!emoji->capabilities.contains(emojiSetToUse))
|
||||
if (!emoji->capabilities.has(setCapability))
|
||||
{
|
||||
emojiSetToUse = "Google";
|
||||
emojiSetToUse = QStringLiteral("Google");
|
||||
}
|
||||
|
||||
QString code = emoji->unifiedCode.toLower();
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
#pragma once
|
||||
|
||||
#include "common/FlagsEnum.hpp"
|
||||
|
||||
#include <boost/variant.hpp>
|
||||
#include <QMap>
|
||||
#include <QRegularExpression>
|
||||
#include <QVector>
|
||||
|
||||
#include <memory>
|
||||
#include <set>
|
||||
#include <vector>
|
||||
|
||||
namespace chatterino {
|
||||
@@ -29,7 +30,15 @@ struct EmojiData {
|
||||
// i.e. thinking
|
||||
std::vector<QString> shortCodes;
|
||||
|
||||
std::set<QString> capabilities;
|
||||
enum class Capability : uint8_t {
|
||||
Apple = 1 << 0,
|
||||
Google = 1 << 1,
|
||||
Twitter = 1 << 2,
|
||||
Facebook = 1 << 3,
|
||||
};
|
||||
using Capabilities = FlagsEnum<Capability>;
|
||||
|
||||
Capabilities capabilities;
|
||||
|
||||
std::vector<EmojiData> variations;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user