From d75131cb8001de2f7aa7b5d776b7a95e13753c25 Mon Sep 17 00:00:00 2001 From: Armin Felder <armin.felder@osalliance.com> Date: Mon, 25 Jun 2018 03:53:34 +0200 Subject: [PATCH] correct channelname --- CustomModels/channelmodel.cpp | 6 ++++ CustomModels/channelmodel.h | 3 +- persistancelayer.cpp | 17 +++++++---- persistancelayer.h | 4 +-- repos/entities/rocketchatchannel.cpp | 17 ++--------- repos/entities/rocketchatchannel.h | 6 ++-- services/rocketchatchannelservice.cpp | 43 +++++++++++++++++++++++---- services/rocketchatchannelservice.h | 2 ++ 8 files changed, 65 insertions(+), 33 deletions(-) diff --git a/CustomModels/channelmodel.cpp b/CustomModels/channelmodel.cpp index 975a194..23a7d36 100644 --- a/CustomModels/channelmodel.cpp +++ b/CustomModels/channelmodel.cpp @@ -93,6 +93,11 @@ QVariant ChannelModel::data( const QModelIndex &index, int role ) const if ( role == blocked ) { return currentChannel->getBlocked(); } + + if ( role == username ) { + return currentChannel->getUsername(); + } + return QVariant(); } @@ -130,6 +135,7 @@ QHash<int, QByteArray> ChannelModel::roleNames() const roles[deleted] = QByteArrayLiteral( "deleted" ); roles[ownerId] = QByteArrayLiteral( "ownerId" ); roles[ownerName] = QByteArrayLiteral( "ownerName" ); + roles[username] = QByteArrayLiteral( "username" ); return roles; } diff --git a/CustomModels/channelmodel.h b/CustomModels/channelmodel.h index 62f6fd9..681e9d3 100644 --- a/CustomModels/channelmodel.h +++ b/CustomModels/channelmodel.h @@ -49,7 +49,8 @@ class ChannelModel : public QAbstractListModel blocked, deleted, ownerId, - ownerName + ownerName, + username }; public: ChannelModel(); diff --git a/persistancelayer.cpp b/persistancelayer.cpp index 119a72a..c3602f3 100755 --- a/persistancelayer.cpp +++ b/persistancelayer.cpp @@ -97,7 +97,8 @@ void PersistanceLayer::initShema() "muted text," "archived bool," "joined bool, " - "blocked bool DEFAULT 0)" ) ); + "blocked bool DEFAULT 0, " + "username varchar(100) DEFAULT \"\")" ) ); if ( !query.exec() ) { qWarning() << query.lastError(); @@ -298,6 +299,9 @@ void PersistanceLayer::upgradeSchema() } else if ( dbVersion < 3 ) { currentTarget = 3; sqlFile.setFileName( QStringLiteral( ":/sql/migrations/3.sql" ) ); + } else if ( dbVersion < 4 ) { + currentTarget = 4; + sqlFile.setFileName( QStringLiteral( ":/sql/migrations/4.sql" ) ); } if ( !sqlFile.open( QIODevice::ReadOnly | QIODevice::Text ) ) { @@ -757,12 +761,12 @@ void PersistanceLayer::setSetting( const QString &pProperty, const QString &pVal } -void PersistanceLayer::addChannel( const QString &pId, const QString &pName, const QString &pType, bool pJoined, bool pReadOnly, const QString &pMuted, bool pArchived, bool pBlocked ) +void PersistanceLayer::addChannel( const QString &pId, const QString &pName, const QString &pType, bool pJoined, bool pReadOnly, const QString &pMuted, bool pArchived, bool pBlocked, const QString &pUsername ) { transaction(); QSqlQuery setChannel; setChannel.prepare( QStringLiteral( "REPLACE INTO rooms " - "(id,name,type,joined,read_only,muted,archived,blocked) VALUES(:id,:name,:type,:joined,:read_only,:muted,:archived,:blocked)" ) ); + "(id,name,type,joined,read_only,muted,archived,blocked,username) VALUES(:id,:name,:type,:joined,:read_only,:muted,:archived,:blocked,:username)" ) ); setChannel.bindValue( QStringLiteral( ":id" ), pId ); setChannel.bindValue( QStringLiteral( ":name" ), pName ); setChannel.bindValue( QStringLiteral( ":joined" ), pJoined ); @@ -771,6 +775,7 @@ void PersistanceLayer::addChannel( const QString &pId, const QString &pName, con setChannel.bindValue( QStringLiteral( ":muted" ), pMuted ); setChannel.bindValue( QStringLiteral( ":archived" ), pArchived ); setChannel.bindValue( QStringLiteral( ":blocked" ), pBlocked ); + setChannel.bindValue( QStringLiteral( ":username" ), pUsername ); if ( !setChannel.exec() ) { qWarning() << setChannel.lastError(); @@ -779,13 +784,13 @@ void PersistanceLayer::addChannel( const QString &pId, const QString &pName, con commit(); } -void PersistanceLayer::addChannel( const QString &pId, const QString &pName, const QString &pType, bool pJoined ) +void PersistanceLayer::addChannel( const QString &pId, const QString &pName, const QString &pType, bool pJoined, const QString &pUsername ) { bool readOnly = false; QString muted = ""; bool archived = false; bool blocked = false; - addChannel( pId, pName, pType, pJoined, readOnly, muted, archived, blocked ); + addChannel( pId, pName, pType, pJoined, readOnly, muted, archived, blocked, pUsername ); } void PersistanceLayer::deleteChannel( const QString &pId ) @@ -1203,6 +1208,7 @@ QList<QVariantHash> PersistanceLayer::getChannels( void ) int mutedCol = rec.indexOf( QStringLiteral( "muted" ) ); int archivedCol = rec.indexOf( QStringLiteral( "archived" ) ); int blocked = rec.indexOf( QStringLiteral( "blocked" ) ); + int usernameCol = rec.indexOf( QStringLiteral( "username" ) ); while ( rooms.next() ) { QVariantHash roomsHash; @@ -1216,6 +1222,7 @@ QList<QVariantHash> PersistanceLayer::getChannels( void ) roomsHash[QStringLiteral( "list" )] = muted.split( ',' ); roomsHash[QStringLiteral( "archived" )] = rooms.value( archivedCol ).toBool(); roomsHash[QStringLiteral( "blocked" )] = rooms.value( blocked ).toBool(); + roomsHash[QStringLiteral( "username" )] = rooms.value( usernameCol ).toString(); roomsList.append( roomsHash ); } } diff --git a/persistancelayer.h b/persistancelayer.h index 23a9d3a..c9dc4df 100755 --- a/persistancelayer.h +++ b/persistancelayer.h @@ -39,8 +39,8 @@ class PersistanceLayer : public QObject void setUserName( const QString & ); void setPassword( const QString & ); void setToken( const QString &, uint ); - void addChannel( const QString &pId, const QString &pName, const QString &pType, bool pJoined, bool pReadOnly, const QString &pMuted, bool pArchived, bool pBlocked ); - void addChannel( const QString &pId, const QString &pName, const QString &pType, bool pJoined ); + void addChannel( const QString &pId, const QString &pName, const QString &pType, bool pJoined, bool pReadOnly, const QString &pMuted, bool pArchived, bool pBlocked, const QString &pUsername ); + void addChannel( const QString &pId, const QString &pName, const QString &pType, bool pJoined, const QString &pUsername ); void deleteChannel( const QString &pId ); void addMessage( const QString &pId, const QString &pRid, const QString &pAuthor, qint64 pTs, const QString &pJson, const QString &pUserId ); void addFileCacheEntry( const QString &pUrl, const QString &pPath ); diff --git a/repos/entities/rocketchatchannel.cpp b/repos/entities/rocketchatchannel.cpp index 92c244a..f0fd26f 100755 --- a/repos/entities/rocketchatchannel.cpp +++ b/repos/entities/rocketchatchannel.cpp @@ -84,6 +84,7 @@ QString RocketChatChannel::getName() const void RocketChatChannel::setName( const QString &value ) { mName = value; + emit dataChanged( mName, "name" ); } @@ -217,20 +218,6 @@ void RocketChatChannel::setArchived( bool value ) mArchived = value; } - -QJsonObject RocketChatChannel::toJsonObject() -{ - QJsonObject currentChannelObject; - currentChannelObject[QStringLiteral( "name" )] = getName(); - currentChannelObject[QStringLiteral( "joined" )] = getJoined(); - currentChannelObject[QStringLiteral( "ro" )] = getReadOnly(); - currentChannelObject[QStringLiteral( "muted" )] = QJsonArray::fromStringList( getMuted() ); - currentChannelObject[QStringLiteral( "archived" )] = getArchived(); - currentChannelObject[QStringLiteral( "type" )] = getType(); - currentChannelObject[QStringLiteral( "roomId" )] = getRoomId(); - return currentChannelObject; -} - bool RocketChatChannel::getSelfMuted() const { return mSelfMuted; @@ -286,7 +273,7 @@ QString RocketChatChannel::getUsername() const return mUsername; } -void RocketChatChannel::setUsername(const QString &username) +void RocketChatChannel::setUsername( const QString &username ) { mUsername = username; } diff --git a/repos/entities/rocketchatchannel.h b/repos/entities/rocketchatchannel.h index 050f94f..e006388 100755 --- a/repos/entities/rocketchatchannel.h +++ b/repos/entities/rocketchatchannel.h @@ -95,8 +95,6 @@ class RocketChatChannel : public QObject bool getArchived() const; void setArchived( bool pValue ); - QJsonObject toJsonObject( void ); - void sendUnsentMessages( void ); bool getSelfMuted() const; @@ -118,9 +116,9 @@ class RocketChatChannel : public QObject void setOwnerId( const QString &ownerId ); QString getUsername() const; - void setUsername(const QString &username); + void setUsername( const QString &username ); -protected: + protected: QString mOwnerName; QString mOwnerId; bool mDeleted; diff --git a/services/rocketchatchannelservice.cpp b/services/rocketchatchannelservice.cpp index d7b082d..08c0cbe 100755 --- a/services/rocketchatchannelservice.cpp +++ b/services/rocketchatchannelservice.cpp @@ -49,6 +49,22 @@ QSharedPointer<RocketChatChannel> RocketChatChannelService::createChannelObject( return ptr; } +QSharedPointer<RocketChatChannel> RocketChatChannelService::createChannelObject( QString pRoomId, QString pName, QString pType, QString pUsername ) +{ + QSharedPointer<RocketChatChannel> ptr( new RocketChatChannel( mServer, mMessageService, pRoomId, pName, pType ) ); + ptr->setUsername( pUsername ); + + if ( Q_LIKELY( mChannels ) ) { + mChannels->add( ptr ); + } else { + qCritical() << "Channelsrepo not available to ChannelService"; + } + + fillChannelWithMessages( ptr ); + + return ptr; +} + QVector<QSharedPointer<RocketChatChannel> > RocketChatChannelService::processChannelData( QJsonArray pChannelArray, bool pJoined, bool pUpdateOnly ) { @@ -68,6 +84,12 @@ QVector<QSharedPointer<RocketChatChannel> > RocketChatChannelService::processCha QString id = currentChannelObject["rid"].toString(); QString name = currentChannelObject["name"].toString(); QString type = currentChannelObject["t"].toString(); + QString username = ""; + + if ( type == "d" ) { + username = name; + name = currentChannelObject["fname"].toString(); + } if ( id == "" ) { id = currentChannelObject["_id"].toString(); @@ -89,19 +111,27 @@ QVector<QSharedPointer<RocketChatChannel> > RocketChatChannelService::processCha if ( mChannels->contains( id ) ) { channel = mChannels->get( id ); } else { - channel = createChannelObject( id, name, type ); + channel = createChannelObject( id, name, type, username ); } if ( !channel.isNull() ) { if ( type == "d" ) { - QString username = currentChannelObject["username"].toString(); - channel->setUsername( username ); + /* QString name = currentChannelObject["name"].toString(); + QString fname = currentChannelObject["fname"].toString(); + + if ( fname.isEmpty() ) { + channel->setName( name ); + } else { + channel->setName( fname ); + } + + channel->setUsername( name );*/ } if ( !name.isEmpty() ) { - channel->setName( currentChannelObject["name"].toString() ); + channel->setName( name ); } if ( currentChannelObject.contains( "ro" ) ) { @@ -223,7 +253,7 @@ void RocketChatChannelService::loadJoinedChannelsFromDb() QVector<QSharedPointer<RocketChatChannel>> channels; for ( const auto &roomHash : roomsList ) { - QSharedPointer<RocketChatChannel> channelPointer = createChannelObject( roomHash["id"].toString(), roomHash["name"].toString(), roomHash["type"].toString() ); + QSharedPointer<RocketChatChannel> channelPointer = createChannelObject( roomHash["id"].toString(), roomHash["name"].toString(), roomHash["type"].toString(), roomHash["username"].toString() ); if ( !channelPointer.isNull() ) { channelPointer->setMuted( roomHash["list"].toStringList() ); @@ -249,11 +279,12 @@ void RocketChatChannelService::persistChannel( QSharedPointer<RocketChatChannel> QString name = pChannel->getName(); QString type = pChannel->getType(); QString muted = pChannel->getMuted().join( "," ); + QString username = pChannel->getUsername(); bool joined = pChannel->getJoined(); bool archived = pChannel->getArchived(); bool readonly = pChannel->getReadOnly(); bool blocked = pChannel->getBlocked(); - mStorage->addChannel( id, name, type, joined, readonly, muted, archived, blocked ); + mStorage->addChannel( id, name, type, joined, readonly, muted, archived, blocked, username ); } /** * Fills the channel with users, which are loaded from the server diff --git a/services/rocketchatchannelservice.h b/services/rocketchatchannelservice.h index 120b58f..2198d5e 100755 --- a/services/rocketchatchannelservice.h +++ b/services/rocketchatchannelservice.h @@ -64,6 +64,8 @@ class RocketChatChannelService : public QObject void setDdp( MeteorDDP *ddp ); QSharedPointer<RocketChatChannel> createChannelObject( QString pRoomId, QString pName, QString pType ); + QSharedPointer<RocketChatChannel> createChannelObject( QString pRoomId, QString pName, QString pType, QString username ); + void openPrivateChannelWith( QString pUsername ); void loadJoinedChannelsFromServer( void ); -- GitLab