// SPDX-FileCopyrightText: 2022 Tobias Fella // SPDX-License-Identifier: LGPL-2.0-or-later #include "pollevent.h" using namespace Quotient; PollKind::Kind PollStartEvent::kind() const { return content().kind; } int PollStartEvent::maxSelections() const { return content().maxSelection > 0 ? content().maxSelection : 1; } QString PollStartEvent::question() const { return content().question; } QList PollStartEvent::answers() const { return content().answers; } PollResponseEvent::PollResponseEvent(const QJsonObject &obj) : RoomEvent(obj) { } PollResponseEvent::PollResponseEvent(const QString &pollStartEventId, QStringList responses) : RoomEvent(basicJson(TypeId, {{"org.matrix.msc3381.poll.response"_L1, QJsonObject{{"answers"_L1, QJsonArray::fromStringList(responses)}}}, {"m.relates_to"_L1, QJsonObject{{"rel_type"_L1, "m.reference"_L1}, {"event_id"_L1, pollStartEventId}}}})) { } QStringList PollResponseEvent::selections() const { const auto jsonSelections = contentPart("org.matrix.msc3381.poll.response"_L1)["answers"_L1].toArray(); QStringList selections; for (const auto &selection : jsonSelections) { selections += selection.toString(); } return selections; } std::optional PollResponseEvent::relatesTo() const { return contentPart>(RelatesToKey); } PollEndEvent::PollEndEvent(const QJsonObject &obj) : RoomEvent(obj) { } PollEndEvent::PollEndEvent(const QString &pollStartEventId, const QString &endText) : RoomEvent(basicJson(TypeId, {{"org.matrix.msc1767.text"_L1, endText}, {"org.matrix.msc3381.poll.end"_L1, QJsonObject{}}, {"m.relates_to"_L1, QJsonObject{{"rel_type"_L1, "m.reference"_L1}, {"event_id"_L1, pollStartEventId}}}})) { } std::optional PollEndEvent::relatesTo() const { return contentPart>(RelatesToKey); }