1#include <nlohmann/json.hpp>
2#include <string>
3
4#include "mtx/events/history_visibility.hpp"
5
6using json = nlohmann::json;
7
8namespace mtx {
9namespace events {
10namespace state {
11
12std::string
13visibilityToString(const Visibility &rule)
14{
15 switch (rule) {
16 case Visibility::WorldReadable:
17 return "world_readable";
18 case Visibility::Invited:
19 return "invited";
20 case Visibility::Shared:
21 return "shared";
22 case Visibility::Joined:
23 return "joined";
24 }
25
26 return "";
27}
28
29Visibility
30stringToVisibility(const std::string &rule)
31{
32 if (rule == "world_readable")
33 return Visibility::WorldReadable;
34 else if (rule == "invited")
35 return Visibility::Invited;
36 else if (rule == "shared")
37 return Visibility::Shared;
38
39 return Visibility::Joined;
40}
41
42void
43from_json(const json &obj, HistoryVisibility &event)
44{
45 event.history_visibility = stringToVisibility(rule: obj.value(key: "history_visibility", default_value: ""));
46}
47
48void
49to_json(json &obj, const HistoryVisibility &event)
50{
51 obj["history_visibility"] = visibilityToString(rule: event.history_visibility);
52}
53
54} // namespace state
55} // namespace events
56} // namespace mtx
57