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