diff --git a/src/timeline/RoomlistModel.cpp b/src/timeline/RoomlistModel.cpp
index 88411236..d12fb426 100644
--- a/src/timeline/RoomlistModel.cpp
+++ b/src/timeline/RoomlistModel.cpp
@@ -76,7 +76,7 @@ RoomlistModel::roleNames() const
{IsSpace, "isSpace"},
{Tags, "tags"},
{ParentSpaces, "parentSpaces"},
- {RoomMemberCount, "roomMemberCount"},
+ {IsDirect, "isDirect"},
{DirectChatAvatarMxid, "directChatAvatarMxid"},
};
}
@@ -131,8 +131,8 @@ RoomlistModel::data(const QModelIndex &index, int role) const
list.push_back(QString::fromStdString(t));
return list;
}
- case Roles::RoomMemberCount:
- return room->roomMemberCount();
+ case Roles::IsDirect:
+ return room->isDirect();
case Roles::DirectChatAvatarMxid:
return room->directChatAvatarMxid();
default:
diff --git a/src/timeline/RoomlistModel.h b/src/timeline/RoomlistModel.h
index aca74ea1..57669087 100644
--- a/src/timeline/RoomlistModel.h
+++ b/src/timeline/RoomlistModel.h
@@ -65,7 +65,7 @@ public:
IsPreviewFetched,
Tags,
ParentSpaces,
- RoomMemberCount,
+ IsDirect,
DirectChatAvatarMxid,
};
diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp
index 4daf44f3..0e1e8f5d 100644
--- a/src/timeline/TimelineModel.cpp
+++ b/src/timeline/TimelineModel.cpp
@@ -817,6 +817,12 @@ TimelineModel::syncState(const mtx::responses::State &s)
emit roomAvatarUrlChanged();
emit roomNameChanged();
emit roomMemberCountChanged();
+
+ if (roomMemberCount() <= 2)
+ {
+ emit isDirectChanged();
+ emit directChatAvatarMxidChanged();
+ }
} else if (std::holds_alternative<StateEvent<state::Encryption>>(e)) {
this->isEncrypted_ = cache::isRoomEncrypted(room_id_.toStdString());
emit encryptionChanged();
diff --git a/src/timeline/TimelineModel.h b/src/timeline/TimelineModel.h
index 8c34fc1d..03e33066 100644
--- a/src/timeline/TimelineModel.h
+++ b/src/timeline/TimelineModel.h
@@ -176,6 +176,7 @@ class TimelineModel : public QAbstractListModel
Q_PROPERTY(bool isEncrypted READ isEncrypted NOTIFY encryptionChanged)
Q_PROPERTY(bool isSpace READ isSpace CONSTANT)
Q_PROPERTY(int trustlevel READ trustlevel NOTIFY trustlevelChanged)
+ Q_PROPERTY(bool isDirect READ isDirect NOTIFY isDirectChanged)
Q_PROPERTY(
QString directChatAvatarMxid READ directChatAvatarMxid NOTIFY directChatAvatarMxidChanged)
Q_PROPERTY(InputBar *input READ input CONSTANT)
@@ -294,6 +295,7 @@ public:
bool isEncrypted() const { return isEncrypted_; }
crypto::Trust trustlevel() const;
int roomMemberCount() const;
+ bool isDirect() const { return roomMemberCount() <= 2; } // TODO: handle invites
QString directChatAvatarMxid() const;
std::optional<mtx::events::collections::TimelineEvents> eventById(const QString &id)
@@ -394,6 +396,7 @@ signals:
void roomTopicChanged();
void roomAvatarUrlChanged();
void roomMemberCountChanged();
+ void isDirectChanged();
void directChatAvatarMxidChanged();
void permissionsChanged();
void forwardToRoom(mtx::events::collections::TimelineEvents *e, QString roomId);
|