Chatterino
PubSubActions.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <QColor>
4 #include <QDebug>
5 #include <QJsonObject>
6 #include <QString>
7 
8 #include <chrono>
9 #include <cinttypes>
10 
11 namespace chatterino {
12 
13 struct ActionUser {
14  QString id;
15  QString login;
16  // displayName should be in format "login(localizedName)" for non-ascii usernames
17  QString displayName;
18  QColor color;
19 
20  inline bool operator==(const ActionUser &rhs) const
21  {
22  return this->id == rhs.id && this->login == rhs.login &&
23  this->displayName == rhs.displayName && this->color == rhs.color;
24  }
25 };
26 
27 inline QDebug operator<<(QDebug dbg, const ActionUser &user)
28 {
29  dbg.nospace() << "ActionUser(" << user.id << ", " << user.login << ", "
30  << user.displayName << ", " << user.color << ")";
31 
32  return dbg.maybeSpace();
33 }
34 
35 struct PubSubAction {
36  PubSubAction(const QJsonObject &data, const QString &_roomID);
38 
39  std::chrono::steady_clock::time_point timestamp;
40  QString roomID;
41 };
42 
43 // Used when a chat mode (i.e. slowmode, subscribers only mode) is enabled or
44 // disabled
47 
48  enum Mode {
51  R9K,
54  } mode;
55 
56  // Whether the mode was turned on or off
57  enum State {
58  Off,
59  On,
60  } state;
61 
62  uint32_t duration = 0;
63 
64  const char *getModeName() const
65  {
66  switch (this->mode)
67  {
68  case Mode::Slow:
69  return "slow";
70  case Mode::R9K:
71  return "r9k";
72  case Mode::SubscribersOnly:
73  return "subscribers-only";
74  case Mode::EmoteOnly:
75  return "emote-only";
76  default:
77  return "unknown";
78  }
79  }
80 };
81 
84 
86 
87  QString reason;
88 
89  uint32_t duration = 0;
90 
91  bool isBan() const
92  {
93  return this->duration == 0;
94  }
95 };
96 
99 
101 
102  QString messageId;
103  QString messageText;
104 };
105 
108 
110 
111  enum {
114  } previousState;
115 
116  bool wasBan() const
117  {
118  return this->previousState == Banned;
119  }
120 };
121 
124 };
125 
128 
130 
131  // true = modded
132  // false = unmodded
133  bool modded;
134 };
135 
138 
140 
141  QString message;
142 
143  QString reason;
144 
145  QString msgID;
146 };
147 
150 
152 
153  enum {
159  } type;
160 
161  QString message;
162 };
163 
166  enum {
170  } type;
171 };
172 
173 } // namespace chatterino
Definition: PubSubActions.hpp:112
bool operator==(const ActionUser &rhs) const
Definition: PubSubActions.hpp:20
Definition: PubSubActions.hpp:155
Mode
Definition: PubSubActions.hpp:48
ActionUser target
Definition: PubSubActions.hpp:151
bool isBan() const
Definition: PubSubActions.hpp:91
Definition: PubSubActions.hpp:126
ActionUser target
Definition: PubSubActions.hpp:129
State
Definition: PubSubActions.hpp:57
QColor color
Definition: PubSubActions.hpp:18
Definition: PubSubActions.hpp:154
Definition: PubSubActions.hpp:49
Definition: PubSubActions.hpp:51
Definition: PubSubActions.hpp:148
Definition: PubSubActions.hpp:59
ActionUser target
Definition: PubSubActions.hpp:139
QString message
Definition: PubSubActions.hpp:141
Definition: Application.cpp:48
Definition: PubSubActions.hpp:168
Definition: PubSubActions.hpp:122
PubSubAction(const QJsonObject &data, const QString &_roomID)
Definition: PubSubActions.cpp:5
Definition: PubSubActions.hpp:45
Definition: PubSubActions.hpp:58
QString msgID
Definition: PubSubActions.hpp:145
bool modded
Definition: PubSubActions.hpp:133
Definition: PubSubActions.hpp:82
Definition: PubSubActions.hpp:106
Definition: PubSubActions.hpp:164
QString id
Definition: PubSubActions.hpp:14
Definition: PubSubActions.hpp:53
Definition: PubSubActions.hpp:52
Definition: PubSubActions.hpp:13
QString reason
Definition: PubSubActions.hpp:87
Definition: PubSubActions.hpp:97
QString message
Definition: PubSubActions.hpp:161
Definition: PubSubActions.hpp:156
QString displayName
Definition: PubSubActions.hpp:17
QString login
Definition: PubSubActions.hpp:15
QDebug & operator<<(QDebug &dbg, const SeventvEventAPISubscription &subscription)
Definition: SeventvEventAPISubscription.cpp:70
Definition: PubSubActions.hpp:35
bool wasBan() const
Definition: PubSubActions.hpp:116
QString messageId
Definition: PubSubActions.hpp:102
ActionUser source
Definition: PubSubActions.hpp:37
Definition: PubSubActions.hpp:157
Definition: PubSubActions.hpp:113
Definition: PubSubActions.hpp:158
Definition: PubSubActions.hpp:136
ActionUser target
Definition: PubSubActions.hpp:85
ActionUser target
Definition: PubSubActions.hpp:100
QString reason
Definition: PubSubActions.hpp:143
const char * getModeName() const
Definition: PubSubActions.hpp:64
ActionUser target
Definition: PubSubActions.hpp:109
Definition: PubSubActions.hpp:169
QString roomID
Definition: PubSubActions.hpp:40
Definition: PubSubActions.hpp:50
Definition: PubSubActions.hpp:167
QString messageText
Definition: PubSubActions.hpp:103
std::chrono::steady_clock::time_point timestamp
Definition: PubSubActions.hpp:39