[Telepathy-commits] [telepathy-gabble/master] muc-channel: factor out gabble_muc_channel_send_invite
Guillaume Desmottes
guillaume.desmottes at collabora.co.uk
Fri Sep 26 10:02:15 PDT 2008
20080529095248-7fe3f-a2d412857ddfe910dd7964a91309c43763269edd.gz
---
src/muc-channel.c | 76 ++++++++++++++++++++++++++++++-----------------------
1 files changed, 43 insertions(+), 33 deletions(-)
diff --git a/src/muc-channel.c b/src/muc-channel.c
index c1e64d9..9d7798f 100644
--- a/src/muc-channel.c
+++ b/src/muc-channel.c
@@ -2490,6 +2490,44 @@ gabble_muc_channel_send (TpSvcChannelTypeText *iface,
tp_svc_channel_type_text_return_from_send (context);
}
+static gboolean
+gabble_muc_channel_send_invite (GabbleMucChannel *self,
+ TpHandle handle,
+ const gchar *message,
+ GError **error)
+{
+ GabbleMucChannelPrivate *priv = GABBLE_MUC_CHANNEL_GET_PRIVATE (self);
+ LmMessage *msg;
+ LmMessageNode *x_node, *invite_node;
+ const gchar *jid;
+ gboolean result;
+
+ g_signal_emit (self, signals[PRE_INVITE], 0, handle);
+
+ msg = lm_message_new (priv->jid, LM_MESSAGE_TYPE_MESSAGE);
+
+ x_node = lm_message_node_add_child (msg->node, "x", NULL);
+ lm_message_node_set_attribute (x_node, "xmlns", NS_MUC_USER);
+
+ invite_node = lm_message_node_add_child (x_node, "invite", NULL);
+
+ jid = tp_handle_inspect (TP_GROUP_MIXIN (self)->handle_repo, handle);
+
+ lm_message_node_set_attribute (invite_node, "to", jid);
+
+ if (*message != '\0')
+ {
+ lm_message_node_add_child (invite_node, "reason", message);
+ }
+
+ DEBUG ("sending MUC invitation for room %s to contact %u (%s) with reason "
+ "\"%s\"", priv->jid, handle, jid, message);
+
+ result = _gabble_connection_send (priv->conn, msg, error);
+ lm_message_unref (msg);
+
+ return result;
+}
static gboolean
gabble_muc_channel_add_member (GObject *obj,
@@ -2497,14 +2535,9 @@ gabble_muc_channel_add_member (GObject *obj,
const gchar *message,
GError **error)
{
- GabbleMucChannelPrivate *priv;
+ GabbleMucChannel *self = GABBLE_MUC_CHANNEL (obj);
+ GabbleMucChannelPrivate *priv = GABBLE_MUC_CHANNEL_GET_PRIVATE (self);
TpGroupMixin *mixin;
- const gchar *jid;
- LmMessage *msg;
- LmMessageNode *x_node, *invite_node;
- gboolean result;
-
- priv = GABBLE_MUC_CHANNEL_GET_PRIVATE (GABBLE_MUC_CHANNEL (obj));
mixin = TP_GROUP_MIXIN (obj);
@@ -2513,6 +2546,7 @@ gabble_muc_channel_add_member (GObject *obj,
TpBaseConnection *conn = (TpBaseConnection *) priv->conn;
TpIntSet *set_remove_members, *set_remote_pending;
GArray *arr_members;
+ gboolean result;
/* are we already a member or in remote pending? */
if (tp_handle_set_is_member (mixin->members, handle) ||
@@ -2551,7 +2585,7 @@ gabble_muc_channel_add_member (GObject *obj,
tp_intset_destroy (set_remote_pending);
/* seek to enter the room */
- result = send_join_request (GABBLE_MUC_CHANNEL (obj), NULL, error);
+ result = send_join_request (self, NULL, error);
g_object_set (obj, "state",
(result) ? MUC_STATE_INITIATED : MUC_STATE_ENDED,
@@ -2572,31 +2606,7 @@ gabble_muc_channel_add_member (GObject *obj,
return FALSE;
}
- g_signal_emit (obj, signals[PRE_INVITE], 0, handle);
-
- msg = lm_message_new (priv->jid, LM_MESSAGE_TYPE_MESSAGE);
-
- x_node = lm_message_node_add_child (msg->node, "x", NULL);
- lm_message_node_set_attribute (x_node, "xmlns", NS_MUC_USER);
-
- invite_node = lm_message_node_add_child (x_node, "invite", NULL);
-
- jid = tp_handle_inspect (TP_GROUP_MIXIN (obj)->handle_repo, handle);
-
- lm_message_node_set_attribute (invite_node, "to", jid);
-
- if (*message != '\0')
- {
- lm_message_node_add_child (invite_node, "reason", message);
- }
-
- DEBUG ("sending MUC invitation for room %s to contact %u (%s) with reason "
- "\"%s\"", priv->jid, handle, jid, message);
-
- result = _gabble_connection_send (priv->conn, msg, error);
- lm_message_unref (msg);
-
- return result;
+ return gabble_muc_channel_send_invite (self, handle, message, error);
}
static LmHandlerResult
--
1.5.6.5
More information about the Telepathy-commits
mailing list