// SPDX-FileCopyrightText: 2019 Black Hat // SPDX-License-Identifier: LGPL-2.1-or-later #pragma once #include "stateevent.h" namespace Quotient { struct QUOTIENT_API PowerLevelsEventContent { struct Notifications { int room; }; explicit PowerLevelsEventContent(const QJsonObject& json); QJsonObject toJson() const; int invite; int kick; int ban; int redact; QHash events; int eventsDefault; int stateDefault; QHash users; int usersDefault; Notifications notifications; }; class QUOTIENT_API RoomPowerLevelsEvent : public StateEvent { public: QUO_EVENT(RoomPowerLevelsEvent, "m.room.power_levels") explicit RoomPowerLevelsEvent(PowerLevelsEventContent&& content) : StateEvent(typeId(), matrixTypeId(), QString(), std::move(content)) {} explicit RoomPowerLevelsEvent(const QJsonObject& obj) : StateEvent(typeId(), obj) {} int invite() const { return content().invite; } int kick() const { return content().kick; } int ban() const { return content().ban; } int redact() const { return content().redact; } QHash events() const { return content().events; } int eventsDefault() const { return content().eventsDefault; } int stateDefault() const { return content().stateDefault; } QHash users() const { return content().users; } int usersDefault() const { return content().usersDefault; } int roomNotification() const { return content().notifications.room; } int powerLevelForEvent(const QString& eventId) const; int powerLevelForState(const QString& eventId) const; int powerLevelForUser(const QString& userId) const; }; } // namespace Quotient