Chatterino
ModerationAction.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <QString>
4 #include <boost/optional.hpp>
5 #include <pajlada/serialize.hpp>
6 
8 
9 #include <memory>
10 
11 namespace chatterino {
12 
13 class Image;
14 using ImagePtr = std::shared_ptr<Image>;
15 
17 {
18 public:
19  ModerationAction(const QString &action);
20 
21  bool operator==(const ModerationAction &other) const;
22 
23  bool isImage() const;
24  const boost::optional<ImagePtr> &getImage() const;
25  const QString &getLine1() const;
26  const QString &getLine2() const;
27  const QString &getAction() const;
28 
29 private:
30  mutable boost::optional<ImagePtr> image_;
31  QString line1_;
32  QString line2_;
33  QString action_;
34  int imageToLoad_{};
35 };
36 
37 } // namespace chatterino
38 
39 namespace pajlada {
40 
41 template <>
42 struct Serialize<chatterino::ModerationAction> {
43  static rapidjson::Value get(const chatterino::ModerationAction &value,
44  rapidjson::Document::AllocatorType &a)
45  {
46  rapidjson::Value ret(rapidjson::kObjectType);
47 
48  chatterino::rj::set(ret, "pattern", value.getAction(), a);
49 
50  return ret;
51  }
52 };
53 
54 template <>
55 struct Deserialize<chatterino::ModerationAction> {
56  static chatterino::ModerationAction get(const rapidjson::Value &value,
57  bool *error = nullptr)
58  {
59  if (!value.IsObject())
60  {
61  PAJLADA_REPORT_ERROR(error)
62  return chatterino::ModerationAction(QString());
63  }
64 
65  QString pattern;
66 
67  chatterino::rj::getSafe(value, "pattern", pattern);
68 
69  return chatterino::ModerationAction(pattern);
70  }
71 };
72 
73 } // namespace pajlada
bool operator==(const ModerationAction &other) const
Definition: ModerationAction.cpp:127
const QString & getLine1() const
Definition: ModerationAction.cpp:154
ModerationAction(const QString &action)
Definition: ModerationAction.cpp:28
const QString & getAction() const
Definition: ModerationAction.cpp:164
Definition: Application.cpp:48
const boost::optional< ImagePtr > & getImage() const
Definition: ModerationAction.cpp:137
void set(rapidjson::Value &obj, const char *key, const Type &value, rapidjson::Document::AllocatorType &a)
Definition: RapidjsonHelpers.hpp:22
Definition: Command.hpp:25
bool getSafe(const rapidjson::Value &obj, const char *key, Type &out)
Definition: RapidjsonHelpers.hpp:73
std::shared_ptr< Image > ImagePtr
Definition: ModerationAction.hpp:14
const QString & getLine2() const
Definition: ModerationAction.cpp:159
Definition: ModerationAction.hpp:16
bool isImage() const
Definition: ModerationAction.cpp:132