From 9de2003a8aa6ecbf48a01c84ba12ec55bc5bb361 Mon Sep 17 00:00:00 2001 From: Armin Felder <armin.felder@osalliance.com> Date: Mon, 25 Jun 2018 19:41:51 +0200 Subject: [PATCH] improved filter --- services/rocketchatchannelservice.cpp | 64 ++++++++++++++------------- 1 file changed, 34 insertions(+), 30 deletions(-) diff --git a/services/rocketchatchannelservice.cpp b/services/rocketchatchannelservice.cpp index bab0ff9..cf6f385 100755 --- a/services/rocketchatchannelservice.cpp +++ b/services/rocketchatchannelservice.cpp @@ -470,40 +470,44 @@ void RocketChatChannelService::searchRoom( const QString &pTerm, const QString & QHash<QString, bool> ids; QHash<QString, bool> names; - if ( data.contains( "rooms" ) ) { - QJsonArray rooms = data["rooms"].toArray(); - - for ( auto room : rooms ) { - QJsonObject roomObj = room.toObject(); - - if ( roomObj.contains( "_id" ) && roomObj.contains( "name" ) && roomObj.contains( "t" ) ) { - QString name = roomObj["name"].toString(); - QString id = roomObj["_id"].toString(); - QString type = roomObj["t"].toString(); - QSharedPointer<RocketChatChannel> ptr( new RocketChatChannel( mServer, mMessageService, id, name, type ) ); - channelList.append( ptr ); - ids[id] = true; - names[name] = true; + if ( pType != "d" ) { + if ( data.contains( "rooms" ) ) { + QJsonArray rooms = data["rooms"].toArray(); + + for ( auto room : rooms ) { + QJsonObject roomObj = room.toObject(); + + if ( roomObj.contains( "_id" ) && roomObj.contains( "name" ) && roomObj.contains( "t" ) ) { + QString name = roomObj["name"].toString(); + QString id = roomObj["_id"].toString(); + QString type = roomObj["t"].toString(); + QSharedPointer<RocketChatChannel> ptr( new RocketChatChannel( mServer, mMessageService, id, name, type ) ); + channelList.append( ptr ); + ids[id] = true; + names[name] = true; + } } } } - if ( data.contains( "users" ) ) { - QJsonArray rooms = data["users"].toArray(); - - for ( auto room : rooms ) { - QJsonObject roomObj = room.toObject(); - - if ( roomObj.contains( "_id" ) && roomObj.contains( "name" ) && roomObj.contains( "username" ) ) { - QString name = roomObj["name"].toString(); - QString id = roomObj["_id"].toString(); - QString type = "d"; - QString username = roomObj["username"].toString(); - QSharedPointer<RocketChatChannel> ptr( new RocketChatChannel( mServer, mMessageService, id, name, type ) ); - ptr->setUsername( username ); - channelList.append( ptr ); - ids[id] = true; - names[name] = true; + if ( pType == "d" || pType.isEmpty() ) { + if ( data.contains( "users" ) ) { + QJsonArray rooms = data["users"].toArray(); + + for ( auto room : rooms ) { + QJsonObject roomObj = room.toObject(); + + if ( roomObj.contains( "_id" ) && roomObj.contains( "name" ) && roomObj.contains( "username" ) ) { + QString name = roomObj["name"].toString(); + QString id = roomObj["_id"].toString(); + QString type = "d"; + QString username = roomObj["username"].toString(); + QSharedPointer<RocketChatChannel> ptr( new RocketChatChannel( mServer, mMessageService, id, name, type ) ); + ptr->setUsername( username ); + channelList.append( ptr ); + ids[id] = true; + names[name] = true; + } } } } -- GitLab