GSList *message_queue;
gboolean had_properties_list;
GPtrArray *properties;
+ gboolean ready;
};
typedef struct {
PROP_CHANNEL,
PROP_ACKNOWLEDGE,
PROP_REMOTE_CONTACT,
+ PROP_READY,
};
enum {
TpChatProperty *property;
guint i;
+ g_return_if_fail (priv->ready);
+
for (i = 0; i < priv->properties->len; i++) {
property = g_ptr_array_index (priv->properties, i);
if (!tp_strdiff (property->name, name)) {
empathy_debug (DEBUG_DOMAIN, "Channel ready");
+ priv->ready = TRUE;
if (tp_proxy_has_interface_by_id (priv->channel,
TP_IFACE_QUARK_CHANNEL_INTERFACE_GROUP)) {
priv->group = empathy_tp_group_new (priv->account, priv->tp_chan);
"The remote contact if there is no group iface on the channel",
EMPATHY_TYPE_CONTACT,
G_PARAM_READABLE));
+ g_object_class_install_property (object_class,
+ PROP_READY,
+ g_param_spec_boolean ("ready",
+ "Is the object ready",
+ "This object is can't be used until this becomes true",
+ FALSE,
+ G_PARAM_READABLE));
/* Signals */
signals[MESSAGE_RECEIVED] =
empathy_tp_chat_send (EmpathyTpChat *chat,
EmpathyMessage *message)
{
- EmpathyTpChatPriv *priv;
+ EmpathyTpChatPriv *priv = GET_PRIV (chat);
const gchar *message_body;
EmpathyMessageType message_type;
g_return_if_fail (EMPATHY_IS_TP_CHAT (chat));
g_return_if_fail (EMPATHY_IS_MESSAGE (message));
-
- priv = GET_PRIV (chat);
+ g_return_if_fail (priv->ready);
message_body = empathy_message_get_body (message);
message_type = empathy_message_get_type (message);
empathy_tp_chat_set_state (EmpathyTpChat *chat,
TpChannelChatState state)
{
- EmpathyTpChatPriv *priv;
+ EmpathyTpChatPriv *priv = GET_PRIV (chat);
g_return_if_fail (EMPATHY_IS_TP_CHAT (chat));
-
- priv = GET_PRIV (chat);
+ g_return_if_fail (priv->ready);
empathy_debug (DEBUG_DOMAIN, "Set state: %d", state);
tp_cli_channel_interface_chat_state_call_set_chat_state (priv->channel, -1,
return priv->remote_contact;
}
+gboolean
+empathy_tp_chat_is_ready (EmpathyTpChat *chat)
+{
+ EmpathyTpChatPriv *priv = GET_PRIV (chat);
+
+ g_return_val_if_fail (EMPATHY_IS_TP_CHAT (chat), FALSE);
+
+ return priv->ready;
+}
+