Patch up Matrix.Event.RoomBase

* Chain up from from_json() and to_json()
* Add reading of unsigned data in from_json()
* Use private members in to_json()
This commit is contained in:
Gergely Polonkai 2016-03-09 13:44:48 +01:00 committed by Gergely Polonkai
parent c2569c70d0
commit 27e27667ef

View File

@ -62,15 +62,39 @@ public abstract class Matrix.Event.Room : Matrix.Event.Base {
if ((node = root.get_member("event_id")) != null) {
_event_id = node.get_string();
} else if (Config.DEBUG) {
warning("event_id is missing from a Room event");
}
if ((node = root.get_member("room_id")) != null) {
_room_id = node.get_string();
} else if (Config.DEBUG) {
warning("room_id is missing from a Room event");
}
if ((node = root.get_member("sender")) != null) {
_sender = node.get_string();
} else if (Config.DEBUG) {
warning("sender is missing from a Room event");
}
if ((node = root.get_member("unsigned")) != null) {
var unsigned_root = node.get_object();
if ((node = unsigned_root.get_member("age")) != null) {
_age = (int)node.get_int();
}
if ((node = unsigned_root.get_member("redacted_because")) != null) {
_redacted_because = node.get_string();
}
if ((node = unsigned_root.get_member("transaction_id")) != null) {
_transaction_id = node.get_string();
}
}
base.from_json(json_data);
}
protected override void
@ -80,31 +104,31 @@ public abstract class Matrix.Event.Room : Matrix.Event.Base {
var root_obj = json_data.get_object();
if (event_id != null) {
root_obj.set_string_member("event_id", event_id);
root_obj.set_string_member("event_id", _event_id);
}
if (room_id != null) {
root_obj.set_string_member("room_id", room_id);
root_obj.set_string_member("room_id", _room_id);
}
if (sender != null) {
root_obj.set_string_member("sender", sender);
root_obj.set_string_member("sender", _sender);
}
var unsigned_obj = new Json.Object();
if (age != null) {
unsigned_obj.set_int_member("age", age);
unsigned_obj.set_int_member("age", _age);
}
if (redacted_because != null) {
unsigned_obj.set_string_member("redacted_because",
redacted_because);
_redacted_because);
}
if (transaction_id != null) {
unsigned_obj.set_string_member("transaction_id",
transaction_id);
_transaction_id);
}
if (unsigned_obj.get_size() > 0) {
@ -112,5 +136,7 @@ public abstract class Matrix.Event.Room : Matrix.Event.Base {
unsigned_node.set_object(unsigned_obj);
root_obj.set_member("unsigned", unsigned_node);
}
base.to_json(json_data);
}
}