mirror of
https://git.jami.net/savoirfairelinux/jami-client-qt.git
synced 2025-09-02 21:23:42 +02:00
swarm: first implementation to follow api changes
- use QString for interactionId - swarm conversations: use loadConversationMessages and subscribe to newMessagesAvailable signal - avoid displaying "merge" and empty "data transfer" messages - link composing status Change-Id: Ic524bb786b2ff0471f03b1bb02d41d6da38e716a
This commit is contained in:
parent
5a0ee1c2f4
commit
3d71bfa8ae
18 changed files with 121 additions and 116 deletions
|
@ -142,7 +142,7 @@ AccountAdapter::createJamiAccount(QString registeredName,
|
|||
connectFailure();
|
||||
|
||||
QtConcurrent::run([this, settings] {
|
||||
lrcInstance_->accountModel().createNewAccount(lrc::api::profile::Type::RING,
|
||||
lrcInstance_->accountModel().createNewAccount(lrc::api::profile::Type::JAMI,
|
||||
settings["alias"].toString(),
|
||||
settings["archivePath"].toString(),
|
||||
settings["password"].toString(),
|
||||
|
|
|
@ -90,8 +90,8 @@ ConversationListModelBase::dataForItem(item_t item, int role) const
|
|||
}
|
||||
case Role::LastInteractionDate: {
|
||||
if (!item.interactions.empty()) {
|
||||
auto& date = item.interactions.at(item.lastMessageUid).timestamp;
|
||||
return QVariant(Utils::formatTimeString(date));
|
||||
return QVariant(
|
||||
Utils::formatTimeString(item.interactions.at(item.lastMessageUid).timestamp));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -33,7 +33,7 @@ ConversationsAdapter::ConversationsAdapter(SystemTray* systemTray,
|
|||
LRCInstance* instance,
|
||||
QObject* parent)
|
||||
: QmlAdapterBase(instance, parent)
|
||||
, currentTypeFilter_(profile::Type::RING)
|
||||
, currentTypeFilter_(profile::Type::JAMI)
|
||||
, systemTray_(systemTray)
|
||||
, convSrcModel_(new ConversationListModel(lrcInstance_))
|
||||
, convModel_(new ConversationListProxyModel(convSrcModel_.get()))
|
||||
|
@ -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::newUnreadInteraction,
|
||||
// this,
|
||||
// &ConversationsAdapter::onNewUnreadInteraction,
|
||||
// Qt::UniqueConnection);
|
||||
|
||||
connect(&lrcInstance_->behaviorController(),
|
||||
&BehaviorController::newReadInteraction,
|
||||
this,
|
||||
&ConversationsAdapter::onNewReadInteraction,
|
||||
Qt::UniqueConnection);
|
||||
// connect(&lrcInstance_->behaviorController(),
|
||||
// &BehaviorController::newReadInteraction,
|
||||
// this,
|
||||
// &ConversationsAdapter::onNewReadInteraction,
|
||||
// Qt::UniqueConnection);
|
||||
|
||||
connect(&lrcInstance_->behaviorController(),
|
||||
&BehaviorController::newTrustRequest,
|
||||
|
@ -194,7 +194,7 @@ ConversationsAdapter::onCurrentAccountIdChanged()
|
|||
void
|
||||
ConversationsAdapter::onNewUnreadInteraction(const QString& accountId,
|
||||
const QString& convUid,
|
||||
uint64_t interactionId,
|
||||
const QString& interactionId,
|
||||
const interaction::Info& interaction)
|
||||
{
|
||||
if (!interaction.authorUri.isEmpty()
|
||||
|
@ -357,15 +357,15 @@ ConversationsAdapter::updateConversationFilterData()
|
|||
int totalUnreadMessages {0};
|
||||
if (accountInfo.profileInfo.type != profile::Type::SIP) {
|
||||
auto& convModel = accountInfo.conversationModel;
|
||||
auto conversations = convModel->getFilteredConversations(profile::Type::RING, false);
|
||||
auto conversations = convModel->getFilteredConversations(FilterType::JAMI, false);
|
||||
conversations.for_each([&totalUnreadMessages](const conversation::Info& conversation) {
|
||||
totalUnreadMessages += conversation.unreadMessages;
|
||||
});
|
||||
}
|
||||
set_totalUnreadMessageCount(totalUnreadMessages);
|
||||
set_pendingRequestCount(accountInfo.contactModel->pendingRequestCount());
|
||||
set_pendingRequestCount(accountInfo.conversationModel->pendingRequestCount());
|
||||
if (pendingRequestCount_ == 0 && currentTypeFilter_ == profile::Type::PENDING) {
|
||||
set_currentTypeFilter(profile::Type::RING);
|
||||
set_currentTypeFilter(profile::Type::JAMI);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -66,7 +66,7 @@ private Q_SLOTS:
|
|||
// cross-account slots
|
||||
void onNewUnreadInteraction(const QString& accountId,
|
||||
const QString& convUid,
|
||||
uint64_t interactionId,
|
||||
const QString& interactionId,
|
||||
const interaction::Info& interaction);
|
||||
void onNewReadInteraction(const QString& accountId,
|
||||
const QString& convUid,
|
||||
|
|
|
@ -76,12 +76,6 @@ LRCInstance::behaviorController()
|
|||
return lrc_->getBehaviorController();
|
||||
}
|
||||
|
||||
DataTransferModel&
|
||||
LRCInstance::dataTransferModel()
|
||||
{
|
||||
return lrc_->getDataTransferModel();
|
||||
}
|
||||
|
||||
AVModel&
|
||||
LRCInstance::avModel()
|
||||
{
|
||||
|
|
|
@ -80,7 +80,6 @@ public:
|
|||
AVModel& avModel();
|
||||
PluginModel& pluginModel();
|
||||
BehaviorController& behaviorController();
|
||||
DataTransferModel& dataTransferModel();
|
||||
|
||||
void subscribeToDebugReceived();
|
||||
bool isConnected();
|
||||
|
|
|
@ -259,7 +259,7 @@ MainApplication::init()
|
|||
}
|
||||
|
||||
auto downloadPath = settingsManager_->getValue(Settings::Key::DownloadPath);
|
||||
lrcInstance_->dataTransferModel().downloadDirectory = downloadPath.toString() + "/";
|
||||
lrcInstance_->accountModel().downloadDirectory = downloadPath.toString() + "/";
|
||||
|
||||
initQmlLayer();
|
||||
initSystray();
|
||||
|
|
|
@ -208,7 +208,7 @@ Label {
|
|||
height: visible ? preferredSize : 0
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
visible: LRCInstance.currentAccountType === Profile.Type.RING
|
||||
visible: LRCInstance.currentAccountType === Profile.Type.JAMI
|
||||
toolTipText: JamiStrings.displayQRCode
|
||||
|
||||
source: "qrc:/images/icons/share-24px.svg"
|
||||
|
|
|
@ -90,7 +90,7 @@ Rectangle {
|
|||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
|
||||
visible: LRCInstance.currentAccountType === Profile.Type.RING
|
||||
visible: LRCInstance.currentAccountType === Profile.Type.JAMI
|
||||
|
||||
text: JamiStrings.shareInvite
|
||||
color: JamiTheme.faddedFontColor
|
||||
|
@ -105,7 +105,7 @@ Rectangle {
|
|||
|
||||
color: JamiTheme.secondaryBackgroundColor
|
||||
|
||||
visible: LRCInstance.currentAccountType === Profile.Type.RING
|
||||
visible: LRCInstance.currentAccountType === Profile.Type.JAMI
|
||||
|
||||
ColumnLayout {
|
||||
id: jamiRegisteredNameRectColumnLayout
|
||||
|
|
|
@ -50,7 +50,7 @@ ModalPopup {
|
|||
fillMode: Image.PreserveAspectFit
|
||||
source: {
|
||||
if (LRCInstance.currentAccountId &&
|
||||
LRCInstance.currentAccountType === Profile.Type.RING)
|
||||
LRCInstance.currentAccountType === Profile.Type.JAMI)
|
||||
return "image://qrImage/account_" + LRCInstance.currentAccountId
|
||||
return ""
|
||||
}
|
||||
|
|
|
@ -129,7 +129,7 @@ MessagesAdapter::connectConversationModel()
|
|||
= QObject::connect(currentConversationModel,
|
||||
&lrc::api::ConversationModel::newInteraction,
|
||||
[this](const QString& convUid,
|
||||
uint64_t interactionId,
|
||||
const QString& interactionId,
|
||||
const lrc::api::interaction::Info& interaction) {
|
||||
auto accountId = lrcInstance_->getCurrentAccountId();
|
||||
newInteraction(accountId, convUid, interactionId, interaction);
|
||||
|
@ -139,7 +139,7 @@ MessagesAdapter::connectConversationModel()
|
|||
currentConversationModel,
|
||||
&lrc::api::ConversationModel::interactionStatusUpdated,
|
||||
[this](const QString& convUid,
|
||||
uint64_t interactionId,
|
||||
const QString& interactionId,
|
||||
const lrc::api::interaction::Info& interaction) {
|
||||
auto currentConversationModel = lrcInstance_->getCurrentConversationModel();
|
||||
currentConversationModel->clearUnreadInteractions(convUid);
|
||||
|
@ -149,10 +149,27 @@ MessagesAdapter::connectConversationModel()
|
|||
interactionRemovedConnection_
|
||||
= QObject::connect(currentConversationModel,
|
||||
&lrc::api::ConversationModel::interactionRemoved,
|
||||
[this](const QString& convUid, uint64_t interactionId) {
|
||||
[this](const QString& convUid, const QString& interactionId) {
|
||||
Q_UNUSED(convUid);
|
||||
removeInteraction(interactionId);
|
||||
});
|
||||
|
||||
newMessagesAvailableConnection_
|
||||
= QObject::connect(currentConversationModel,
|
||||
&lrc::api::ConversationModel::newMessagesAvailable,
|
||||
[this](const QString& accountId, const QString& conversationId) {
|
||||
auto* convModel = lrcInstance_->accountModel()
|
||||
.getAccountInfo(accountId)
|
||||
.conversationModel.get();
|
||||
auto optConv = convModel->getConversationForUid(conversationId);
|
||||
if (!optConv)
|
||||
return;
|
||||
printHistory(*convModel, optConv->get().interactions);
|
||||
Utils::oneShotConnect(qmlObj_,
|
||||
SIGNAL(messagesLoaded()),
|
||||
this,
|
||||
SLOT(slotMessagesLoaded()));
|
||||
});
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -173,7 +190,7 @@ MessagesAdapter::updateConversationForAddedContact()
|
|||
|
||||
clear();
|
||||
setConversationProfileData(convInfo);
|
||||
printHistory(*convModel, convInfo.interactions);
|
||||
// printHistory(*convModel, convInfo.interactions);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -205,14 +222,18 @@ void
|
|||
MessagesAdapter::slotMessagesCleared()
|
||||
{
|
||||
auto* convModel = lrcInstance_->getCurrentConversationModel();
|
||||
const auto& convInfo = lrcInstance_->getConversationFromConvUid(
|
||||
lrcInstance_->get_selectedConvUid());
|
||||
|
||||
printHistory(*convModel, convInfo.interactions);
|
||||
|
||||
Utils::oneShotConnect(qmlObj_, SIGNAL(messagesLoaded()), this, SLOT(slotMessagesLoaded()));
|
||||
|
||||
setConversationProfileData(convInfo);
|
||||
auto convOpt = convModel->getConversationForUid(lrcInstance_->get_selectedConvUid());
|
||||
if (!convOpt)
|
||||
return;
|
||||
if (convOpt->get().mode != lrc::api::conversation::Mode::NON_SWARM
|
||||
&& !convOpt->get().allMessagesLoaded) {
|
||||
convModel->loadConversationMessages(convOpt->get().uid, 0);
|
||||
} else {
|
||||
printHistory(*convModel, convOpt->get().interactions);
|
||||
Utils::oneShotConnect(qmlObj_, SIGNAL(messagesLoaded()), this, SLOT(slotMessagesLoaded()));
|
||||
}
|
||||
setConversationProfileData(convOpt->get());
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -303,16 +324,10 @@ MessagesAdapter::sendFile(const QString& message)
|
|||
}
|
||||
|
||||
void
|
||||
MessagesAdapter::retryInteraction(const QString& arg)
|
||||
MessagesAdapter::retryInteraction(const QString& interactionId)
|
||||
{
|
||||
bool ok;
|
||||
uint64_t interactionUid = arg.toULongLong(&ok);
|
||||
if (ok) {
|
||||
lrcInstance_->getCurrentConversationModel()
|
||||
->retryInteraction(lrcInstance_->get_selectedConvUid(), interactionUid);
|
||||
} else {
|
||||
qDebug() << "retryInteraction - invalid arg" << arg;
|
||||
}
|
||||
lrcInstance_->getCurrentConversationModel()
|
||||
->retryInteraction(lrcInstance_->get_selectedConvUid(), interactionId);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -330,16 +345,10 @@ MessagesAdapter::setNewMessagesContent(const QString& path)
|
|||
}
|
||||
|
||||
void
|
||||
MessagesAdapter::deleteInteraction(const QString& arg)
|
||||
MessagesAdapter::deleteInteraction(const QString& interactionId)
|
||||
{
|
||||
bool ok;
|
||||
uint64_t interactionUid = arg.toULongLong(&ok);
|
||||
if (ok) {
|
||||
lrcInstance_->getCurrentConversationModel()
|
||||
->clearInteractionFromConversation(lrcInstance_->get_selectedConvUid(), interactionUid);
|
||||
} else {
|
||||
qDebug() << "DeleteInteraction - invalid arg" << arg;
|
||||
}
|
||||
lrcInstance_->getCurrentConversationModel()
|
||||
->clearInteractionFromConversation(lrcInstance_->get_selectedConvUid(), interactionId);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -360,27 +369,17 @@ MessagesAdapter::openUrl(const QString& url)
|
|||
}
|
||||
|
||||
void
|
||||
MessagesAdapter::acceptFile(const QString& arg)
|
||||
MessagesAdapter::acceptFile(const QString& interactionId)
|
||||
{
|
||||
try {
|
||||
auto interactionUid = arg.toLongLong();
|
||||
auto convUid = lrcInstance_->get_selectedConvUid();
|
||||
lrcInstance_->getCurrentConversationModel()->acceptTransfer(convUid, interactionUid);
|
||||
} catch (...) {
|
||||
qDebug() << "JS bridging - exception during acceptFile: " << arg;
|
||||
}
|
||||
auto convUid = lrcInstance_->get_selectedConvUid();
|
||||
lrcInstance_->getCurrentConversationModel()->acceptTransfer(convUid, interactionId);
|
||||
}
|
||||
|
||||
void
|
||||
MessagesAdapter::refuseFile(const QString& arg)
|
||||
MessagesAdapter::refuseFile(const QString& interactionId)
|
||||
{
|
||||
try {
|
||||
auto interactionUid = arg.toLongLong();
|
||||
const auto convUid = lrcInstance_->get_selectedConvUid();
|
||||
lrcInstance_->getCurrentConversationModel()->cancelTransfer(convUid, interactionUid);
|
||||
} catch (...) {
|
||||
qDebug() << "JS bridging - exception during refuseFile:" << arg;
|
||||
}
|
||||
const auto convUid = lrcInstance_->get_selectedConvUid();
|
||||
lrcInstance_->getCurrentConversationModel()->cancelTransfer(convUid, interactionId);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -475,7 +474,7 @@ MessagesAdapter::setConversationProfileData(const lrc::api::conversation::Info&
|
|||
void
|
||||
MessagesAdapter::newInteraction(const QString& accountId,
|
||||
const QString& convUid,
|
||||
uint64_t interactionId,
|
||||
const QString& interactionId,
|
||||
const interaction::Info& interaction)
|
||||
{
|
||||
Q_UNUSED(interactionId);
|
||||
|
@ -550,7 +549,7 @@ MessagesAdapter::setDisplayLinks()
|
|||
|
||||
void
|
||||
MessagesAdapter::printHistory(lrc::api::ConversationModel& conversationModel,
|
||||
const std::map<uint64_t, lrc::api::interaction::Info> interactions)
|
||||
MessagesList interactions)
|
||||
{
|
||||
auto interactionsStr = interactionsToJsonArrayObject(conversationModel, interactions).toUtf8();
|
||||
QString s = QString::fromLatin1("printHistory(%1);").arg(interactionsStr.constData());
|
||||
|
@ -573,7 +572,7 @@ MessagesAdapter::setSenderImage(const QString& sender, const QString& senderImag
|
|||
|
||||
void
|
||||
MessagesAdapter::printNewInteraction(lrc::api::ConversationModel& conversationModel,
|
||||
uint64_t msgId,
|
||||
const QString& msgId,
|
||||
const lrc::api::interaction::Info& interaction)
|
||||
{
|
||||
auto interactionObject
|
||||
|
@ -587,7 +586,7 @@ MessagesAdapter::printNewInteraction(lrc::api::ConversationModel& conversationMo
|
|||
|
||||
void
|
||||
MessagesAdapter::updateInteraction(lrc::api::ConversationModel& conversationModel,
|
||||
uint64_t msgId,
|
||||
const QString& msgId,
|
||||
const lrc::api::interaction::Info& interaction)
|
||||
{
|
||||
auto interactionObject
|
||||
|
@ -629,9 +628,9 @@ MessagesAdapter::setMessagesFileContent(const QString& path)
|
|||
}
|
||||
|
||||
void
|
||||
MessagesAdapter::removeInteraction(uint64_t interactionId)
|
||||
MessagesAdapter::removeInteraction(const QString& interactionId)
|
||||
{
|
||||
QString s = QString::fromLatin1("removeInteraction(%1);").arg(QString::number(interactionId));
|
||||
QString s = QString::fromLatin1("removeInteraction(%1);").arg(interactionId);
|
||||
QMetaObject::invokeMethod(qmlObj_, "webViewRunJavaScript", Q_ARG(QVariant, s));
|
||||
}
|
||||
|
||||
|
@ -644,7 +643,15 @@ MessagesAdapter::setSendMessageContent(const QString& content)
|
|||
void
|
||||
MessagesAdapter::contactIsComposing(const QString& uid, const QString& contactUri, bool isComposing)
|
||||
{
|
||||
if (lrcInstance_->get_selectedConvUid() == uid) {
|
||||
auto* convModel = lrcInstance_->getCurrentConversationModel();
|
||||
auto convInfo = convModel->getConversationForUid(lrcInstance_->get_selectedConvUid());
|
||||
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;
|
||||
if (showIsComposing) {
|
||||
QString s
|
||||
= QString::fromLatin1("showTypingIndicator(`%1`, %2);").arg(contactUri).arg(isComposing);
|
||||
QMetaObject::invokeMethod(qmlObj_, "webViewRunJavaScript", Q_ARG(QVariant, s));
|
||||
|
|
|
@ -59,8 +59,8 @@ protected:
|
|||
Q_INVOKABLE void sendMessage(const QString& message);
|
||||
Q_INVOKABLE void sendImage(const QString& message);
|
||||
Q_INVOKABLE void sendFile(const QString& message);
|
||||
Q_INVOKABLE void retryInteraction(const QString& arg);
|
||||
Q_INVOKABLE void deleteInteraction(const QString& arg);
|
||||
Q_INVOKABLE void retryInteraction(const QString& interactionId);
|
||||
Q_INVOKABLE void deleteInteraction(const QString& interactionId);
|
||||
Q_INVOKABLE void openUrl(const QString& url);
|
||||
Q_INVOKABLE void openFile(const QString& arg);
|
||||
Q_INVOKABLE void acceptFile(const QString& arg);
|
||||
|
@ -76,18 +76,17 @@ protected:
|
|||
void requestSendMessageContent();
|
||||
void setInvitation(bool show, const QString& contactUri = {}, const QString& contactId = {});
|
||||
void clear();
|
||||
void printHistory(lrc::api::ConversationModel& conversationModel,
|
||||
const std::map<uint64_t, lrc::api::interaction::Info> interactions);
|
||||
void printHistory(lrc::api::ConversationModel& conversationModel, MessagesList interactions);
|
||||
void setSenderImage(const QString& sender, const QString& senderImage);
|
||||
void printNewInteraction(lrc::api::ConversationModel& conversationModel,
|
||||
uint64_t msgId,
|
||||
const QString& msgId,
|
||||
const lrc::api::interaction::Info& interaction);
|
||||
void updateInteraction(lrc::api::ConversationModel& conversationModel,
|
||||
uint64_t msgId,
|
||||
const QString& msgId,
|
||||
const lrc::api::interaction::Info& interaction);
|
||||
void setMessagesImageContent(const QString& path, bool isBased64 = false);
|
||||
void setMessagesFileContent(const QString& path);
|
||||
void removeInteraction(uint64_t interactionId);
|
||||
void removeInteraction(const QString& interactionId);
|
||||
void setSendMessageContent(const QString& content);
|
||||
void contactIsComposing(const QString& convUid, const QString& contactUri, bool isComposing);
|
||||
|
||||
|
@ -107,7 +106,7 @@ private:
|
|||
void setConversationProfileData(const lrc::api::conversation::Info& convInfo);
|
||||
void newInteraction(const QString& accountId,
|
||||
const QString& convUid,
|
||||
uint64_t interactionId,
|
||||
const QString& interactionId,
|
||||
const interaction::Info& interaction);
|
||||
|
||||
QString LastConvUid_;
|
||||
|
@ -119,6 +118,7 @@ private:
|
|||
QMetaObject::Connection newInteractionConnection_;
|
||||
QMetaObject::Connection interactionStatusUpdatedConnection_;
|
||||
QMetaObject::Connection interactionRemovedConnection_;
|
||||
QMetaObject::Connection newMessagesAvailableConnection_;
|
||||
|
||||
AppSettingsManager* settingsManager_;
|
||||
};
|
||||
|
|
|
@ -38,12 +38,11 @@ SettingsAdapter::getDir_Document()
|
|||
QString
|
||||
SettingsAdapter::getDir_Download()
|
||||
{
|
||||
QString downloadPath = QDir::toNativeSeparators(
|
||||
lrcInstance_->dataTransferModel().downloadDirectory);
|
||||
QString downloadPath = QDir::toNativeSeparators(lrcInstance_->accountModel().downloadDirectory);
|
||||
if (downloadPath.isEmpty()) {
|
||||
downloadPath = lrc::api::DataTransferModel::createDefaultDirectory();
|
||||
setDownloadPath(downloadPath);
|
||||
lrcInstance_->dataTransferModel().downloadDirectory = downloadPath;
|
||||
lrcInstance_->accountModel().downloadDirectory = downloadPath;
|
||||
}
|
||||
#ifdef Q_OS_WIN
|
||||
int pos = downloadPath.lastIndexOf(QChar('\\'));
|
||||
|
@ -83,7 +82,7 @@ void
|
|||
SettingsAdapter::setDownloadPath(QString dir)
|
||||
{
|
||||
setAppValue(Settings::Key::DownloadPath, dir);
|
||||
lrcInstance_->dataTransferModel().downloadDirectory = dir + "/";
|
||||
lrcInstance_->accountModel().downloadDirectory = dir + "/";
|
||||
}
|
||||
|
||||
lrc::api::video::ResRateList
|
||||
|
|
|
@ -50,8 +50,8 @@ SmartListModel::rowCount(const QModelIndex& parent) const
|
|||
lrcInstance_->getCurrentAccountId());
|
||||
auto& convModel = accInfo.conversationModel;
|
||||
if (listModelType_ == Type::TRANSFER) {
|
||||
auto filterType = accInfo.profileInfo.type;
|
||||
return convModel->getFilteredConversations(filterType).size();
|
||||
// auto filterType = accInfo.profileInfo.type;
|
||||
// return convModel->getFilteredConversations(filterType).size();
|
||||
} else if (listModelType_ == Type::CONFERENCE) {
|
||||
auto calls = conferenceables_[ConferenceableItem::CALL];
|
||||
auto contacts = conferenceables_[ConferenceableItem::CONTACT];
|
||||
|
@ -81,8 +81,9 @@ SmartListModel::data(const QModelIndex& index, int role) const
|
|||
lrcInstance_->getCurrentAccountId());
|
||||
auto& convModel = currentAccountInfo.conversationModel;
|
||||
auto filterType = currentAccountInfo.profileInfo.type;
|
||||
auto& item = convModel->getFilteredConversations(filterType).at(index.row());
|
||||
return dataForItem(item, role);
|
||||
return {};
|
||||
// auto& item = convModel->getFilteredConversations(filterType).at(index.row());
|
||||
// return dataForItem(item, role);
|
||||
} catch (const std::exception& e) {
|
||||
qWarning() << e.what();
|
||||
}
|
||||
|
|
|
@ -525,7 +525,7 @@ Utils::isContactValid(const QString& contactUid, const lrc::api::ConversationMod
|
|||
const auto contact = model.owner.contactModel->getContact(contactUid);
|
||||
return (contact.profileInfo.type == lrc::api::profile::Type::PENDING
|
||||
|| contact.profileInfo.type == lrc::api::profile::Type::TEMPORARY
|
||||
|| contact.profileInfo.type == lrc::api::profile::Type::RING
|
||||
|| contact.profileInfo.type == lrc::api::profile::Type::JAMI
|
||||
|| contact.profileInfo.type == lrc::api::profile::Type::SIP)
|
||||
&& !contact.profileInfo.uri.isEmpty();
|
||||
} catch (const std::out_of_range& e) {
|
||||
|
@ -804,7 +804,7 @@ Utils::accountPhoto(LRCInstance* instance,
|
|||
QString letterStr = (bestId == bestName || bestName == accountInfo.profileInfo.uri)
|
||||
? QString()
|
||||
: bestName;
|
||||
QString prefix = accountInfo.profileInfo.type == lrc::api::profile::Type::RING ? "ring:"
|
||||
QString prefix = accountInfo.profileInfo.type == lrc::api::profile::Type::JAMI ? "ring:"
|
||||
: "sip:";
|
||||
photo = fallbackAvatar(prefix + accountInfo.profileInfo.uri, letterStr, size);
|
||||
}
|
||||
|
|
|
@ -23,16 +23,21 @@
|
|||
|
||||
QJsonObject
|
||||
buildInteractionJson(lrc::api::ConversationModel& conversationModel,
|
||||
const uint64_t msgId,
|
||||
const QString msgId,
|
||||
const lrc::api::interaction::Info& inter)
|
||||
{
|
||||
QRegExp reg(".(jpeg|jpg|gif|png)$");
|
||||
auto interaction = inter;
|
||||
if (interaction.type == lrc::api::interaction::Type::DATA_TRANSFER
|
||||
&& interaction.body.toLower().contains(reg)) {
|
||||
interaction.body = "file://" + interaction.body;
|
||||
if (interaction.type == lrc::api::interaction::Type::DATA_TRANSFER) {
|
||||
if (interaction.body.isEmpty())
|
||||
return {};
|
||||
else if (interaction.body.toLower().contains(reg))
|
||||
interaction.body = "file://" + interaction.body;
|
||||
}
|
||||
|
||||
if (interaction.type == lrc::api::interaction::Type::MERGE)
|
||||
return {};
|
||||
|
||||
auto sender = interaction.authorUri;
|
||||
auto timestamp = QString::number(interaction.timestamp);
|
||||
auto direction = lrc::api::interaction::isOutgoing(interaction) ? QString("out")
|
||||
|
@ -40,7 +45,7 @@ buildInteractionJson(lrc::api::ConversationModel& conversationModel,
|
|||
|
||||
QJsonObject interactionObject = QJsonObject();
|
||||
interactionObject.insert("text", QJsonValue(interaction.body));
|
||||
interactionObject.insert("id", QJsonValue(QString::number(msgId)));
|
||||
interactionObject.insert("id", QJsonValue(msgId));
|
||||
interactionObject.insert("sender", QJsonValue(sender));
|
||||
interactionObject.insert("sender_contact_method", QJsonValue(sender));
|
||||
interactionObject.insert("timestamp", QJsonValue(timestamp));
|
||||
|
@ -60,7 +65,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(msgId, info);
|
||||
if (info.status != lrc::api::datatransfer::Status::INVALID) {
|
||||
interactionObject.insert("totalSize", QJsonValue(qint64(info.totalSize)));
|
||||
interactionObject.insert("progress", QJsonValue(qint64(info.progress)));
|
||||
|
@ -125,7 +130,7 @@ buildInteractionJson(lrc::api::ConversationModel& conversationModel,
|
|||
|
||||
QString
|
||||
interactionToJsonInteractionObject(lrc::api::ConversationModel& conversationModel,
|
||||
const uint64_t msgId,
|
||||
const QString& msgId,
|
||||
const lrc::api::interaction::Info& interaction)
|
||||
{
|
||||
auto interactionObject = buildInteractionJson(conversationModel, msgId, interaction);
|
||||
|
@ -134,7 +139,7 @@ interactionToJsonInteractionObject(lrc::api::ConversationModel& conversationMode
|
|||
|
||||
QString
|
||||
interactionsToJsonArrayObject(lrc::api::ConversationModel& conversationModel,
|
||||
const std::map<uint64_t, lrc::api::interaction::Info> interactions)
|
||||
MessagesList interactions)
|
||||
{
|
||||
QJsonArray array;
|
||||
for (const auto& interaction : interactions) {
|
||||
|
|
|
@ -26,14 +26,14 @@
|
|||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
|
||||
#include "lrcinstance.h"
|
||||
#include "api/conversationmodel.h"
|
||||
|
||||
QJsonObject buildInteractionJson(lrc::api::ConversationModel& conversationModel,
|
||||
const uint64_t msgId,
|
||||
const lrc::api::interaction::Info& interaction);
|
||||
const QString& msgId,
|
||||
lrc::api::interaction::Info& interaction);
|
||||
QString interactionToJsonInteractionObject(lrc::api::ConversationModel& conversationModel,
|
||||
const uint64_t msgId,
|
||||
const QString& msgId,
|
||||
const lrc::api::interaction::Info& interaction);
|
||||
QString interactionsToJsonArrayObject(
|
||||
lrc::api::ConversationModel& conversationModel,
|
||||
const std::map<uint64_t, lrc::api::interaction::Info> interactions);
|
||||
QString interactionsToJsonArrayObject(lrc::api::ConversationModel& conversationModel,
|
||||
MessagesList interactions);
|
||||
|
|
|
@ -77,7 +77,7 @@ public:
|
|||
lrcInstance_->subscribeToDebugReceived();
|
||||
|
||||
auto downloadPath = settingsManager_->getValue(Settings::Key::DownloadPath);
|
||||
lrcInstance_->dataTransferModel().downloadDirectory = downloadPath.toString() + "/";
|
||||
lrcInstance_->accountModel().downloadDirectory = downloadPath.toString() + "/";
|
||||
}
|
||||
|
||||
void qmlEngineRegistration(QQmlEngine* engine)
|
||||
|
|
Loading…
Add table
Reference in a new issue