summaryrefslogtreecommitdiffstats
path: root/src/gui/CoreConnector.vala
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/CoreConnector.vala')
-rw-r--r--src/gui/CoreConnector.vala19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/gui/CoreConnector.vala b/src/gui/CoreConnector.vala
index a152e58..d43ab2f 100644
--- a/src/gui/CoreConnector.vala
+++ b/src/gui/CoreConnector.vala
@@ -107,9 +107,20 @@ public class CoreConnector {
name = null;
Contact contact = new Contact(jid, name);
+
+ Erl.Term groups = match_term.var_content("Groups");
+ while(groups.is_cons()) {
+ Erl.Term group_term = groups.hd();
+
+ if(group_term.is_binary()) {
+ string group = ((string)group_term.bin_ptr()).ndup(group_term.bin_size());
+ contact.add_group(group);
+ }
+
+ groups = groups.tl();
+ }
Erl.Term resources = match_term.var_content("Resources");
-
while(resources.is_cons()) {
Erl.Term r;
@@ -214,10 +225,10 @@ public class CoreConnector {
string type = ((string)type_term.atom_ptr()).ndup(type_term.atom_size());
Erl.Term body_term = match_term.var_content("Body");
- if(!body_term.is_list())
+ if(!body_term.is_binary())
// TODO Debug output
return;
- string body = body_term.iolist_to_string();
+ string body = ((string)body_term.bin_ptr()).ndup(body_term.bin_size());
sent_message(jid, type, body);
}
@@ -232,6 +243,6 @@ public class CoreConnector {
}
public void send_message(string jid, string type, string message) {
- con.reg_send("ephraim", Erl.format("{send_message,~s,~a,~s}", jid, type, message));
+ con.reg_send("ephraim", Erl.format("{send_message,~w,~a,~w}", Erl.mk_binary(jid.to_utf8()), type, Erl.mk_binary(message.to_utf8())));
}
}