diff --git a/src/messageeventmodel.cpp b/src/messageeventmodel.cpp index 36c4022f8..f48cbdffe 100644 --- a/src/messageeventmodel.cpp +++ b/src/messageeventmodel.cpp @@ -99,6 +99,37 @@ void MessageEventModel::setRoom(NeoChatRoom *room) using namespace Quotient; connect(m_currentRoom, &Room::aboutToAddNewMessages, this, [=](RoomEventsRange events) { + for (auto &event : events) { + RoomMessageEvent *message = dynamic_cast(event.get()); + if (message) { + QString planBody = message->plainBody(); + // snowflake + QString snowlakeEmoji = QString::fromUtf8("\xE2\x9D\x84"); + if (planBody.contains(snowlakeEmoji)) { + Q_EMIT fancyEffectsReasonFound(QStringLiteral("snowflake")); + } + // fireworks + QString fireworksEmoji = QString::fromUtf8("\xF0\x9F\x8E\x86"); + if (planBody.contains(fireworksEmoji)) { + Q_EMIT fancyEffectsReasonFound(QStringLiteral("fireworks")); + } + // sparkler + QString sparklerEmoji = QString::fromUtf8("\xF0\x9F\x8E\x87"); + if (planBody.contains(sparklerEmoji)) { + Q_EMIT fancyEffectsReasonFound(QStringLiteral("fireworks")); + } + // party pooper + QString partyEmoji = QString::fromUtf8("\xF0\x9F\x8E\x89"); + if (planBody.contains(partyEmoji)) { + Q_EMIT fancyEffectsReasonFound(QStringLiteral("confetti")); + } + // confetti ball + QString confettiEmoji = QString::fromUtf8("\xF0\x9F\x8E\x8A"); + if (planBody.contains(confettiEmoji)) { + Q_EMIT fancyEffectsReasonFound(QStringLiteral("confetti")); + } + } + } beginInsertRows({}, timelineBaseIndex(), timelineBaseIndex() + int(events.size()) - 1); }); connect(m_currentRoom, &Room::aboutToAddHistoricalMessages, this, [=](RoomEventsRange events) { diff --git a/src/messageeventmodel.h b/src/messageeventmodel.h index e1db33d4c..f49b5dea2 100644 --- a/src/messageeventmodel.h +++ b/src/messageeventmodel.h @@ -89,4 +89,5 @@ private: Q_SIGNALS: void roomChanged(); + void fancyEffectsReasonFound(const QString &fancyEffect); };