Skip to content
This repository has been archived by the owner on Sep 4, 2021. It is now read-only.

Commit

Permalink
[libcontacts] Report unknown addresses immediately
Browse files Browse the repository at this point in the history
When we are asked to resolve an address that was previously resolved
as unknown, report unknown immediately without querying the backend
again.
  • Loading branch information
matthewvogt committed Dec 11, 2013
1 parent 50a5847 commit 0dcb9e2
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 3 deletions.
29 changes: 26 additions & 3 deletions src/seasidecache.cpp
Expand Up @@ -1406,8 +1406,16 @@ bool SeasideCache::event(QEvent *event)
return QObject::event(event);

// Test these conditions in priority order
if ((!m_relationshipsToSave.isEmpty() && !m_relationshipSaveRequest.isActive()) ||
(!m_relationshipsToRemove.isEmpty() && !m_relationshipRemoveRequest.isActive())) {
if (!m_unknownResolveAddresses.isEmpty()) {
while (!m_unknownResolveAddresses.isEmpty()) {
const ResolveData &resolve = m_unknownResolveAddresses.takeFirst();
resolve.listener->addressResolved(resolve.first, resolve.second, 0);
}

// Send another event to trigger further processing
QCoreApplication::postEvent(this, new QEvent(QEvent::UpdateRequest));
} else if ((!m_relationshipsToSave.isEmpty() && !m_relationshipSaveRequest.isActive()) ||
(!m_relationshipsToRemove.isEmpty() && !m_relationshipRemoveRequest.isActive())) {
// this has to be before contact saves are processed so that the disaggregation flow
// works properly
if (!m_relationshipsToSave.isEmpty()) {
Expand Down Expand Up @@ -2951,7 +2959,22 @@ void SeasideCache::resolveAddress(ResolveListener *listener, const QString &firs
data.requireComplete = requireComplete;
data.listener = listener;

m_resolveAddresses.append(data);
// Is this address a known-unknown?
bool knownUnknown = false;
QList<ResolveData>::const_iterator it = instancePtr->m_unknownAddresses.constBegin(), end = m_unknownAddresses.constEnd();
for ( ; it != end; ++it) {
if (it->first == first && it->second == second) {
knownUnknown = true;
break;
}
}

if (knownUnknown) {
m_unknownResolveAddresses.append(data);
} else {
m_resolveAddresses.append(data);
}

requestUpdate();
}

Expand Down
1 change: 1 addition & 0 deletions src/seasidecache.h
Expand Up @@ -510,6 +510,7 @@ private slots:
ResolveListener *listener;
};
QList<ResolveData> m_resolveAddresses;
QList<ResolveData> m_unknownResolveAddresses;
QList<ResolveData> m_unknownAddresses;
const ResolveData *m_activeResolve;
QSet<QString> m_resolvedPhoneNumbers;
Expand Down

0 comments on commit 0dcb9e2

Please sign in to comment.