From 2cf16f8c3b783ac09ed638633b34dffc50279106 Mon Sep 17 00:00:00 2001 From: Jonas Bonn Date: Fri, 5 Mar 2010 16:42:05 +0100 Subject: Add function ensure_chatroom to chatroom manager This function tries to find an existing chatroom, but if it fails to do so it creates a new room and returns that instead. --- libempathy/empathy-chatroom-manager.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'libempathy/empathy-chatroom-manager.c') diff --git a/libempathy/empathy-chatroom-manager.c b/libempathy/empathy-chatroom-manager.c index d5513caf1..cf3b75331 100644 --- a/libempathy/empathy-chatroom-manager.c +++ b/libempathy/empathy-chatroom-manager.c @@ -632,6 +632,28 @@ empathy_chatroom_manager_find (EmpathyChatroomManager *manager, return NULL; } +EmpathyChatroom * +empathy_chatroom_manager_ensure_chatroom (EmpathyChatroomManager *manager, + TpAccount *account, + const gchar *room, + const gchar *name) +{ + EmpathyChatroom *chatroom; + + chatroom = empathy_chatroom_manager_find (manager, account, room); + + if (chatroom) { + return g_object_ref(chatroom); + } else { + chatroom = empathy_chatroom_new_full (account, + room, + name, + FALSE); + empathy_chatroom_manager_add (manager, chatroom); + return chatroom; + } +} + GList * empathy_chatroom_manager_get_chatrooms (EmpathyChatroomManager *manager, TpAccount *account) -- cgit v1.2.3