2018-05-12 20:34:13 +02:00
|
|
|
#pragma once
|
|
|
|
|
2018-06-27 02:17:05 +02:00
|
|
|
#include "util/RapidjsonHelpers.hpp"
|
|
|
|
|
2018-05-12 20:34:13 +02:00
|
|
|
#include <rapidjson/document.h>
|
|
|
|
#include <QString>
|
2018-06-27 02:17:05 +02:00
|
|
|
#include <pajlada/settings/serialize.hpp>
|
2018-05-12 20:34:13 +02:00
|
|
|
|
|
|
|
#include <cassert>
|
|
|
|
|
|
|
|
namespace chatterino {
|
|
|
|
|
|
|
|
struct TwitchUser {
|
|
|
|
QString id;
|
|
|
|
mutable QString name;
|
|
|
|
mutable QString displayName;
|
|
|
|
|
|
|
|
void update(const TwitchUser &other) const
|
|
|
|
{
|
|
|
|
assert(this->id == other.id);
|
|
|
|
|
|
|
|
this->name = other.name;
|
|
|
|
this->displayName = other.displayName;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool operator<(const TwitchUser &rhs) const
|
|
|
|
{
|
|
|
|
return this->id < rhs.id;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
} // namespace chatterino
|
2018-06-27 02:17:05 +02:00
|
|
|
|
|
|
|
namespace pajlada {
|
|
|
|
namespace Settings {
|
|
|
|
|
2018-08-15 22:46:20 +02:00
|
|
|
template <>
|
|
|
|
struct Deserialize<chatterino::TwitchUser> {
|
|
|
|
static chatterino::TwitchUser get(const rapidjson::Value &value,
|
|
|
|
bool *error = nullptr)
|
|
|
|
{
|
|
|
|
using namespace chatterino;
|
|
|
|
|
|
|
|
TwitchUser user;
|
|
|
|
|
|
|
|
if (!value.IsObject()) {
|
|
|
|
PAJLADA_REPORT_ERROR(error)
|
|
|
|
PAJLADA_THROW_EXCEPTION(
|
|
|
|
"Deserialized rapidjson::Value is wrong type");
|
|
|
|
return user;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!rj::getSafe(value, "_id", user.id)) {
|
|
|
|
PAJLADA_REPORT_ERROR(error)
|
|
|
|
PAJLADA_THROW_EXCEPTION("Missing ID key");
|
|
|
|
return user;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!rj::getSafe(value, "name", user.name)) {
|
|
|
|
PAJLADA_REPORT_ERROR(error)
|
|
|
|
PAJLADA_THROW_EXCEPTION("Missing name key");
|
|
|
|
return user;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!rj::getSafe(value, "display_name", user.displayName)) {
|
|
|
|
PAJLADA_REPORT_ERROR(error)
|
|
|
|
PAJLADA_THROW_EXCEPTION("Missing display name key");
|
|
|
|
return user;
|
|
|
|
}
|
2018-06-27 02:17:05 +02:00
|
|
|
|
|
|
|
return user;
|
|
|
|
}
|
2018-08-15 22:46:20 +02:00
|
|
|
};
|
2018-06-27 02:17:05 +02:00
|
|
|
|
|
|
|
} // namespace Settings
|
|
|
|
} // namespace pajlada
|