Handle all events via MatrixClient::event
This commit is contained in:
		@@ -74,6 +74,45 @@ public class Matrix.HTTPClient : Matrix.HTTPAPI, Matrix.Client {
 | 
			
		||||
        abort_pending();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void
 | 
			
		||||
    process_event(Json.Array ary, uint idx, Json.Node member_node)
 | 
			
		||||
    {
 | 
			
		||||
        var root_obj = member_node.get_object();
 | 
			
		||||
        Json.Node? node;
 | 
			
		||||
        string? event_type = null;
 | 
			
		||||
        string? event_id = null;
 | 
			
		||||
        string? room_id = null;
 | 
			
		||||
        string? sender_id = null;
 | 
			
		||||
        UnsignedEventData? unsigned_data = null;
 | 
			
		||||
 | 
			
		||||
        if ((node = root_obj.get_member("type")) != null) {
 | 
			
		||||
            event_type = node.get_string();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if ((node = root_obj.get_member("event_id")) != null) {
 | 
			
		||||
            event_id = node.get_string();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if ((node = root_obj.get_member("room_id")) != null) {
 | 
			
		||||
            room_id = node.get_string();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if ((node = root_obj.get_member("sender")) != null) {
 | 
			
		||||
            sender_id = node.get_string();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if ((node = root_obj.get_member("unsigned")) != null) {
 | 
			
		||||
            unsigned_data = new UnsignedEventData.from_json(node);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
            incoming_event(room_id, member_node,
 | 
			
		||||
                           Event.new_from_json(event_type,
 | 
			
		||||
                                               room_id,
 | 
			
		||||
                                               member_node));
 | 
			
		||||
        } catch (GLib.Error e) {}
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void
 | 
			
		||||
    cb_event_stream(string content_type,
 | 
			
		||||
                    Json.Node? json_content,
 | 
			
		||||
@@ -89,7 +128,8 @@ public class Matrix.HTTPClient : Matrix.HTTPAPI, Matrix.Client {
 | 
			
		||||
            if ((node = root_obj.get_member("chunk")) != null) {
 | 
			
		||||
                var chunks = node.get_array();
 | 
			
		||||
 | 
			
		||||
                chunks.foreach_element((ary, idx, member_node) => {});
 | 
			
		||||
                chunks.foreach_element(
 | 
			
		||||
                        (ary, idx, member_node) => process_event(ary, idx, member_node));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if ((node = root_obj.get_member("end")) != null) {
 | 
			
		||||
@@ -109,6 +149,11 @@ public class Matrix.HTTPClient : Matrix.HTTPAPI, Matrix.Client {
 | 
			
		||||
                        end_token,
 | 
			
		||||
                        _event_timeout);
 | 
			
		||||
            } catch (Matrix.Error e) {}
 | 
			
		||||
        } else if ((error != null) && (error.code < 500)) {
 | 
			
		||||
            info("Communication error while reading the event stream. Polling stopped.");
 | 
			
		||||
            try {
 | 
			
		||||
                stop_polling(false);
 | 
			
		||||
            } catch (Matrix.Error e) {}
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user