From b9255803fb32aaf06700d47153bdc802881f1a66 Mon Sep 17 00:00:00 2001
From: Loren Burkholder <computersemiexpert@outlook.com>
Date: Sat, 11 Sep 2021 19:45:01 -0400
Subject: [PATCH] Streamline getting other user id from invited direct chat

---
 src/Cache.cpp                  | 16 ++++------------
 src/Cache.h                    |  7 +++----
 src/Cache_p.h                  |  6 +++---
 src/timeline/RoomlistModel.cpp |  6 +++++-
 4 files changed, 15 insertions(+), 20 deletions(-)

diff --git a/src/Cache.cpp b/src/Cache.cpp
index 6be616338..b1fd0ce0f 100644
--- a/src/Cache.cpp
+++ b/src/Cache.cpp
@@ -2614,12 +2614,6 @@ Cache::getInviteRoomName(lmdb::txn &txn, lmdb::dbi &statesdb, lmdb::dbi &members
         return QString("Empty Room");
 }
 
-RoomMember
-Cache::getDirectInviteMember(const std::string &room_id)
-{
-        return getMembersFromInvitedRoom(room_id, 0, 1).front();
-}
-
 QString
 Cache::getInviteRoomAvatarUrl(lmdb::txn &txn, lmdb::dbi &statesdb, lmdb::dbi &membersdb)
 {
@@ -2784,9 +2778,7 @@ Cache::getMembers(const std::string &room_id, std::size_t startIndex, std::size_
 }
 
 std::vector<RoomMember>
-Cache::getMembersFromInvitedRoom(const std::string &room_id,
-                                 std::size_t startIndex,
-                                 std::size_t len)
+Cache::getMembersFromInvite(const std::string &room_id, std::size_t startIndex, std::size_t len)
 {
         auto txn    = ro_txn(env_);
         auto db     = getInviteMembersDb(txn, room_id);
@@ -4864,10 +4856,10 @@ getMembers(const std::string &room_id, std::size_t startIndex, std::size_t len)
         return instance_->getMembers(room_id, startIndex, len);
 }
 
-RoomMember
-getDirectInviteMember(const std::string &room_id)
+std::vector<RoomMember>
+getMembersFromInvite(const std::string &room_id, std::size_t startIndex, std::size_t len)
 {
-        return instance_->getDirectInviteMember(room_id);
+        return instance_->getMembersFromInvite(room_id, startIndex, len);
 }
 
 void
diff --git a/src/Cache.h b/src/Cache.h
index 2c0247223..f86264300 100644
--- a/src/Cache.h
+++ b/src/Cache.h
@@ -83,10 +83,9 @@ getRoomAvatarUrl(lmdb::txn &txn, lmdb::dbi &statesdb, lmdb::dbi &membersdb);
 //! Retrieve member info from a room.
 std::vector<RoomMember>
 getMembers(const std::string &room_id, std::size_t startIndex = 0, std::size_t len = 30);
-
-//! Get the other person from an invite to a direct chat.
-RoomMember
-getDirectInviteMember(const std::string &room_id);
+//! Retrive member info from an invite.
+std::vector<RoomMember>
+getMembersFromInvite(const std::string &room_id, std::size_t start_index = 0, std::size_t len = 30);
 
 bool
 isInitialized();
diff --git a/src/Cache_p.h b/src/Cache_p.h
index d46050489..e98b1c34f 100644
--- a/src/Cache_p.h
+++ b/src/Cache_p.h
@@ -110,9 +110,9 @@ public:
                                            std::size_t startIndex = 0,
                                            std::size_t len        = 30);
 
-        std::vector<RoomMember> getMembersFromInvitedRoom(const std::string &room_id,
-                                                          std::size_t startIndex = 0,
-                                                          std::size_t len        = 30);
+        std::vector<RoomMember> getMembersFromInvite(const std::string &room_id,
+                                                     std::size_t startIndex = 0,
+                                                     std::size_t len        = 30);
         size_t memberCount(const std::string &room_id);
 
         void saveState(const mtx::responses::Sync &res);
diff --git a/src/timeline/RoomlistModel.cpp b/src/timeline/RoomlistModel.cpp
index c29e1adff..afe535603 100644
--- a/src/timeline/RoomlistModel.cpp
+++ b/src/timeline/RoomlistModel.cpp
@@ -165,9 +165,13 @@ RoomlistModel::data(const QModelIndex &index, int role) const
                         case Roles::Tags:
                                 return QStringList();
                         case Roles::IsDirect:
+                                // The list of users from the room doesn't contain the invited
+                                // users, so we won't factor the invite into the count
                                 return room.member_count == 1;
                         case Roles::DirectChatOtherUserId:
-                                return cache::getDirectInviteMember(roomid.toStdString()).user_id;
+                                return cache::getMembersFromInvite(roomid.toStdString(), 0, 1)
+                                  .front()
+                                  .user_id;
                         default:
                                 return {};
                         }
-- 
GitLab