diff options
author | Will Thompson <will.thompson@collabora.co.uk> | 2010-05-04 13:06:53 +0100 |
---|---|---|
committer | Will Thompson <will.thompson@collabora.co.uk> | 2010-05-04 16:49:01 +0100 |
commit | 9be6e6952c635788ff0cf5ac3ec0da8da05195dc (patch) | |
tree | 43c3c84e100df94c1fc022f7ca01db9ff9bd04b1 /wocky/wocky-muc.c | |
parent | bc27c8c96c92b736fe649490cc4894b9685d5c4d (diff) |
muc: extract determining chat state
Diffstat (limited to 'wocky/wocky-muc.c')
-rw-r--r-- | wocky/wocky-muc.c | 20 |
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); |