diff --git a/services/messageservice.cpp b/services/messageservice.cpp index ab35f4b1d076b16f54bd5826df2f0066fa0626cf..7f55731f1a0fe52b4b283b80dcfd681f47db6143 100644 --- a/services/messageservice.cpp +++ b/services/messageservice.cpp @@ -270,26 +270,45 @@ void MessageService::addChannelToBlockList( const QString &pId ) void MessageService::searchMessage( const QString &pTerm, const QString &pRoom ) { if ( mServer ) { - DdpCallback ddpSuccess = [ = ]( const QJsonObject & pResponse, + auto ddpSuccess = [ = ]( const QJsonObject & pResponse, MeteorDDP * pDdp ) { Q_UNUSED( pDdp ) if ( pResponse.contains( "result" ) ) { QJsonObject result = pResponse["result"].toObject(); - if ( result.contains( "messages" ) ) { - QJsonArray messagesArray = result["messages"].toArray(); - MessageList messageList; + auto major = std::get<0>( RocketChatServerConfig::serverVersion ); + auto minor = std::get<1>( RocketChatServerConfig::serverVersion ); + auto patch = std::get<2>( RocketChatServerConfig::serverVersion ); - for ( const auto message : messagesArray ) { - messageList.append( parseMessage( message.toObject() ) ); + MessageList messageList; + + if ( major >= 0 && minor >= 70 ) { + if ( result.contains( "message" ) ) { + auto message = result["message"].toObject(); + + if ( message.contains( "docs" ) ) { + auto docs = message["docs"].toArray(); + + for ( const auto doc : docs ) { + messageList.append( parseMessage( doc.toObject() ) ); + } + } } + } else { + if ( result.contains( "messages" ) ) { + auto messagesArray = result["messages"].toArray(); - if ( !messageList.isEmpty() ) { - auto result = QMetaObject::invokeMethod( mSearchResults, "setSearchResults", Q_ARG( MessageList, messageList ) ); - Q_ASSERT( result ); + for ( const auto message : messagesArray ) { + messageList.append( parseMessage( message.toObject() ) ); + } } } + + if ( !messageList.isEmpty() ) { + auto result = QMetaObject::invokeMethod( mSearchResults, "setSearchResults", Q_ARG( MessageList, messageList ) ); + Q_ASSERT( result ); + } } }; diff --git a/services/messageservice.h b/services/messageservice.h index 6862389909e52873971788c36e03aa88bcab79b7..48c432d94690cb923e011287790e3286f77e3e28 100644 --- a/services/messageservice.h +++ b/services/messageservice.h @@ -19,7 +19,7 @@ ********************************************************************************************/ - +#pragma once #ifndef MESSAGESERVICE_H #define MESSAGESERVICE_H @@ -65,8 +65,8 @@ class MessageService : public QObject void addUserToBlockList( const QString &pId ); void addChannelToBlockList( const QString &pId ); void searchMessage( const QString &pTerm, const QString &pRoom ); - void deleteMessagesNotInList(MessageMap *pMessages, QString pChannelId, bool pCheckForYounger); -protected: + void deleteMessagesNotInList( MessageMap *pMessages, QString pChannelId, bool pCheckForYounger ); + protected: QRegularExpression mReplyRegeEx; EmojiRepo *mEmojiRepo; MessagesModel *mMessagesModel;