summaryrefslogtreecommitdiff
path: root/src/idle-muc-manager.c
diff options
context:
space:
mode:
authorWill Thompson <will.thompson@collabora.co.uk>2009-08-29 01:41:31 +0100
committerWill Thompson <will.thompson@collabora.co.uk>2009-08-29 02:51:02 +0100
commit1e41b6e37c84eef7548a272ae62b20acc0be0ff1 (patch)
treedbd09fc7f754be05294ce8b2a524ee2721b42674 /src/idle-muc-manager.c
parentafdcca3d687805bfbcc75f4e09c311d2e2050a5c (diff)
downloadtelepathy-idle-1e41b6e37c84eef7548a272ae62b20acc0be0ff1.tar.gz
Set Initiator and Requested on new MUC channels
Diffstat (limited to 'src/idle-muc-manager.c')
-rw-r--r--src/idle-muc-manager.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/idle-muc-manager.c b/src/idle-muc-manager.c
index f2bbc04..eada4d7 100644
--- a/src/idle-muc-manager.c
+++ b/src/idle-muc-manager.c
@@ -89,7 +89,7 @@ static gboolean _muc_manager_request_channel (TpChannelManager *manager, gpointe
static gboolean _muc_manager_ensure_channel (TpChannelManager *manager, gpointer request_token, GHashTable *request_properties);
static gboolean _muc_manager_request (IdleMUCManager *self, gpointer request_token, GHashTable *request_properties, gboolean require_new);
-static IdleMUCChannel *_muc_manager_new_channel(IdleMUCManager *manager, TpHandle handle);
+static IdleMUCChannel *_muc_manager_new_channel(IdleMUCManager *manager, TpHandle handle, TpHandle initiator, gboolean requested);
static void _channel_closed_cb(IdleMUCChannel *chan, gpointer user_data);
static void _channel_join_ready_cb(IdleMUCChannel *chan, guint err, gpointer user_data);
@@ -276,7 +276,7 @@ static IdleParserHandlerResult _invite_handler(IdleParser *parser, IdleParserMes
idle_connection_emit_queued_aliases_changed(priv->conn);
if (!chan) {
- chan = _muc_manager_new_channel(manager, room_handle);
+ chan = _muc_manager_new_channel(manager, room_handle, inviter_handle, FALSE);
tp_channel_manager_emit_new_channel(TP_CHANNEL_MANAGER(user_data), (TpExportableChannel *) chan, NULL);
idle_muc_channel_invited(chan, inviter_handle);
}
@@ -300,7 +300,9 @@ static IdleParserHandlerResult _join_handler(IdleParser *parser, IdleParserMessa
IdleMUCChannel *chan = g_hash_table_lookup(priv->channels, GUINT_TO_POINTER(room_handle));
if (!chan) {
- chan = _muc_manager_new_channel(manager, room_handle);
+ /* TODO: If we're in "bouncer mode", maybe these should be Requested:
+ * True? At least for the initial batch? */
+ chan = _muc_manager_new_channel(manager, room_handle, 0, FALSE);
tp_channel_manager_emit_new_channel(TP_CHANNEL_MANAGER(user_data), (TpExportableChannel *) chan, NULL);
}
@@ -625,7 +627,7 @@ _muc_manager_foreach_channel_class (TpChannelManager *manager,
}
-static IdleMUCChannel *_muc_manager_new_channel(IdleMUCManager *manager, TpHandle handle)
+static IdleMUCChannel *_muc_manager_new_channel(IdleMUCManager *manager, TpHandle handle, TpHandle initiator, gboolean requested)
{
IdleMUCManagerPrivate *priv = IDLE_MUC_MANAGER_GET_PRIVATE(manager);
IdleMUCChannel *chan;
@@ -634,7 +636,7 @@ static IdleMUCChannel *_muc_manager_new_channel(IdleMUCManager *manager, TpHandl
g_assert(g_hash_table_lookup(priv->channels, GUINT_TO_POINTER(handle)) == NULL);
object_path = g_strdup_printf("%s/MucChannel%u", priv->conn->parent.object_path, handle);
- chan = idle_muc_channel_new(priv->conn, object_path, handle);
+ chan = idle_muc_channel_new(priv->conn, object_path, handle, initiator, requested);
g_signal_connect(chan, "closed", (GCallback) _channel_closed_cb, manager);
g_signal_connect(chan, "join-ready", (GCallback) _channel_join_ready_cb, manager);
@@ -826,7 +828,7 @@ _muc_manager_request (IdleMUCManager *self,
}
else
{
- channel = _muc_manager_new_channel (self, handle);
+ channel = _muc_manager_new_channel (self, handle, base_conn->self_handle, TRUE);
idle_muc_channel_join_attempt(channel);
}