Fix creating a new thread locally
Fix creating a new thread locally. We need to listen for the newThread signal and update the thread root event mode content
This commit is contained in:
@@ -113,6 +113,13 @@ void EventMessageContentModel::initializeModel()
|
|||||||
updateReactionModel();
|
updateReactionModel();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
#if Quotient_VERSION_MINOR > 9
|
||||||
|
connect(m_room, &Room::newThread, this, [this](const Thread &newThread) {
|
||||||
|
if (newThread.threadRootId == m_eventId) {
|
||||||
|
resetContent();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
#endif
|
||||||
|
|
||||||
initializeEvent();
|
initializeEvent();
|
||||||
resetModel();
|
resetModel();
|
||||||
@@ -157,12 +164,16 @@ QString EventMessageContentModel::threadRootId() const
|
|||||||
}
|
}
|
||||||
auto roomMessageEvent = eventCast<const RoomMessageEvent>(event.first);
|
auto roomMessageEvent = eventCast<const RoomMessageEvent>(event.first);
|
||||||
#if Quotient_VERSION_MINOR > 9 || (Quotient_VERSION_MINOR == 9 && Quotient_VERSION_PATCH > 1)
|
#if Quotient_VERSION_MINOR > 9 || (Quotient_VERSION_MINOR == 9 && Quotient_VERSION_PATCH > 1)
|
||||||
if (roomMessageEvent && (roomMessageEvent->isThreaded() || m_room->threads().contains(roomMessageEvent->id()))) {
|
if (roomMessageEvent && roomMessageEvent->isThreaded()) {
|
||||||
|
return roomMessageEvent->threadRootEventId();
|
||||||
|
} else if (m_room->threads().contains(roomMessageEvent->id())) {
|
||||||
|
return m_eventId;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
if (roomMessageEvent && roomMessageEvent->isThreaded()) {
|
if (roomMessageEvent && roomMessageEvent->isThreaded()) {
|
||||||
#endif
|
|
||||||
return roomMessageEvent->threadRootEventId();
|
return roomMessageEvent->threadRootEventId();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -306,8 +317,9 @@ QList<MessageComponent> EventMessageContentModel::messageContentComponents(bool
|
|||||||
|
|
||||||
const auto roomMessageEvent = eventCast<const Quotient::RoomMessageEvent>(event.first);
|
const auto roomMessageEvent = eventCast<const Quotient::RoomMessageEvent>(event.first);
|
||||||
#if Quotient_VERSION_MINOR > 9 || (Quotient_VERSION_MINOR == 9 && Quotient_VERSION_PATCH > 1)
|
#if Quotient_VERSION_MINOR > 9 || (Quotient_VERSION_MINOR == 9 && Quotient_VERSION_PATCH > 1)
|
||||||
if (m_threadsEnabled && roomMessageEvent && (roomMessageEvent->isThreaded() || m_room->threads().contains(roomMessageEvent->id()))
|
if (m_threadsEnabled && roomMessageEvent
|
||||||
&& roomMessageEvent->id() == roomMessageEvent->threadRootEventId()) {
|
&& ((roomMessageEvent->isThreaded() && roomMessageEvent->id() == roomMessageEvent->threadRootEventId())
|
||||||
|
|| m_room->threads().contains(roomMessageEvent->id()))) {
|
||||||
#else
|
#else
|
||||||
if (m_threadsEnabled && roomMessageEvent && roomMessageEvent->isThreaded() && roomMessageEvent->id() == roomMessageEvent->threadRootEventId()) {
|
if (m_threadsEnabled && roomMessageEvent && roomMessageEvent->isThreaded() && roomMessageEvent->id() == roomMessageEvent->threadRootEventId()) {
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -95,7 +95,9 @@ void ThreadModel::fetchMoreEvents(int max)
|
|||||||
connect(m_currentJob, &Quotient::BaseJob::success, this, [this]() {
|
connect(m_currentJob, &Quotient::BaseJob::success, this, [this]() {
|
||||||
auto newEvents = m_currentJob->chunk();
|
auto newEvents = m_currentJob->chunk();
|
||||||
for (auto &event : newEvents) {
|
for (auto &event : newEvents) {
|
||||||
m_events.push_back(event->id());
|
if (std::find(m_events.begin(), m_events.end(), event->id()) == m_events.end()) {
|
||||||
|
m_events.push_back(event->id());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
addModels();
|
addModels();
|
||||||
@@ -122,7 +124,9 @@ void ThreadModel::addNewEvent(const Quotient::RoomEvent *event)
|
|||||||
if (eventId.isEmpty()) {
|
if (eventId.isEmpty()) {
|
||||||
eventId = event->transactionId();
|
eventId = event->transactionId();
|
||||||
}
|
}
|
||||||
m_events.push_front(eventId);
|
if (std::find(m_events.begin(), m_events.end(), eventId) == m_events.end()) {
|
||||||
|
m_events.push_front(eventId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ThreadModel::addModels()
|
void ThreadModel::addModels()
|
||||||
|
|||||||
@@ -87,6 +87,7 @@ void MessageDelegateBase::setIsThreaded(bool isThreaded)
|
|||||||
m_isThreaded = isThreaded;
|
m_isThreaded = isThreaded;
|
||||||
setAlwaysFillWidth(m_isThreaded || m_compactMode);
|
setAlwaysFillWidth(m_isThreaded || m_compactMode);
|
||||||
setPercentageValues(m_isThreaded || m_compactMode);
|
setPercentageValues(m_isThreaded || m_compactMode);
|
||||||
|
updateAvatar();
|
||||||
Q_EMIT isThreadedChanged();
|
Q_EMIT isThreadedChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ MessageModel::MessageModel(QObject *parent)
|
|||||||
});
|
});
|
||||||
|
|
||||||
connect(this, &MessageModel::threadsEnabledChanged, this, [this]() {
|
connect(this, &MessageModel::threadsEnabledChanged, this, [this]() {
|
||||||
Q_EMIT dataChanged(index(0), index(rowCount() - 1), {ContentModelRole, IsThreadedRole});
|
Q_EMIT dataChanged(index(0), index(rowCount() - 1), {DelegateTypeRole, ContentModelRole, IsThreadedRole, SpecialMarksRole});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user