diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp
index ee5564a5..f5737063 100644
--- a/src/timeline/TimelineModel.cpp
+++ b/src/timeline/TimelineModel.cpp
@@ -28,6 +28,7 @@
#include "MemberList.h"
#include "MxcImageProvider.h"
#include "Olm.h"
+#include "ReadReceiptsModel.h"
#include "TimelineViewManager.h"
#include "Utils.h"
#include "dialogs/RawMessage.h"
@@ -1089,9 +1090,9 @@ TimelineModel::relatedInfo(QString id)
}
void
-TimelineModel::readReceiptsAction(QString id) const
+TimelineModel::showReadReceipts(QString id)
{
- MainWindow::instance()->openReadReceiptsDialog(id);
+ emit openReadReceiptsDialog(new ReadReceiptsModel{id, roomId(), this});
}
void
diff --git a/src/timeline/TimelineModel.h b/src/timeline/TimelineModel.h
index 0e2ce153..82fce257 100644
--- a/src/timeline/TimelineModel.h
+++ b/src/timeline/TimelineModel.h
@@ -20,6 +20,7 @@
#include "InviteesModel.h"
#include "MemberList.h"
#include "Permissions.h"
+#include "ReadReceiptsModel.h"
#include "ui/RoomSettings.h"
#include "ui/UserProfile.h"
@@ -241,7 +242,7 @@ public:
Q_INVOKABLE void openUserProfile(QString userid);
Q_INVOKABLE void editAction(QString id);
Q_INVOKABLE void replyAction(QString id);
- Q_INVOKABLE void readReceiptsAction(QString id) const;
+ Q_INVOKABLE void showReadReceipts(QString id);
Q_INVOKABLE void redactEvent(QString id);
Q_INVOKABLE int idToIndex(QString id) const;
Q_INVOKABLE QString indexToId(int index) const;
@@ -348,6 +349,7 @@ signals:
void typingUsersChanged(std::vector<QString> users);
void replyChanged(QString reply);
void editChanged(QString reply);
+ void openReadReceiptsDialog(ReadReceiptsModel *rr);
void paginationInProgressChanged(const bool);
void newCallEvent(const mtx::events::collections::TimelineEvents &event);
void scrollToIndex(int index);
diff --git a/src/timeline/TimelineViewManager.cpp b/src/timeline/TimelineViewManager.cpp
index a6922be7..58b0d5a8 100644
--- a/src/timeline/TimelineViewManager.cpp
+++ b/src/timeline/TimelineViewManager.cpp
@@ -26,6 +26,7 @@
#include "MainWindow.h"
#include "MatrixClient.h"
#include "MxcImageProvider.h"
+#include "ReadReceiptsModel.h"
#include "RoomsModel.h"
#include "SingleImagePackModel.h"
#include "UserSettingsPage.h"
@@ -205,6 +206,12 @@ TimelineViewManager::TimelineViewManager(CallManager *callManager, ChatPage *par
0,
"InviteesModel",
"InviteesModel needs to be instantiated on the C++ side");
+ qmlRegisterUncreatableType<ReadReceiptsModel>(
+ "im.nheko",
+ 1,
+ 0,
+ "ReadReceiptsModel",
+ "ReadReceiptsModel needs to be instantiated on the C++ side");
static auto self = this;
qmlRegisterSingletonType<MainWindow>(
|