fix ephemeral messages #LINQT-1880

This commit is contained in:
Gaelle Braud 2025-08-21 17:14:56 +02:00
parent 969995283a
commit 2361f49c1d
2 changed files with 7 additions and 3 deletions

View file

@ -59,7 +59,7 @@ QSharedPointer<ChatCore> EventLogList::getChatCore() const {
return mChatCore; return mChatCore;
} }
void EventLogList::connectItem(const QSharedPointer<EventLogCore> item) { void EventLogList::connectItem(const QSharedPointer<EventLogCore> &item) {
auto message = item->getChatMessageCore(); auto message = item->getChatMessageCore();
if (message) { if (message) {
connect(message.get(), &ChatMessageCore::deleted, this, [this, item] { connect(message.get(), &ChatMessageCore::deleted, this, [this, item] {
@ -89,6 +89,7 @@ void EventLogList::setChatCore(QSharedPointer<ChatCore> core) {
auto it = std::find_if(eventsList.begin(), eventsList.end(), auto it = std::find_if(eventsList.begin(), eventsList.end(),
[event](const QSharedPointer<EventLogCore> item) { return item == event; }); [event](const QSharedPointer<EventLogCore> item) { return item == event; });
if (it == eventsList.end()) { if (it == eventsList.end()) {
connectItem(event);
add(event); add(event);
int index; int index;
get(event.get(), &index); get(event.get(), &index);
@ -154,7 +155,10 @@ void EventLogList::setSelf(QSharedPointer<EventLogList> me) {
emit listAboutToBeReset(); emit listAboutToBeReset();
for (auto &event : getSharedList<EventLogCore>()) { for (auto &event : getSharedList<EventLogCore>()) {
auto message = event->getChatMessageCore(); auto message = event->getChatMessageCore();
if (message) disconnect(message.get(), &ChatMessageCore::deleted, this, nullptr); if (message) {
disconnect(message.get(), &ChatMessageCore::ephemeralDurationChanged, this, nullptr);
disconnect(message.get(), &ChatMessageCore::deleted, this, nullptr);
}
} }
if (!mChatCore) return; if (!mChatCore) return;
auto events = mChatCore->getEventLogList(); auto events = mChatCore->getEventLogList();

View file

@ -45,7 +45,7 @@ public:
void setChatCore(QSharedPointer<ChatCore> core); void setChatCore(QSharedPointer<ChatCore> core);
void setChatGui(ChatGui *chat); void setChatGui(ChatGui *chat);
void connectItem(const QSharedPointer<EventLogCore> item); void connectItem(const QSharedPointer<EventLogCore> &item);
int findFirstUnreadIndex(); int findFirstUnreadIndex();