diff --git a/services/rocketchatchannelservice.cpp b/services/rocketchatchannelservice.cpp
index 08c0cbe6a6387048251200b32592c0f23da0b509..f1fcd4dc6682dc289e46bc5ae7fe1e344e97b05c 100755
--- a/services/rocketchatchannelservice.cpp
+++ b/services/rocketchatchannelservice.cpp
@@ -466,6 +466,7 @@ void RocketChatChannelService::searchRoom( const QString &pTerm, const QString &
         qDebug() << data;
         channelVector channelList;
         QHash<QString, bool> ids;
+        QHash<QString, bool> names;
 
         if ( data.contains( "rooms" ) ) {
             QJsonArray rooms = data["rooms"].toArray();
@@ -480,6 +481,7 @@ void RocketChatChannelService::searchRoom( const QString &pTerm, const QString &
                     QSharedPointer<RocketChatChannel> ptr( new RocketChatChannel( mServer, mMessageService, id, name, type ) );
                     channelList.append( ptr );
                     ids[id] = true;
+                    names[name] = true;
                 }
             }
         }
@@ -499,11 +501,12 @@ void RocketChatChannelService::searchRoom( const QString &pTerm, const QString &
                     ptr->setUsername( username );
                     channelList.append( ptr );
                     ids[id] = true;
+                    names[name] = true;
                 }
             }
         }
 
-        channelList << searchRoomLocal( pTerm, ids, pType );
+        channelList << searchRoomLocal( pTerm, ids, pType, names );
 
         if ( channelList.size() ) {
             qSort( channelList.begin(), channelList.end(), []( const QSharedPointer<RocketChatChannel> &v1, const QSharedPointer<RocketChatChannel> &v2 )->bool{
@@ -513,23 +516,23 @@ void RocketChatChannelService::searchRoom( const QString &pTerm, const QString &
         }
     };
 
-    QSharedPointer<RestSpotlightRequest> request( new RestSpotlightRequest( pTerm, pType ) );
+    QSharedPointer<RestSpotlightRequest> request( new RestSpotlightRequest( pTerm, "" ) );
     request->setSuccess( success );
 
     mServer->sendApiRequest( request );
 }
 
-channelVector RocketChatChannelService::searchRoomLocal( const QString &pTerm, const QHash<QString, bool>  &pFilter, const QString &pType )
+channelVector RocketChatChannelService::searchRoomLocal( const QString &pTerm, const QHash<QString, bool>  &pFilter, const QString &pType, const QHash<QString, bool> &pNames )
 {
     channelVector list;
 
     for ( auto channel : mChannels->getElements() ) {
         QString id = channel->getRoomId();
         QString type = channel->getType();
+        QString name = channel->getName();
+        QString username = channel->getUsername();
 
-        if ( !pFilter.contains( id ) && ( pType.isEmpty() || pType == type ) ) {
-            QString name = channel->getName();
-            QString username = channel->getUsername();
+        if ( !pFilter.contains( id ) && !pNames.contains( name ) && pNames.contains( username ) && ( pType.isEmpty() || pType == type ) ) {
 
             if ( name.indexOf( pTerm, Qt::CaseInsensitive ) != -1 || username.indexOf( pTerm, Qt::CaseInsensitive ) != -1 ) {
                 list.append( channel );
@@ -558,18 +561,37 @@ void RocketChatChannelService::openPrivateChannelWith( QString pUsername )
 
                 //TODO: fix
                 if ( !mChannels->contains( rid ) ) {
-                    channel = createChannelObject( rid, pUsername, "d" );
+                    DdpCallback success = [ = ]( QJsonObject pResponse, MeteorDDP * pDdp ) {
+                        if ( pResponse.contains( "result" ) ) {
+                            QString name = pResponse["fname"].toString();
+                            QString username = pResponse["name"].toString();
+                            QString id = pResponse["_id"].toString();
+                            QSharedPointer<RocketChatChannel> channel = createChannelObject( id, name, "d", username );
+
+                            mServer->loadRecentHistory( rid );
+
+                            if ( !channel.isNull() ) {
+                                emit channelsLoaded( {channel}, true );
+                                mServer->sendDdprequest( subRoom );
+                                mServer->sendDdprequest( subMessages );
+                                emit directChannelReady( channel->getName(), "d" );
+                            }
+                        }
+                    };
+                    QSharedPointer<RocketChatGetRoomByNameAndType> detailsRequest( new RocketChatGetRoomByNameAndType( pUsername, "d" ) );
+                    detailsRequest->setSuccess( success );
+                    mServer->sendDdprequest( detailsRequest );
                 } else {
                     channel = mChannels->get( rid );
-                }
 
-                mServer->loadRecentHistory( rid );
+                    mServer->loadRecentHistory( rid );
 
-                if ( !channel.isNull() ) {
-                    emit channelsLoaded( {channel}, true );
-                    mServer->sendDdprequest( subRoom );
-                    mServer->sendDdprequest( subMessages );
-                    emit directChannelReady( channel->getName(), "d" );
+                    if ( !channel.isNull() ) {
+                        emit channelsLoaded( {channel}, true );
+                        mServer->sendDdprequest( subRoom );
+                        mServer->sendDdprequest( subMessages );
+                        emit directChannelReady( channel->getName(), "d" );
+                    }
                 }
             }
         }
diff --git a/services/rocketchatchannelservice.h b/services/rocketchatchannelservice.h
index 2198d5e6520d2a7dfe8c5a4f385da13007fd34a1..e24d25e0fbe190b80dc93975cccd81234048a3ec 100755
--- a/services/rocketchatchannelservice.h
+++ b/services/rocketchatchannelservice.h
@@ -90,7 +90,7 @@ class RocketChatChannelService : public QObject
 
         void searchRoom( const QString &pTerm, const QString &pType );
 
-        channelVector searchRoomLocal( const QString &pTerm, const QHash<QString, bool> &pFilter, const QString &pType );
+        channelVector searchRoomLocal( const QString &pTerm, const QHash<QString, bool> &pFilter, const QString &pType, const QHash<QString, bool> &pNames );
 
         ~RocketChatChannelService();