diff --git a/include/linphone/utils/traits.h b/include/linphone/utils/traits.h index 87c413510..fe4c6a940 100644 --- a/include/linphone/utils/traits.h +++ b/include/linphone/utils/traits.h @@ -20,7 +20,7 @@ #ifndef _TRAITS_H_ #define _TRAITS_H_ -#include "general.h" +#include "linphone/utils/general.h" // ============================================================================= diff --git a/include/linphone/utils/utils.h b/include/linphone/utils/utils.h index 87f53497f..414e1aa51 100644 --- a/include/linphone/utils/utils.h +++ b/include/linphone/utils/utils.h @@ -100,7 +100,6 @@ namespace Utils { LINPHONE_PUBLIC std::string stringToLower (const std::string &str); - // Return a buffer allocated with new. LINPHONE_PUBLIC char *utf8ToChar (uint32_t ic); LINPHONE_PUBLIC inline std::string cStringToCppString (const char *str) { diff --git a/src/chat/chat-room/basic-to-client-group-chat-room.cpp b/src/chat/chat-room/basic-to-client-group-chat-room.cpp index 17b4f81b5..6a6637742 100644 --- a/src/chat/chat-room/basic-to-client-group-chat-room.cpp +++ b/src/chat/chat-room/basic-to-client-group-chat-room.cpp @@ -90,6 +90,11 @@ private: BasicToClientGroupChatRoom::BasicToClientGroupChatRoom (const shared_ptr &chatRoom) : ProxyChatRoom(*new BasicToClientGroupChatRoomPrivate, chatRoom) {} +BasicToClientGroupChatRoom::CapabilitiesMask BasicToClientGroupChatRoom::getCapabilities () const { + L_D(); + return d->chatRoom->getCapabilities() | BasicToClientGroupChatRoom::Capabilities::Migratable; +} + shared_ptr BasicToClientGroupChatRoom::createChatMessage () { shared_ptr msg = ProxyChatRoom::createChatMessage(); msg->getPrivate()->setChatRoom(getSharedFromThis()); diff --git a/src/chat/chat-room/basic-to-client-group-chat-room.h b/src/chat/chat-room/basic-to-client-group-chat-room.h index dcc815a67..c222a3467 100644 --- a/src/chat/chat-room/basic-to-client-group-chat-room.h +++ b/src/chat/chat-room/basic-to-client-group-chat-room.h @@ -33,10 +33,15 @@ class LINPHONE_PUBLIC BasicToClientGroupChatRoom : public ProxyChatRoom { public: BasicToClientGroupChatRoom (const std::shared_ptr &chatRoom); + CapabilitiesMask getCapabilities () const override; + std::shared_ptr createChatMessage () override; std::shared_ptr createChatMessage (const std::string &text) override; - static void migrate(const std::shared_ptr &clientGroupChatRoom, const std::shared_ptr &chatRoom); + static void migrate ( + const std::shared_ptr &clientGroupChatRoom, + const std::shared_ptr &chatRoom + ); private: L_DECLARE_PRIVATE(BasicToClientGroupChatRoom); diff --git a/src/core/core-chat-room.cpp b/src/core/core-chat-room.cpp index 1fffb26bf..6a16560ab 100644 --- a/src/core/core-chat-room.cpp +++ b/src/core/core-chat-room.cpp @@ -73,14 +73,11 @@ shared_ptr CorePrivate::createBasicChatRoom ( if (capabilities & ChatRoom::Capabilities::RealTimeText) chatRoom.reset(new RealTimeTextChatRoom(q->getSharedFromThis(), chatRoomId)); else { - bool isToMigrate = (capabilities & ChatRoom::Capabilities::Migratable); - if (isToMigrate) { - shared_ptr bcr; - bcr.reset(new BasicChatRoom(q->getSharedFromThis(), chatRoomId)); - chatRoom.reset(new BasicToClientGroupChatRoom(bcr)); - } else { - chatRoom.reset(new BasicChatRoom(q->getSharedFromThis(), chatRoomId)); - } + BasicChatRoom *basicChatRoom = new BasicChatRoom(q->getSharedFromThis(), chatRoomId); + if (capabilities & ChatRoom::Capabilities::Migratable) + chatRoom.reset(new BasicToClientGroupChatRoom(shared_ptr(basicChatRoom))); + else + chatRoom.reset(basicChatRoom); } AbstractChatRoomPrivate *dChatRoom = chatRoom->getPrivate();