diff --git a/src/messagesadapter.cpp b/src/messagesadapter.cpp index 067ddce22934b723d8ef70b3801ca4f909713b12..cd84c91fa69e9355b9d35bc9a9d2b4a1eac8069d 100644 --- a/src/messagesadapter.cpp +++ b/src/messagesadapter.cpp @@ -103,17 +103,6 @@ MessagesAdapter::setupChatView(const QString& convUid) !convInfo.isNotASwarm(), convInfo.needsSyncing); - // Type Indicator (contact). TODO: Not shown when invitation request? - contactIsComposing(convInfo.uid, "", false); - connect(lrcInstance_->getCurrentConversationModel(), - &ConversationModel::composingStatusChanged, - [this](const QString& convUid, const QString& contactUri, bool isComposing) { - if (!settingsManager_->getValue(Settings::Key::EnableTypingIndicator).toBool()) { - return; - } - contactIsComposing(convUid, contactUri, isComposing); - }); - // Draft and message content set up. Utils::oneShotConnect(qmlObj_, SIGNAL(sendMessageContentSaved(const QString&)), @@ -138,6 +127,7 @@ MessagesAdapter::connectConversationModel() QObject::disconnect(interactionRemovedConnection_); QObject::disconnect(interactionStatusUpdatedConnection_); QObject::disconnect(conversationUpdatedConnection_); + QObject::disconnect(composingConnection_); newInteractionConnection_ = QObject::connect(currentConversationModel, @@ -197,6 +187,17 @@ MessagesAdapter::connectConversationModel() if (auto optConv = convModel->getConversationForUid(conversationId)) setConversationProfileData(optConv->get()); }); + composingConnection_ + = connect(currentConversationModel, + &ConversationModel::composingStatusChanged, + [this](const QString& convUid, const QString& contactUri, bool isComposing) { + if (convUid != lrcInstance_->get_selectedConvUid()) + return; + if (!settingsManager_->getValue(Settings::Key::EnableTypingIndicator).toBool()) { + return; + } + contactIsComposing(contactUri, isComposing); + }); } void @@ -698,16 +699,14 @@ MessagesAdapter::setSendMessageContent(const QString& content) } void -MessagesAdapter::contactIsComposing(const QString& uid, const QString& contactUri, bool isComposing) +MessagesAdapter::contactIsComposing(const QString& contactUri, bool isComposing) { auto* convModel = lrcInstance_->getCurrentConversationModel(); auto convInfo = convModel->getConversationForUid(lrcInstance_->get_selectedConvUid()); if (!convInfo) return; auto& conv = convInfo->get(); - bool showIsComposing = conv.isNotASwarm() - ? uid.isEmpty() && conv.participants.first() == contactUri - : uid == conv.uid; + bool showIsComposing = conv.participants.first() == contactUri; if (showIsComposing) { QString s = QString::fromLatin1("showTypingIndicator(`%1`, %2);").arg(contactUri).arg(isComposing); diff --git a/src/messagesadapter.h b/src/messagesadapter.h index bc80e7409b3c0c6ef8a30282bec36e2ee71f5bef..ffb0c4e2191b0cde7298c16aa7b482361831bcdf 100644 --- a/src/messagesadapter.h +++ b/src/messagesadapter.h @@ -96,7 +96,7 @@ protected: void setMessagesFileContent(const QString& path); void removeInteraction(const QString& interactionId); void setSendMessageContent(const QString& content); - void contactIsComposing(const QString& convUid, const QString& contactUri, bool isComposing); + void contactIsComposing(const QString& contactUri, bool isComposing); Q_SIGNALS: void contactBanned(); @@ -126,6 +126,7 @@ private: QMetaObject::Connection interactionRemovedConnection_; QMetaObject::Connection newMessagesAvailableConnection_; QMetaObject::Connection conversationUpdatedConnection_; + QMetaObject::Connection composingConnection_; AppSettingsManager* settingsManager_; };