diff --git a/src/core/core-chat-room.cpp b/src/core/core-chat-room.cpp index 5d8c8b6e4..76bdcda8f 100644 --- a/src/core/core-chat-room.cpp +++ b/src/core/core-chat-room.cpp @@ -23,6 +23,7 @@ #include "chat/chat-room/basic-chat-room.h" #include "chat/chat-room/chat-room-p.h" #include "chat/chat-room/real-time-text-chat-room.h" +#include "conference/participant.h" #include "core-p.h" #include "logger/logger.h" @@ -127,6 +128,22 @@ list> Core::findChatRooms (const IdentityAddress &peerAddre return output; } +shared_ptr Core::findOneToOneChatRoom ( + const IdentityAddress &localAddress, + const IdentityAddress &participantAddress +) { + L_D(); + for (const auto &chatRoom : d->chatRooms) { + if ( + chatRoom->getNbParticipants() == 1 && + chatRoom->getLocalAddress() == localAddress && + participantAddress == chatRoom->getParticipants().front()->getAddress() + ) + return chatRoom; + } + return nullptr; +} + shared_ptr Core::createClientGroupChatRoom (const string &subject) { L_D(); return L_GET_CPP_PTR_FROM_C_OBJECT( diff --git a/src/core/core.h b/src/core/core.h index 9aeab7697..f88c7251d 100644 --- a/src/core/core.h +++ b/src/core/core.h @@ -70,6 +70,11 @@ public: std::shared_ptr findChatRoom (const ChatRoomId &chatRoomId) const; std::list> findChatRooms (const IdentityAddress &peerAddress) const; + std::shared_ptr findOneToOneChatRoom ( + const IdentityAddress &localAddress, + const IdentityAddress &participantAddress + ); + std::shared_ptr createClientGroupChatRoom (const std::string &subject); std::shared_ptr createClientGroupChatRoom (const std::string &subject, const IdentityAddress &localAddress); diff --git a/src/db/main-db.cpp b/src/db/main-db.cpp index a73b10b9a..fd55723f6 100644 --- a/src/db/main-db.cpp +++ b/src/db/main-db.cpp @@ -897,7 +897,7 @@ MainDb::MainDb (const shared_ptr &core) : AbstractDb(*new MainDbPrivate), // Chatroom subject. " subject VARCHAR(255)," - " last_notify_id INT UNSIGNED," + " last_notify_id INT UNSIGNED DEFAULT 0," " flags INT UNSIGNED DEFAULT 0,"