Skip to content
Snippets Groups Projects
Commit f0675434 authored by Sébastien Blin's avatar Sébastien Blin Committed by Andreas Traczyk
Browse files

misc: fixes

Change-Id: I83161997e655cbb626f6577cedb53d3b67786c7f
parent bd3b2f22
No related branches found
Tags beta/202402071743
No related merge requests found
......@@ -105,7 +105,7 @@ ConversationListModelBase::dataForItem(item_t item, int role) const
return QVariant(static_cast<int>(contact.profileInfo.type));
}
case Role::IsSwarm: {
return QVariant(item.mode != lrc::api::conversation::Mode::NON_SWARM);
return QVariant(!item.isNotASwarm());
}
case Role::IsBanned: {
return QVariant(contact.isBanned);
......
......@@ -139,17 +139,17 @@ ConversationsAdapter::safeInit()
Q_EMIT modelChanged(QVariant::fromValue(conversationSmartListModel_));
// connect(&lrcInstance_->behaviorController(),
// &BehaviorController::newUnreadInteraction,
// this,
// &ConversationsAdapter::onNewUnreadInteraction,
// Qt::UniqueConnection);
// connect(&lrcInstance_->behaviorController(),
// &BehaviorController::newReadInteraction,
// this,
// &ConversationsAdapter::onNewReadInteraction,
// Qt::UniqueConnection);
connect(&lrcInstance_->behaviorController(),
&BehaviorController::newUnreadInteraction,
this,
&ConversationsAdapter::onNewUnreadInteraction,
Qt::UniqueConnection);
connect(&lrcInstance_->behaviorController(),
&BehaviorController::newReadInteraction,
this,
&ConversationsAdapter::onNewReadInteraction,
Qt::UniqueConnection);
connect(&lrcInstance_->behaviorController(),
&BehaviorController::newTrustRequest,
......@@ -231,7 +231,7 @@ ConversationsAdapter::onNewUnreadInteraction(const QString& accountId,
void
ConversationsAdapter::onNewReadInteraction(const QString& accountId,
const QString& convUid,
uint64_t interactionId)
const QString& interactionId)
{
#ifdef Q_OS_LINUX
// hide notification
......@@ -424,7 +424,7 @@ ConversationsAdapter::getConvInfoMap(const QString& convId)
{"bestId", contactModel->bestIdForContact(peerUri)},
{"bestName", contactModel->bestNameForContact(peerUri)},
{"uri", peerUri},
{"isSwarm", convInfo.mode != lrc::api::conversation::Mode::NON_SWARM},
{"isSwarm", !convInfo.isNotASwarm()},
{"contactType", static_cast<int>(contact.profileInfo.type)},
{"isAudioOnly", isAudioOnly},
{"callState", static_cast<int>(callState)},
......
......@@ -70,7 +70,7 @@ private Q_SLOTS:
const interaction::Info& interaction);
void onNewReadInteraction(const QString& accountId,
const QString& convUid,
uint64_t interactionId);
const QString& interactionId);
void onNewTrustRequest(const QString& accountId, const QString& peerUri);
void onTrustRequestTreated(const QString& accountId, const QString& peerUri);
......
......@@ -56,18 +56,6 @@ ContextMenuAutoLoader {
false)
}
},
GeneralMenuItem {
id: clearConversation
canTrigger: !isSwarm
itemName: JamiStrings.clearConversation
iconSource: "qrc:/images/icons/place_audiocall-24px.svg"
onClicked: {
MessagesAdapter.clearConversationHistory(
responsibleAccountId,
responsibleConvUid)
}
},
GeneralMenuItem {
id: startAudioCall
......@@ -85,18 +73,19 @@ ContextMenuAutoLoader {
GeneralMenuItem {
id: clearConversation
canTrigger: !hasCall
canTrigger: !isSwarm && !hasCall
itemName: JamiStrings.clearConversation
iconSource: "qrc:/images/icons/ic_clear_24px.svg"
onClicked: {
MessagesAdapter.clearConversationHistory(responsibleAccountId,
responsibleConvUid)
MessagesAdapter.clearConversationHistory(
responsibleAccountId,
responsibleConvUid)
}
},
GeneralMenuItem {
id: removeContact
canTrigger: !hasCall && (contactType === Profile.Type.RING
canTrigger: !hasCall && (contactType === Profile.Type.JAMI
|| contactType === Profile.Type.SIP)
itemName: JamiStrings.removeContact
iconSource: "qrc:/images/icons/ic_hangup_participant-24px.svg"
......
......@@ -88,19 +88,19 @@ MessagesAdapter::setupChatView(const QString& convUid)
QMetaObject::invokeMethod(qmlObj_,
"setSendContactRequestButtonVisible",
Q_ARG(QVariant, isPending));
Q_ARG(QVariant, convInfo.isNotASwarm() && isPending));
QMetaObject::invokeMethod(qmlObj_,
"setMessagingHeaderButtonsVisible",
Q_ARG(QVariant,
!(convInfo.mode != lrc::api::conversation::Mode::NON_SWARM
!(convInfo.isNotASwarm()
&& (convInfo.isRequest || convInfo.needsSyncing))));
setMessagesVisibility(false);
setIsSwarm(convInfo.mode != lrc::api::conversation::Mode::NON_SWARM);
setIsSwarm(!convInfo.isNotASwarm());
setInvitation(convInfo.isRequest or convInfo.needsSyncing,
bestName,
contactURI,
convInfo.mode != lrc::api::conversation::Mode::NON_SWARM,
!convInfo.isNotASwarm(),
convInfo.needsSyncing);
// Type Indicator (contact). TODO: Not shown when invitation request?
......@@ -137,6 +137,7 @@ MessagesAdapter::connectConversationModel()
QObject::disconnect(newInteractionConnection_);
QObject::disconnect(interactionRemovedConnection_);
QObject::disconnect(interactionStatusUpdatedConnection_);
QObject::disconnect(conversationUpdatedConnection_);
newInteractionConnection_
= QObject::connect(currentConversationModel,
......@@ -185,6 +186,17 @@ MessagesAdapter::connectConversationModel()
this,
SLOT(slotMessagesLoaded()));
});
conversationUpdatedConnection_
= QObject::connect(currentConversationModel,
&ConversationModel::conversationReady,
[this](const QString& conversationId) {
if (conversationId != lrcInstance_->get_selectedConvUid())
return;
auto* convModel = lrcInstance_->getCurrentConversationModel();
if (auto optConv = convModel->getConversationForUid(conversationId))
setConversationProfileData(optConv->get());
});
}
void
......@@ -241,8 +253,7 @@ MessagesAdapter::slotMessagesCleared()
auto convOpt = convModel->getConversationForUid(lrcInstance_->get_selectedConvUid());
if (!convOpt)
return;
if (convOpt->get().mode != lrc::api::conversation::Mode::NON_SWARM
&& !convOpt->get().allMessagesLoaded) {
if (!convOpt->get().isNotASwarm() && !convOpt->get().allMessagesLoaded) {
convModel->loadConversationMessages(convOpt->get().uid, 20);
} else {
printHistory(*convModel, convOpt->get().interactions);
......@@ -470,10 +481,21 @@ MessagesAdapter::setConversationProfileData(const lrc::api::conversation::Info&
try {
auto& contact = accInfo->contactModel->getContact(contactUri);
auto bestName = accInfo->contactModel->bestNameForContact(contactUri);
bool isPending = contact.profileInfo.type == profile::Type::TEMPORARY;
QMetaObject::invokeMethod(qmlObj_,
"setSendContactRequestButtonVisible",
Q_ARG(QVariant, convInfo.isNotASwarm() && isPending));
QMetaObject::invokeMethod(qmlObj_,
"setMessagingHeaderButtonsVisible",
Q_ARG(QVariant,
!(!convInfo.isNotASwarm()
&& (convInfo.isRequest || convInfo.needsSyncing))));
setInvitation(convInfo.isRequest or convInfo.needsSyncing,
bestName,
contactUri,
convInfo.mode != lrc::api::conversation::Mode::NON_SWARM,
!convInfo.isNotASwarm(),
convInfo.needsSyncing);
if (!contact.profileInfo.avatar.isEmpty()) {
setSenderImage(contactUri, contact.profileInfo.avatar);
......@@ -577,7 +599,10 @@ void
MessagesAdapter::printHistory(lrc::api::ConversationModel& conversationModel,
MessagesList interactions)
{
auto interactionsStr = interactionsToJsonArrayObject(conversationModel, interactions).toUtf8();
auto interactionsStr = interactionsToJsonArrayObject(conversationModel,
lrcInstance_->get_selectedConvUid(),
interactions)
.toUtf8();
QString s = QString::fromLatin1("printHistory(%1);").arg(interactionsStr.constData());
QMetaObject::invokeMethod(qmlObj_, "webViewRunJavaScript", Q_ARG(QVariant, s));
}
......@@ -587,7 +612,10 @@ MessagesAdapter::updateHistory(lrc::api::ConversationModel& conversationModel,
MessagesList interactions,
bool allLoaded)
{
auto interactionsStr = interactionsToJsonArrayObject(conversationModel, interactions).toUtf8();
auto interactionsStr = interactionsToJsonArrayObject(conversationModel,
lrcInstance_->get_selectedConvUid(),
interactions)
.toUtf8();
QString s = QString::fromLatin1("updateHistory(%1, %2);")
.arg(interactionsStr.constData())
.arg(allLoaded);
......@@ -613,8 +641,11 @@ MessagesAdapter::printNewInteraction(lrc::api::ConversationModel& conversationMo
const QString& msgId,
const lrc::api::interaction::Info& interaction)
{
auto interactionObject
= interactionToJsonInteractionObject(conversationModel, msgId, interaction).toUtf8();
auto interactionObject = interactionToJsonInteractionObject(conversationModel,
lrcInstance_->get_selectedConvUid(),
msgId,
interaction)
.toUtf8();
if (interactionObject.isEmpty()) {
return;
}
......@@ -627,8 +658,11 @@ MessagesAdapter::updateInteraction(lrc::api::ConversationModel& conversationMode
const QString& msgId,
const lrc::api::interaction::Info& interaction)
{
auto interactionObject
= interactionToJsonInteractionObject(conversationModel, msgId, interaction).toUtf8();
auto interactionObject = interactionToJsonInteractionObject(conversationModel,
lrcInstance_->get_selectedConvUid(),
msgId,
interaction)
.toUtf8();
if (interactionObject.isEmpty()) {
return;
}
......@@ -686,9 +720,9 @@ MessagesAdapter::contactIsComposing(const QString& uid, const QString& contactUr
if (!convInfo)
return;
auto& conv = convInfo->get();
bool showIsComposing = conv.mode != lrc::api::conversation::Mode::NON_SWARM
? uid == conv.uid
: uid.isEmpty() && conv.participants.first() == contactUri;
bool showIsComposing = conv.isNotASwarm()
? uid.isEmpty() && conv.participants.first() == contactUri
: uid == conv.uid;
if (showIsComposing) {
QString s
= QString::fromLatin1("showTypingIndicator(`%1`, %2);").arg(contactUri).arg(isComposing);
......@@ -763,7 +797,6 @@ MessagesAdapter::loadMessages(int n)
auto convOpt = convModel->getConversationForUid(currentConvUid_);
if (!convOpt)
return;
if (convOpt->get().mode != lrc::api::conversation::Mode::NON_SWARM
&& !convOpt->get().allMessagesLoaded)
if (!convOpt->get().isNotASwarm() && !convOpt->get().allMessagesLoaded)
convModel->loadConversationMessages(convOpt->get().uid, n);
}
......@@ -128,6 +128,7 @@ private:
QMetaObject::Connection interactionStatusUpdatedConnection_;
QMetaObject::Connection interactionRemovedConnection_;
QMetaObject::Connection newMessagesAvailableConnection_;
QMetaObject::Connection conversationUpdatedConnection_;
AppSettingsManager* settingsManager_;
};
......@@ -23,6 +23,7 @@
QJsonObject
buildInteractionJson(lrc::api::ConversationModel& conversationModel,
const QString& convId,
const QString msgId,
const lrc::api::interaction::Info& inter)
{
......@@ -65,7 +66,7 @@ buildInteractionJson(lrc::api::ConversationModel& conversationModel,
case lrc::api::interaction::Type::DATA_TRANSFER: {
interactionObject.insert("type", QJsonValue("data_transfer"));
lrc::api::datatransfer::Info info = {};
// conversationModel.getTransferInfo(msgId, info);
conversationModel.getTransferInfo(convId, msgId, info);
if (info.status != lrc::api::datatransfer::Status::INVALID) {
interactionObject.insert("totalSize", QJsonValue(qint64(info.totalSize)));
interactionObject.insert("progress", QJsonValue(qint64(info.progress)));
......@@ -130,20 +131,23 @@ buildInteractionJson(lrc::api::ConversationModel& conversationModel,
QString
interactionToJsonInteractionObject(lrc::api::ConversationModel& conversationModel,
const QString& convId,
const QString& msgId,
const lrc::api::interaction::Info& interaction)
{
auto interactionObject = buildInteractionJson(conversationModel, msgId, interaction);
auto interactionObject = buildInteractionJson(conversationModel, convId, msgId, interaction);
return QString(QJsonDocument(interactionObject).toJson(QJsonDocument::Compact));
}
QString
interactionsToJsonArrayObject(lrc::api::ConversationModel& conversationModel,
const QString& convId,
MessagesList interactions)
{
QJsonArray array;
for (const auto& interaction : interactions) {
auto interactionObject = buildInteractionJson(conversationModel,
convId,
interaction.first,
interaction.second);
if (!interactionObject.isEmpty()) {
......
......@@ -30,10 +30,13 @@
#include "api/conversationmodel.h"
QJsonObject buildInteractionJson(lrc::api::ConversationModel& conversationModel,
const QString& convId,
const QString& msgId,
lrc::api::interaction::Info& interaction);
QString interactionToJsonInteractionObject(lrc::api::ConversationModel& conversationModel,
const QString& convId,
const QString& msgId,
const lrc::api::interaction::Info& interaction);
QString interactionsToJsonArrayObject(lrc::api::ConversationModel& conversationModel,
const QString& convId,
MessagesList interactions);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment