From 93dd51a13e1f287f0e8a9bf0bd18b77e09328028 Mon Sep 17 00:00:00 2001
From: Armin Felder <armin.felder@osalliance.com>
Date: Mon, 19 Nov 2018 17:22:17 +0100
Subject: [PATCH] isad

---
 persistancelayer.cpp                  |  6 +++---
 rocketchatserver.cpp                  | 19 ++++++++++++-------
 rocketchatserver.h                    |  2 ++
 services/rocketchatchannelservice.cpp |  2 ++
 4 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/persistancelayer.cpp b/persistancelayer.cpp
index c110672..f68c61c 100755
--- a/persistancelayer.cpp
+++ b/persistancelayer.cpp
@@ -766,12 +766,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, const QString &pUsername, const QString &pMchatPartnerId )
+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, const QString &pChatPartnerId )
 {
     transaction();
     QSqlQuery setChannel;
     setChannel.prepare( QStringLiteral( "REPLACE INTO rooms "
-                                        "(id,name,type,joined,read_only,muted,archived,blocked,username) VALUES(:id,:name,:type,:joined,:read_only,:muted,:archived,:blocked,:username,:chat_partner_id)" ) );
+                                        "(id,name,type,joined,read_only,muted,archived,blocked,username,chat_partner_id) VALUES(:id,:name,:type,:joined,:read_only,:muted,:archived,:blocked,:username,:chat_partner_id)" ) );
     setChannel.bindValue( QStringLiteral( ":id" ), pId );
     setChannel.bindValue( QStringLiteral( ":name" ), pName );
     setChannel.bindValue( QStringLiteral( ":joined" ), pJoined );
@@ -781,7 +781,7 @@ void PersistanceLayer::addChannel( const QString &pId, const QString &pName, con
     setChannel.bindValue( QStringLiteral( ":archived" ), pArchived );
     setChannel.bindValue( QStringLiteral( ":blocked" ), pBlocked );
     setChannel.bindValue( QStringLiteral( ":username" ), pUsername );
-    setChannel.bindValue( QStringLiteral( ":chat_partner_id" ), pUsername );
+    setChannel.bindValue( QStringLiteral( ":chat_partner_id" ), pChatPartnerId );
 
 
     if ( !setChannel.exec() ) {
diff --git a/rocketchatserver.cpp b/rocketchatserver.cpp
index 01face4..3192470 100755
--- a/rocketchatserver.cpp
+++ b/rocketchatserver.cpp
@@ -96,7 +96,7 @@ void RocketChatServerData::init()
         emit offlineMode();
     }
 
-    mUserId = mStorage->getUserId();
+    setUserId( mStorage->getUserId() );
     mUsername = mStorage->getUserName();
 
     // mEmojisMap.reserve(3000);
@@ -449,7 +449,6 @@ void RocketChatServerData::setUserId( const QString &userId )
         QMetaObject::invokeMethod( userModel, "addUser", Q_ARG( User, user ) );
     }
 
-    mOwnUser = user;
     mUserId = userId;
 
     connect( user.data(), &RocketChatUser::statusChanged, this, [ = ]() {
@@ -574,11 +573,21 @@ void RocketChatServerData::offlineLogin()
     QString userName = mStorage->getUserName();
 
     if ( !userId.isEmpty() && !userName.isEmpty() ) {
-        this->mUserId = userId;
+        setUserId( userId );
         emit loggedIn( QStringLiteral( "default" ) );
     }
 }
 
+QSharedPointer<RocketChatUser> RocketChatServerData::getOwnUser() const
+{
+    return mOwnUser;
+}
+
+void RocketChatServerData::setOwnUser( const QSharedPointer<RocketChatUser> &ownUser )
+{
+    mOwnUser = ownUser;
+}
+
 QString RocketChatServerData::getBaseUrl() const
 {
     QString protocol = "https://";
@@ -656,7 +665,6 @@ void RocketChatServerData::loginWithHash( const QString &pUsername, const QStrin
                 self->mRestApi->setToken( self->mResumeToken );
                 self->mRestApi->setUserId( userId );
                 self->mStorage->commit();
-                self->mUserId = result[QStringLiteral( "id" )].toString();
                 self->mDdpApi->setToken( self->mResumeToken );
                 self->mDdpApi->unsetResponseBinding( request->getFrame() );
                 self->onDDPAuthenticated();
@@ -716,7 +724,6 @@ void RocketChatServerData::loginWithToken( const QString &pUsername, const QStri
                     self->mStorage->setUserId( userId );
                     self->mRestApi->setToken( self->mResumeToken );
                     self->mRestApi->setUserId( userId );
-                    self->mUserId = result[QStringLiteral( "id" )].toString();
                     self->mDdpApi->setToken( self-> mResumeToken );
                     self->mDdpApi->unsetResponseBinding( request->getFrame() );
 
@@ -796,7 +803,6 @@ void RocketChatServerData::loginWtihSamlToken( const QString &pToken )
                     mStorage->setUserId( userId );
                     mRestApi->setToken( mResumeToken );
                     mRestApi->setUserId( userId );
-                    this->mUserId = result[QStringLiteral( "id" )].toString();
                     mDdpApi->setToken( mResumeToken );
                     mDdpApi->unsetResponseBinding( request->getFrame() );
                     
@@ -867,7 +873,6 @@ void RocketChatServerData::loginWithOpenIDToken( const QString &pToken, const QS
                     self->setUserId( userId );
                     self->mRestApi->setToken( mResumeToken );
                     self->mRestApi->setUserId( userId );
-                    self->mUserId = result[QStringLiteral( "id" )].toString();
                     self->mDdpApi->setToken( mResumeToken );
                     self->mDdpApi->unsetResponseBinding( request->getFrame() );
 
diff --git a/rocketchatserver.h b/rocketchatserver.h
index 2398074..e1b8d59 100755
--- a/rocketchatserver.h
+++ b/rocketchatserver.h
@@ -357,6 +357,8 @@ class RocketChatServerData : public MessageListener
     public:
         bool handlesMessage( QJsonObject object );
         QString getBaseUrl() const;
+        QSharedPointer<RocketChatUser> getOwnUser() const;
+        void setOwnUser( const QSharedPointer<RocketChatUser> &ownUser );
 };
 
 #endif // ROCKETCHATSERVER_H
diff --git a/services/rocketchatchannelservice.cpp b/services/rocketchatchannelservice.cpp
index 59824c1..b908cfc 100755
--- a/services/rocketchatchannelservice.cpp
+++ b/services/rocketchatchannelservice.cpp
@@ -279,7 +279,9 @@ void RocketChatChannelService::loadJoinedChannelsFromDb()
                         channelPointer->setChatPartner( user );
                     } else {
                         auto newUser = QSharedPointer<RocketChatUser>( new RocketChatUser( channelPointer->getChatPartnerId() ) );
+                        newUser->setUserName( roomHash["username"].toString() );
                         channelPointer->setChatPartner( newUser );
+                        QMetaObject::invokeMethod( users, "addUser", Q_ARG( User, newUser ) );
                     }
                 }
 
-- 
GitLab