diff --git a/CustomModels/channelmodel.cpp b/CustomModels/channelmodel.cpp index e2712ddeaf4da82d47b2460bf0af43dd3ba23671..19d454c93c622d71a597760b0fb7bc92729a1c2b 100644 --- a/CustomModels/channelmodel.cpp +++ b/CustomModels/channelmodel.cpp @@ -38,103 +38,105 @@ QVariant ChannelModel::data( const QModelIndex &index, int role ) const auto currentChannel = channelList.at( row ); - auto roleType = static_cast( role ); + if ( !currentChannel.isNull() ) { + auto roleType = static_cast( role ); - switch ( roleType ) { - case ChannelRoles::name: - return currentChannel->getName(); + switch ( roleType ) { + case ChannelRoles::name: + return currentChannel->getName(); - case ChannelRoles::roomId: - return currentChannel->getRoomId(); + case ChannelRoles::roomId: + return currentChannel->getRoomId(); - case ChannelRoles::lastMessageText: { - auto channel = channelList.at( row ); - auto message = channel->getYoungestMessage(); + case ChannelRoles::lastMessageText: { + auto channel = channelList.at( row ); + auto message = channel->getYoungestMessage(); - if ( message.isNull() ) { - return ""; - } + if ( message.isNull() ) { + return ""; + } + + if ( message->getMessageType() == QStringLiteral( "file" ) || message->getMessageType() == QStringLiteral( "image" ) || message->getMessageType() == QStringLiteral( "audio" ) ) { + return tr( QByteArrayLiteral( "file upload" ) ); + } - if ( message->getMessageType() == QStringLiteral( "file" ) || message->getMessageType() == QStringLiteral( "image" ) || message->getMessageType() == QStringLiteral( "audio" ) ) { - return tr( QByteArrayLiteral( "file upload" ) ); + auto messageText = message->getMessageString(); + messageText = messageText.replace( "getMessageString(); - messageText = messageText.replace( "getType(); - case ChannelRoles::channelType: - return currentChannel->getType(); + case ChannelRoles::unreadMessages: + return currentChannel->getUnreadMessages(); - case ChannelRoles::unreadMessages: - return currentChannel->getUnreadMessages(); + case ChannelRoles::readonly: + return currentChannel->getReadOnly() || currentChannel->getArchived() || currentChannel->getBlocked(); - case ChannelRoles::readonly: - return currentChannel->getReadOnly() || currentChannel->getArchived() || currentChannel->getBlocked(); + case ChannelRoles::ownerId: + return currentChannel->getOwnerId(); - case ChannelRoles::ownerId: - return currentChannel->getOwnerId(); + case ChannelRoles::archived: + return currentChannel->getArchived(); - case ChannelRoles::archived: - return currentChannel->getArchived(); + case ChannelRoles::blocked: + return currentChannel->getBlocked(); - case ChannelRoles::blocked: - return currentChannel->getBlocked(); + case ChannelRoles::username: + return currentChannel->getUsername(); - case ChannelRoles::username: - return currentChannel->getUsername(); + case ChannelRoles::userStatus: { + int status = 0; + auto partner = currentChannel->getChatPartner(); - case ChannelRoles::userStatus: { - int status = 0; - auto partner = currentChannel->getChatPartner(); + if ( !partner.isNull() ) { + switch ( partner->getStatus() ) { + case RocketChatUser::status::ONLINE : + status = 0; + break; - if ( !partner.isNull() ) { - switch ( partner->getStatus() ) { - case RocketChatUser::status::ONLINE : - status = 0; - break; + case RocketChatUser::status::AWAY : + status = 1; + break; - case RocketChatUser::status::AWAY : - status = 1; - break; + case RocketChatUser::status::OFFLINE: + status = 2; + break; - case RocketChatUser::status::OFFLINE: - status = 2; - break; + case RocketChatUser::status::BUSY: + status = 3; + break; + } - case RocketChatUser::status::BUSY: - status = 3; - break; } + return status; } - return status; - } - - case ChannelRoles::deleted: - return currentChannel->getDeleted(); + case ChannelRoles::deleted: + return currentChannel->getDeleted(); - case ChannelRoles::ownerName: - return currentChannel->getOwnerName(); + case ChannelRoles::ownerName: + return currentChannel->getOwnerName(); - case ChannelRoles::avatarImg: { - auto avatarImg = currentChannel->getAvatarImg(); + case ChannelRoles::avatarImg: { + auto avatarImg = currentChannel->getAvatarImg(); - if ( !avatarImg.isNull() ) { - auto path = Utils::getPathPrefix() + avatarImg->getFilePath(); + if ( !avatarImg.isNull() ) { + auto path = Utils::getPathPrefix() + avatarImg->getFilePath(); - if ( path.endsWith( "svg" ) ) { - return "qrc:res/user-identity.svg"; + if ( path.endsWith( "svg" ) ) { + return "qrc:res/user-identity.svg"; + } else { + return path; + } } else { - return path; + return ""; } - } else { - return ""; } - } + } } return QVariant(); @@ -174,6 +176,8 @@ bool ChannelModel::addChannelsSlot( const QListgetRoomId().isEmpty() && !duplicateCheck.contains( channel->getRoomId() ) ) { //connect( channel.data(), &RocketChatChannel::messageAdded, this, &ChannelModel::onNewerMessage, Qt::UniqueConnection ); @@ -197,9 +201,9 @@ bool ChannelModel::addChannelsSlot( const QList > RocketChatChannelService::processChann qint64 updatedAt = -1; //don't ask ... - if ( currentChannelObject.contains( QStringLiteral( "_updatedAt" ) ) ) { + if ( currentChannelObject.contains( QStringLiteral( "_updatedAt" ) ) && !currentChannelObject.contains( QStringLiteral( "ls" ) ) ) { auto updatedObj = currentChannelObject[QStringLiteral( "_updatedAt" )].toObject(); updatedAt = static_cast( updatedObj[QStringLiteral( "$date" )].toDouble() ); }