forked from blue/squawk
debugging vanished messages
This commit is contained in:
parent
f313c72a97
commit
eba33bea8a
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[submodule "external/qxmpp"]
|
||||||
|
path = external/qxmpp
|
||||||
|
url = https://github.com/qxmpp-project/qxmpp.git
|
@ -23,6 +23,7 @@ target_link_libraries(squawk Qt5::Widgets)
|
|||||||
|
|
||||||
add_subdirectory(ui)
|
add_subdirectory(ui)
|
||||||
add_subdirectory(core)
|
add_subdirectory(core)
|
||||||
|
add_subdirectory(external/qxmpp)
|
||||||
|
|
||||||
target_link_libraries(squawk squawkUI)
|
target_link_libraries(squawk squawkUI)
|
||||||
target_link_libraries(squawk squawkCORE)
|
target_link_libraries(squawk squawkCORE)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#include "account.h"
|
#include "account.h"
|
||||||
#include <qxmpp/QXmppMessage.h>
|
#include <QXmppMessage.h>
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
|
||||||
@ -48,6 +48,7 @@ Account::Account(const QString& p_login, const QString& p_server, const QString&
|
|||||||
|
|
||||||
client.addExtension(am);
|
client.addExtension(am);
|
||||||
|
|
||||||
|
QObject::connect(am, SIGNAL(logMessage(QXmppLogger::MessageType, const QString&)), this, SLOT(onMamLog(QXmppLogger::MessageType, const QString)));
|
||||||
QObject::connect(am, SIGNAL(archivedMessageReceived(const QString&, const QXmppMessage&)), this, SLOT(onMamMessageReceived(const QString&, const QXmppMessage&)));
|
QObject::connect(am, SIGNAL(archivedMessageReceived(const QString&, const QXmppMessage&)), this, SLOT(onMamMessageReceived(const QString&, const QXmppMessage&)));
|
||||||
QObject::connect(am, SIGNAL(resultsRecieved(const QString&, const QXmppResultSetReply&, bool)),
|
QObject::connect(am, SIGNAL(resultsRecieved(const QString&, const QXmppResultSetReply&, bool)),
|
||||||
this, SLOT(onMamResultsReceived(const QString&, const QXmppResultSetReply&, bool)));
|
this, SLOT(onMamResultsReceived(const QString&, const QXmppResultSetReply&, bool)));
|
||||||
@ -395,7 +396,13 @@ void Core::Account::onMessageReceived(const QXmppMessage& msg)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (!handled) {
|
if (!handled) {
|
||||||
qDebug() << "Message wasn't handled: ";
|
logMessage(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Core::Account::logMessage(const QXmppMessage& msg, const QString& reason)
|
||||||
|
{
|
||||||
|
qDebug() << reason;
|
||||||
qDebug() << "- from: " << msg.from();
|
qDebug() << "- from: " << msg.from();
|
||||||
qDebug() << "- to: " << msg.to();
|
qDebug() << "- to: " << msg.to();
|
||||||
qDebug() << "- body: " << msg.body();
|
qDebug() << "- body: " << msg.body();
|
||||||
@ -411,7 +418,7 @@ void Core::Account::onMessageReceived(const QXmppMessage& msg)
|
|||||||
qDebug() << "- isMarkable: " << msg.isMarkable();
|
qDebug() << "- isMarkable: " << msg.isMarkable();
|
||||||
qDebug() << "==============================";
|
qDebug() << "==============================";
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
QString Core::Account::getFullJid() const
|
QString Core::Account::getFullJid() const
|
||||||
{
|
{
|
||||||
@ -512,6 +519,8 @@ void Core::Account::onMamMessageReceived(const QString& queryId, const QXmppMess
|
|||||||
QString jid = itr->second;
|
QString jid = itr->second;
|
||||||
std::map<QString, Contact*>::const_iterator citr = contacts.find(jid);
|
std::map<QString, Contact*>::const_iterator citr = contacts.find(jid);
|
||||||
|
|
||||||
|
logMessage(msg, "MAM MESSAGE:");
|
||||||
|
|
||||||
if (citr != contacts.end()) {
|
if (citr != contacts.end()) {
|
||||||
Contact* cnt = citr->second;
|
Contact* cnt = citr->second;
|
||||||
if (msg.id().size() > 0 && msg.body().size() > 0) {
|
if (msg.id().size() > 0 && msg.body().size() > 0) {
|
||||||
@ -567,7 +576,7 @@ void Core::Account::onContactNeedHistory(const QString& before, const QString& a
|
|||||||
query.setAfter(after);
|
query.setAfter(after);
|
||||||
}
|
}
|
||||||
|
|
||||||
qDebug() << "Remote query from\"" << after << "\", to" << before;
|
qDebug() << "Remote query from" << after << ", to" << before;
|
||||||
|
|
||||||
QString q = am->retrieveArchivedMessages("", "", contact->jid, QDateTime(), QDateTime(), query);
|
QString q = am->retrieveArchivedMessages("", "", contact->jid, QDateTime(), QDateTime(), query);
|
||||||
achiveQueries.insert(std::make_pair(q, contact->jid));
|
achiveQueries.insert(std::make_pair(q, contact->jid));
|
||||||
@ -578,6 +587,16 @@ void Core::Account::onMamResultsReceived(const QString& queryId, const QXmppResu
|
|||||||
{
|
{
|
||||||
std::map<QString, QString>::const_iterator itr = achiveQueries.find(queryId);
|
std::map<QString, QString>::const_iterator itr = achiveQueries.find(queryId);
|
||||||
QString jid = itr->second;
|
QString jid = itr->second;
|
||||||
|
|
||||||
|
|
||||||
|
qDebug() << "MAM RESULTS:";
|
||||||
|
qDebug() << "complete:" << complete;
|
||||||
|
qDebug() << "count:" << resultSetReply.count();
|
||||||
|
qDebug() << "first:" << resultSetReply.first();
|
||||||
|
qDebug() << "last:" << resultSetReply.last();
|
||||||
|
qDebug() << "index:" << resultSetReply.index();
|
||||||
|
qDebug() << "isNull:" << resultSetReply.isNull();
|
||||||
|
|
||||||
achiveQueries.erase(itr);
|
achiveQueries.erase(itr);
|
||||||
std::map<QString, Contact*>::const_iterator citr = contacts.find(jid);
|
std::map<QString, Contact*>::const_iterator citr = contacts.find(jid);
|
||||||
if (citr != contacts.end()) {
|
if (citr != contacts.end()) {
|
||||||
@ -588,6 +607,12 @@ void Core::Account::onMamResultsReceived(const QString& queryId, const QXmppResu
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Core::Account::onMamLog(QXmppLogger::MessageType type, const QString& msg)
|
||||||
|
{
|
||||||
|
qDebug() << "MAM MESSAGE LOG::";
|
||||||
|
qDebug() << msg;
|
||||||
|
}
|
||||||
|
|
||||||
void Core::Account::onContactGroupAdded(const QString& group)
|
void Core::Account::onContactGroupAdded(const QString& group)
|
||||||
{
|
{
|
||||||
Contact* contact = static_cast<Contact*>(sender());
|
Contact* contact = static_cast<Contact*>(sender());
|
||||||
|
@ -5,10 +5,10 @@
|
|||||||
#include <map>
|
#include <map>
|
||||||
#include <set>
|
#include <set>
|
||||||
|
|
||||||
#include <qxmpp/QXmppRosterManager.h>
|
#include <QXmppRosterManager.h>
|
||||||
#include <qxmpp/QXmppCarbonManager.h>
|
#include <QXmppCarbonManager.h>
|
||||||
#include <qxmpp/QXmppMamManager.h>
|
#include <QXmppMamManager.h>
|
||||||
#include <qxmpp/QXmppClient.h>
|
#include <QXmppClient.h>
|
||||||
#include "../global.h"
|
#include "../global.h"
|
||||||
#include "contact.h"
|
#include "contact.h"
|
||||||
|
|
||||||
@ -108,6 +108,8 @@ private slots:
|
|||||||
void onContactHistoryResponse(const std::list<Shared::Message>& list);
|
void onContactHistoryResponse(const std::list<Shared::Message>& list);
|
||||||
void onContactNeedHistory(const QString& before, const QString& after);
|
void onContactNeedHistory(const QString& before, const QString& after);
|
||||||
|
|
||||||
|
void onMamLog(QXmppLogger::MessageType type, const QString &msg);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void addedAccount(const QString &bareJid);
|
void addedAccount(const QString &bareJid);
|
||||||
void handleNewContact(Contact* contact);
|
void handleNewContact(Contact* contact);
|
||||||
@ -116,6 +118,7 @@ private:
|
|||||||
void removeFromGroup(const QString& jid, const QString& group);
|
void removeFromGroup(const QString& jid, const QString& group);
|
||||||
void initializeMessage(Shared::Message& target, const QXmppMessage& source, bool outgoing = false, bool forwarded = false, bool guessing = false) const;
|
void initializeMessage(Shared::Message& target, const QXmppMessage& source, bool outgoing = false, bool forwarded = false, bool guessing = false) const;
|
||||||
Shared::SubscriptionState castSubscriptionState(QXmppRosterIq::Item::SubscriptionType qs) const;
|
Shared::SubscriptionState castSubscriptionState(QXmppRosterIq::Item::SubscriptionType qs) const;
|
||||||
|
void logMessage(const QXmppMessage& msg, const QString& reason = "Message wasn't handled: ");
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -110,7 +110,7 @@ unsigned int Core::Contact::groupsCount() const
|
|||||||
void Core::Contact::addMessageToArchive(const Shared::Message& msg)
|
void Core::Contact::addMessageToArchive(const Shared::Message& msg)
|
||||||
{
|
{
|
||||||
if (msg.getId().size() > 0 && msg.getBody().size() > 0) {
|
if (msg.getId().size() > 0 && msg.getBody().size() > 0) {
|
||||||
hisoryCache.emplace_back(msg);
|
hisoryCache.push_back(msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -219,13 +219,13 @@ void Core::Contact::appendMessageToArchive(const Shared::Message& msg)
|
|||||||
case empty:
|
case empty:
|
||||||
if (archive->addElement(msg)) {
|
if (archive->addElement(msg)) {
|
||||||
archiveState = end;
|
archiveState = end;
|
||||||
};
|
}
|
||||||
if (!syncronizing) {
|
if (!syncronizing) {
|
||||||
requestHistory(-1, id);
|
requestHistory(-1, id);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case beginning:
|
case beginning:
|
||||||
appendCache.emplace_back(msg);
|
appendCache.push_back(msg);
|
||||||
if (!syncronizing) {
|
if (!syncronizing) {
|
||||||
requestHistory(-1, id);
|
requestHistory(-1, id);
|
||||||
}
|
}
|
||||||
@ -234,7 +234,7 @@ void Core::Contact::appendMessageToArchive(const Shared::Message& msg)
|
|||||||
archive->addElement(msg);
|
archive->addElement(msg);
|
||||||
break;
|
break;
|
||||||
case chunk:
|
case chunk:
|
||||||
appendCache.emplace_back(msg);
|
appendCache.push_back(msg);
|
||||||
if (!syncronizing) {
|
if (!syncronizing) {
|
||||||
requestHistory(-1, id);
|
requestHistory(-1, id);
|
||||||
}
|
}
|
||||||
@ -299,8 +299,10 @@ void Core::Contact::flushMessagesToArchive(bool finished, const QString& firstId
|
|||||||
std::list<Shared::Message> arc = archive->getBefore(requestedCount - responseCache.size(), before);
|
std::list<Shared::Message> arc = archive->getBefore(requestedCount - responseCache.size(), before);
|
||||||
responseCache.insert(responseCache.begin(), arc.begin(), arc.end());
|
responseCache.insert(responseCache.begin(), arc.begin(), arc.end());
|
||||||
found = true;
|
found = true;
|
||||||
} catch (Archive::NotFound e) {}
|
} catch (Archive::NotFound e) {
|
||||||
if (!found || requestedCount < responseCache.size()) {
|
|
||||||
|
}
|
||||||
|
if (!found || requestedCount > responseCache.size()) {
|
||||||
if (archiveState == complete) {
|
if (archiveState == complete) {
|
||||||
nextRequest();
|
nextRequest();
|
||||||
} else {
|
} else {
|
||||||
|
1
external/qxmpp
vendored
Submodule
1
external/qxmpp
vendored
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit e6eb0b78d0cb17fccd5ddb60966ba2a0a2d2b593
|
@ -108,8 +108,9 @@ void Conversation::setName(const QString& name)
|
|||||||
|
|
||||||
void Conversation::updateState()
|
void Conversation::updateState()
|
||||||
{
|
{
|
||||||
m_ui->statusIcon->setPixmap(contact->getStatusIcon(true).pixmap(40));
|
Shared::Availability av = contact->getAvailability();
|
||||||
m_ui->statusIcon->setToolTip(Shared::availabilityNames[contact->getAvailability()]);
|
m_ui->statusIcon->setPixmap(Shared::availabilityIcon(av, true).pixmap(40));
|
||||||
|
m_ui->statusIcon->setToolTip(Shared::availabilityNames[av]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Conversation::setStatus(const QString& status)
|
void Conversation::setStatus(const QString& status)
|
||||||
|
@ -223,7 +223,7 @@ QIcon Models::Contact::getStatusIcon(bool big) const
|
|||||||
} else if (state == Shared::both) {
|
} else if (state == Shared::both) {
|
||||||
return Shared::availabilityIcon(availability, big);;
|
return Shared::availabilityIcon(availability, big);;
|
||||||
} else {
|
} else {
|
||||||
return QIcon::fromTheme(Shared::subscriptionStateThemeIcons[state]);
|
return Shared::subscriptionStateIcon(state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user