diff --git a/apps/client/gui/states/privateMessages/PrivateMessagesController.cpp b/apps/client/gui/states/privateMessages/PrivateMessagesController.cpp index d9daf47..b2062dd 100644 --- a/apps/client/gui/states/privateMessages/PrivateMessagesController.cpp +++ b/apps/client/gui/states/privateMessages/PrivateMessagesController.cpp @@ -34,6 +34,14 @@ void PrivateMessagesController::activate() removeFromFriendsResponseHandlerName, [this](const auto&) { handleRemoveFromFriendsResponse(); }}); + session->addMessageHandler({common::messages::MessageId::SendPrivateMessageResponse, + sendPrivateMessageResponseHandlerName, + [this](const auto& msg) { handleSendPrivateMessageResponse(msg); }}); + + session->addMessageHandler({common::messages::MessageId::GetPrivateMessagesResponse, + getPrivateMessagesResponseHandlerName, + [this](const auto& msg) { handleGetPrivateMessagesResponse(msg); }}); + session->sendMessage(common::messages::MessageId::GetUserFriends, {}); session->sendMessage(common::messages::MessageId::GetFriendInvitations, {}); @@ -56,6 +64,12 @@ void PrivateMessagesController::deactivate() session->removeMessageHandler( {common::messages::MessageId::RemoveFromFriendsResponse, removeFromFriendsResponseHandlerName}); + + session->removeMessageHandler( + {common::messages::MessageId::SendPrivateMessageResponse, sendPrivateMessageResponseHandlerName}); + + session->removeMessageHandler( + {common::messages::MessageId::GetPrivateMessagesResponse, getPrivateMessagesResponseHandlerName}); } void PrivateMessagesController::goToChannel(const QString& channelName, const QString& channelId, bool isOwner) @@ -383,4 +397,11 @@ void PrivateMessagesController::handleGetPrivateMessagesResponse(const common::m LOG_S(ERROR) << "Response without messages"; } } +void PrivateMessagesController::getMoreMessages() +{ + auto offset = messageStorage->getMessages().size(); + + session->sendMessage(common::messages::MessageId::GetPrivateMessages, + nlohmann::json{{"groupId", currentFriendGroupId}, {"offset", offset}, {"limit", 50}}); +} } diff --git a/apps/client/gui/states/privateMessages/PrivateMessagesController.h b/apps/client/gui/states/privateMessages/PrivateMessagesController.h index 85b32bb..30dfcb9 100644 --- a/apps/client/gui/states/privateMessages/PrivateMessagesController.h +++ b/apps/client/gui/states/privateMessages/PrivateMessagesController.h @@ -44,6 +44,7 @@ class PrivateMessagesController : public QObject public slots: void goToChannel(const QString& channelName, const QString& channelId, bool isOwner); void sendPrivateMessage(const QString& messageText); + void getMoreMessages(); private: void handleGetUserFriendsResponse(const common::messages::Message& message); diff --git a/apps/client/gui/states/privateMessages/PrivateMessagesState.cpp b/apps/client/gui/states/privateMessages/PrivateMessagesState.cpp index 18805f1..175ff7f 100644 --- a/apps/client/gui/states/privateMessages/PrivateMessagesState.cpp +++ b/apps/client/gui/states/privateMessages/PrivateMessagesState.cpp @@ -31,6 +31,15 @@ void PrivateMessagesState::activate() QObject::connect(messagesController.get(), &MessagesController::newMessageToSend, privateMessagesController.get(), &PrivateMessagesController::sendPrivateMessage); + QObject::connect(privateMessagesController.get(), &PrivateMessagesController::messagesUpdated, + messagesController.get(), &MessagesController::handleMessageUpdate); + + QObject::connect(privateMessagesController.get(), &PrivateMessagesController::setMessageStorage, + messagesController.get(), &MessagesController::setMessageStorage); + + QObject::connect(messagesController.get(), &MessagesController::getMoreMessages, privateMessagesController.get(), + &PrivateMessagesController::getMoreMessages); + loaderController->getEngine()->rootContext()->setContextProperty(leftColumnController->getName(), leftColumnController.get()); @@ -61,6 +70,15 @@ void PrivateMessagesState::deactivate() QObject::disconnect(messagesController.get(), &MessagesController::newMessageToSend, privateMessagesController.get(), &PrivateMessagesController::sendPrivateMessage); + QObject::disconnect(privateMessagesController.get(), &PrivateMessagesController::messagesUpdated, + messagesController.get(), &MessagesController::handleMessageUpdate); + + QObject::disconnect(privateMessagesController.get(), &PrivateMessagesController::setMessageStorage, + messagesController.get(), &MessagesController::setMessageStorage); + + QObject::disconnect(messagesController.get(), &MessagesController::getMoreMessages, privateMessagesController.get(), + &PrivateMessagesController::getMoreMessages); + loaderController->getEngine()->rootContext()->setContextProperty(leftColumnController->getName(), nullptr); loaderController->getEngine()->rootContext()->setContextProperty(privateMessagesController->getName(), nullptr);