diff --git a/rocketchat.cpp b/rocketchat.cpp index 359ad362f89414bba88323ebe3fb21d98297e3ca..1c11283d5e826486efc3789738365f7fae6fd44e 100755 --- a/rocketchat.cpp +++ b/rocketchat.cpp @@ -87,7 +87,7 @@ RocketChat::RocketChat( QGuiApplication *app ) #endif qRegisterMetaType<ConnectionState>( "ConnectionState" ); qRegisterMetaType<Qt::ApplicationState>( "Qt::ApplicationState" ); - qInstallMessageHandler( customOutput ); + // qInstallMessageHandler( customOutput ); } RocketChat::~RocketChat() diff --git a/rocketchatserver.cpp b/rocketchatserver.cpp index fbd050e04f2a18fad536c2dff4738e0c4c257773..539f09fb070aef4f9709c4a7a987f14c64b8d434 100755 --- a/rocketchatserver.cpp +++ b/rocketchatserver.cpp @@ -981,11 +981,20 @@ void RocketChatServerData::handleChannelMessage( const QJsonObject &pMessage ) if ( firstArg == QStringLiteral( "insert" ) || firstArg == QStringLiteral( "inserted" ) ) { QJsonObject newChannel = args[1].toObject(); - if ( newChannel.contains( QStringLiteral( "name" ) ) && newChannel.contains( QStringLiteral( "rid" ) ) && newChannel.contains( "t" ) ) { + if ( newChannel.contains( QStringLiteral( "name" ) ) && ( newChannel.contains( QStringLiteral( "rid" ) ) || newChannel.contains( QStringLiteral( "_id" ) ) ) && newChannel.contains( "t" ) ) { QString name = newChannel[QStringLiteral( "name" )].toString(); - QString rid = newChannel[QStringLiteral( "rid" )].toString(); + QString rid; - if ( !mChannels->contains( QStringLiteral( "id" ) ) ) { + if ( newChannel.contains( "rid" ) ) { + rid = newChannel[QStringLiteral( "rid" )].toString(); + } else if ( newChannel.contains( QStringLiteral( "_id" ) ) ) { + rid = newChannel[QStringLiteral( "_id" )].toString(); + } else { + qWarning() << "invalid channel inserted message"; + return ; + } + + if ( !mChannels->contains( rid ) ) { auto channel = mChannelService->createChannelObject( rid, name, newChannel["t"].toString() ); if ( !channel.isNull() ) { @@ -1001,7 +1010,17 @@ void RocketChatServerData::handleChannelMessage( const QJsonObject &pMessage ) } else if ( firstArg == QStringLiteral( "updated" ) ) { QJsonObject data = args[1].toObject(); int unread = data[QStringLiteral( "unread" )].toInt(); - QString rid = data[QStringLiteral( "rid" )].toString(); + QString rid; + + if ( data.contains( "rid" ) ) { + rid = data[QStringLiteral( "rid" )].toString(); + } else if ( data.contains( QStringLiteral( "_id" ) ) ) { + rid = data[QStringLiteral( "_id" )].toString(); + } else { + qWarning() << "invalid channel update message"; + return ; + } + QString type = data[QStringLiteral( "t" )].toString(); bool blocked = false; QString name = data[QStringLiteral( "name" )].toString();