libkazv
power-levels-desc.hpp
Go to the documentation of this file.
1 /*
2  * This file is part of libkazv.
3  * SPDX-FileCopyrightText: 2020-2023 tusooa <tusooa@kazv.moe>
4  * SPDX-License-Identifier: AGPL-3.0-or-later
5  */
6 
7 #pragma once
8 #include <libkazv-config.hpp>
9 
10 #include <memory>
11 #include <cstdint>
12 #include <optional>
13 
14 #include <copy-helper.hpp>
15 
16 namespace Kazv
17 {
18  class Event;
19 
20  using PowerLevel = std::int_fast64_t;
21 
26  {
27  public:
31  PowerLevelsDesc(const Event &e);
33 
35 
42  PowerLevel powerLevelOfUser(std::string userId) const;
43 
51  bool canSendMessage(std::string userId, std::string eventType) const;
52 
60  bool canSendState(std::string userId, std::string eventType) const;
61 
68  bool canInvite(std::string userId) const;
69 
76  bool canKick(std::string userId) const;
77 
84  bool canBan(std::string userId) const;
85 
92  bool canRedact(std::string userId) const;
93 
99  Event normalizedEvent() const;
100 
106  Event originalEvent() const;
107 
115  PowerLevelsDesc setBan(std::optional<PowerLevel> powerLevel) const;
116 
124  PowerLevelsDesc setInvite(std::optional<PowerLevel> powerLevel) const;
125 
133  PowerLevelsDesc setKick(std::optional<PowerLevel> powerLevel) const;
134 
143  PowerLevelsDesc setRedact(std::optional<PowerLevel> powerLevel) const;
144 
153  PowerLevelsDesc setEvent(std::string eventType, std::optional<PowerLevel> powerLevel) const;
154 
162  PowerLevelsDesc setEventsDefault(std::optional<PowerLevel> powerLevel) const;
163 
171  PowerLevelsDesc setStateDefault(std::optional<PowerLevel> powerLevel) const;
172 
180  PowerLevelsDesc setUser(std::string userId, std::optional<PowerLevel> powerLevel) const;
181 
188  PowerLevelsDesc setUsersDefault(std::optional<PowerLevel> powerLevel) const;
189 
190  private:
191  struct Private;
192  std::unique_ptr<Private> m_d;
193  };
194 }
Kazv::PowerLevelsDesc::PowerLevelsDesc
PowerLevelsDesc(const Event &e)
Construct a PowerLevelsDesc from an event.
Definition: power-levels-desc.cpp:118
Kazv::PowerLevelsDesc::setStateDefault
PowerLevelsDesc setStateDefault(std::optional< PowerLevel > powerLevel) const
Amend the power levels event to set the power level needed to send a state event whose type is not in...
Definition: power-levels-desc.cpp:233
Kazv::PowerLevelsDesc
Represent a m.power_levels event.
Definition: power-levels-desc.hpp:25
copy-helper.hpp
Kazv::PowerLevelsDesc::~PowerLevelsDesc
~PowerLevelsDesc()
Kazv::PowerLevelsDesc::powerLevelOfUser
PowerLevel powerLevelOfUser(std::string userId) const
Get the power level of a user in the room.
Definition: power-levels-desc.cpp:126
Kazv::PowerLevelsDesc::setUser
PowerLevelsDesc setUser(std::string userId, std::optional< PowerLevel > powerLevel) const
Amend the power levels event to set the power level of some user.
Definition: power-levels-desc.cpp:247
Kazv::PowerLevelsDesc::canKick
bool canKick(std::string userId) const
Determine whether a user can kick someone else.
Definition: power-levels-desc.cpp:164
Kazv::PowerLevelsDesc::setEventsDefault
PowerLevelsDesc setEventsDefault(std::optional< PowerLevel > powerLevel) const
Amend the power levels event to set the power level needed to send a non-state event whose type is no...
Definition: power-levels-desc.cpp:226
Kazv::PowerLevelsDesc::canSendState
bool canSendState(std::string userId, std::string eventType) const
Determine whether a user can send a state event.
Definition: power-levels-desc.cpp:146
Kazv::PowerLevelsDesc::canSendMessage
bool canSendMessage(std::string userId, std::string eventType) const
Determine whether a user can send a non-state event.
Definition: power-levels-desc.cpp:136
Kazv::PowerLevelsDesc::setKick
PowerLevelsDesc setKick(std::optional< PowerLevel > powerLevel) const
Amend the power levels event to set the power level needed to kick someone.
Definition: power-levels-desc.cpp:205
Kazv
Definition: location.hpp:10
Kazv::PowerLevelsDesc::canBan
bool canBan(std::string userId) const
Determine whether a user can ban someone else.
Definition: power-levels-desc.cpp:172
Kazv::PowerLevelsDesc::originalEvent
Event originalEvent() const
Get the original event provided when constructing this.
Definition: power-levels-desc.cpp:193
Kazv::PowerLevelsDesc::canRedact
bool canRedact(std::string userId) const
Determine whether a user can redact someone else's events.
Definition: power-levels-desc.cpp:180
Kazv::PowerLevelsDesc::Private
Definition: power-levels-desc.cpp:67
Kazv::PowerLevelsDesc::setInvite
PowerLevelsDesc setInvite(std::optional< PowerLevel > powerLevel) const
Amend the power levels event to set the power level needed to invite someone.
Definition: power-levels-desc.cpp:212
Kazv::PowerLevelsDesc::setRedact
PowerLevelsDesc setRedact(std::optional< PowerLevel > powerLevel) const
Amend the power levels event to set the power level needed to redact someone else's messages.
Definition: power-levels-desc.cpp:219
Kazv::PowerLevelsDesc::canInvite
bool canInvite(std::string userId) const
Determine whether a user can invite someone else.
Definition: power-levels-desc.cpp:156
Kazv::PowerLevelsDesc::setUsersDefault
PowerLevelsDesc setUsersDefault(std::optional< PowerLevel > powerLevel) const
Amend the power levels event to set the default power level for users.
Definition: power-levels-desc.cpp:240
Kazv::Event
Definition: event.hpp:20
Kazv::PowerLevelsDesc::normalizedEvent
Event normalizedEvent() const
Get the normalized event of this.
Definition: power-levels-desc.cpp:188
Kazv::PowerLevel
std::int_fast64_t PowerLevel
Definition: power-levels-desc.hpp:20
Kazv::PowerLevelsDesc::setBan
PowerLevelsDesc setBan(std::optional< PowerLevel > powerLevel) const
Amend the power levels event to set the power level needed to ban someone.
Definition: power-levels-desc.cpp:198
libkazv-config.hpp
Kazv::PowerLevelsDesc::KAZV_DECLARE_COPYABLE
KAZV_DECLARE_COPYABLE(PowerLevelsDesc)
Kazv::PowerLevelsDesc::setEvent
PowerLevelsDesc setEvent(std::string eventType, std::optional< PowerLevel > powerLevel) const
Amend the power levels event to set the power level needed to send an event of a particular type.
Definition: power-levels-desc.cpp:257