From 1355111e02e69cdbea0863ff993fdca867c089e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Blin?= <sebastien.blin@savoirfairelinux.com> Date: Fri, 14 May 2021 17:01:58 -0400 Subject: [PATCH] swarm: add sync window Change-Id: I0727737c8a9c4998ed66065fb1011389a502b0f9 --- src/messagesadapter.cpp | 32 ++++++++++++++++++++++++-------- src/messagesadapter.h | 6 +++++- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/src/messagesadapter.cpp b/src/messagesadapter.cpp index 43f1be85b..8790bbdcf 100644 --- a/src/messagesadapter.cpp +++ b/src/messagesadapter.cpp @@ -77,8 +77,10 @@ MessagesAdapter::setupChatView(const QString& convUid) auto& accountInfo = lrcInstance_->accountModel().getAccountInfo(selectedAccountId); lrc::api::contact::Info contactInfo; + QString bestName; try { contactInfo = accountInfo.contactModel->getContact(contactURI); + bestName = accountInfo.contactModel->bestNameForContact(contactURI); } catch (...) { } @@ -87,8 +89,18 @@ MessagesAdapter::setupChatView(const QString& convUid) QMetaObject::invokeMethod(qmlObj_, "setSendContactRequestButtonVisible", Q_ARG(QVariant, isPending)); + QMetaObject::invokeMethod(qmlObj_, + "setMessagingHeaderButtonsVisible", + Q_ARG(QVariant, + !(convInfo.mode != lrc::api::conversation::Mode::NON_SWARM + && (convInfo.isRequest || convInfo.needsSyncing)))); setMessagesVisibility(false); + setInvitation(convInfo.isRequest or convInfo.needsSyncing, + bestName, + contactURI, + convInfo.mode != lrc::api::conversation::Mode::NON_SWARM, + convInfo.needsSyncing); // Type Indicator (contact). TODO: Not shown when invitation request? contactIsComposing(convInfo.uid, "", false); @@ -457,9 +469,11 @@ MessagesAdapter::setConversationProfileData(const lrc::api::conversation::Info& try { auto& contact = accInfo->contactModel->getContact(contactUri); auto bestName = accInfo->contactModel->bestNameForContact(contactUri); - setInvitation(contact.profileInfo.type == lrc::api::profile::Type::PENDING, + setInvitation(convInfo.isRequest or convInfo.needsSyncing, bestName, - contactUri); + contactUri, + convInfo.mode != lrc::api::conversation::Mode::NON_SWARM, + convInfo.needsSyncing); if (!contact.profileInfo.avatar.isEmpty()) { setSenderImage(contactUri, contact.profileInfo.avatar); } else { @@ -524,13 +538,15 @@ MessagesAdapter::requestSendMessageContent() } void -MessagesAdapter::setInvitation(bool show, const QString& contactUri, const QString& contactId) +MessagesAdapter::setInvitation( + bool show, const QString& contactUri, const QString& contactId, bool isSwarm, bool needsSyncing) { - QString s - = show - ? QString::fromLatin1("showInvitation(\"%1\", \"%2\")").arg(contactUri).arg(contactId) - : QString::fromLatin1("showInvitation()"); - + QString s = show ? QString::fromLatin1("showInvitation(\"%1\", \"%2\", %3, %4)") + .arg(contactUri) + .arg(contactId) + .arg(isSwarm) + .arg(needsSyncing) + : QString::fromLatin1("showInvitation()"); QMetaObject::invokeMethod(qmlObj_, "webViewRunJavaScript", Q_ARG(QVariant, s)); } diff --git a/src/messagesadapter.h b/src/messagesadapter.h index cd5f905f6..d5cdcb775 100644 --- a/src/messagesadapter.h +++ b/src/messagesadapter.h @@ -75,7 +75,11 @@ protected: // Run corrsponding js functions, c++ to qml. void setMessagesVisibility(bool visible); void requestSendMessageContent(); - void setInvitation(bool show, const QString& contactUri = {}, const QString& contactId = {}); + void setInvitation(bool show, + const QString& contactUri = {}, + const QString& contactId = {}, + bool isSwarm = false, + bool needsSyncing = false); void clear(); void printHistory(ConversationModel& conversationModel, MessagesList interactions); void updateHistory(ConversationModel& conversationModel, -- GitLab