summaryrefslogtreecommitdiff
path: root/wocky/wocky-muc.c
diff options
context:
space:
mode:
authorWill Thompson <will.thompson@collabora.co.uk>2010-05-04 13:06:53 +0100
committerWill Thompson <will.thompson@collabora.co.uk>2010-05-04 16:49:01 +0100
commit9be6e6952c635788ff0cf5ac3ec0da8da05195dc (patch)
tree43c3c84e100df94c1fc022f7ca01db9ff9bd04b1 /wocky/wocky-muc.c
parentbc27c8c96c92b736fe649490cc4894b9685d5c4d (diff)
muc: extract determining chat state
Diffstat (limited to 'wocky/wocky-muc.c')
-rw-r--r--wocky/wocky-muc.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/wocky/wocky-muc.c b/wocky/wocky-muc.c
index de87b5e..75b1025 100644
--- a/wocky/wocky-muc.c
+++ b/wocky/wocky-muc.c
@@ -1492,6 +1492,19 @@ determine_message_type (const gchar **body,
return mtype;
}
+static WockyMucMsgState
+extract_chat_state (WockyNode *msg)
+{
+ WockyNode *child = wocky_node_get_first_child_ns (msg, WOCKY_NS_CHATSTATE);
+ WockyMucMsgState mstate;
+
+ if (child == NULL ||
+ !wocky_enum_from_nick (WOCKY_TYPE_MUC_MSG_STATE, child->name, &mstate))
+ mstate = WOCKY_MUC_MSG_NONE;
+
+ return mstate;
+}
+
static gboolean
handle_message (WockyPorter *porter,
WockyStanza *stanza,
@@ -1501,7 +1514,6 @@ handle_message (WockyPorter *porter,
WockyStanzaSubType stype;
WockyNode *msg = wocky_stanza_get_top_node (stanza);
const gchar *from = NULL;
- WockyNode *child = NULL;
gboolean member_is_temporary = FALSE;
time_t stamp = 0;
@@ -1551,11 +1563,7 @@ handle_message (WockyPorter *porter,
goto out;
}
- child = wocky_node_get_first_child_ns (msg, WOCKY_NS_CHATSTATE);
-
- if (child == NULL ||
- !wocky_enum_from_nick (WOCKY_TYPE_MUC_MSG_STATE, child->name, &mstate))
- mstate = WOCKY_MUC_MSG_NONE;
+ mstate = extract_chat_state (msg);
g_signal_emit (muc, signals[SIG_MSG], 0,
stanza, mtype, id, stamp, who, body, subj, mstate);