From 22e69bbb8cf3ffc2f1c9257b1644a0ff19837693 Mon Sep 17 00:00:00 2001 From: Jeff Mitchell Date: Thu, 15 Sep 2011 15:00:33 -0400 Subject: [PATCH] When the DBID is reset, don't re-read all past DMs. Probably fixes TWK-513. --- src/sip/twitter/twitter.cpp | 102 +++++++++++++++++------------------- src/sip/twitter/twitter.h | 1 + 2 files changed, 50 insertions(+), 53 deletions(-) diff --git a/src/sip/twitter/twitter.cpp b/src/sip/twitter/twitter.cpp index 582208829..7b916fe6b 100644 --- a/src/sip/twitter/twitter.cpp +++ b/src/sip/twitter/twitter.cpp @@ -71,12 +71,7 @@ TwitterPlugin::TwitterPlugin( const QString& pluginId ) qDebug() << Q_FUNC_INFO; if ( Database::instance()->dbid() != twitterSavedDbid() ) - { - setTwitterCachedDirectMessagesSinceId( 0 ); - setTwitterCachedFriendsSinceId( 0 ); - setTwitterCachedMentionsSinceId( 0 ); setTwitterCachedPeers( QVariantHash() ); - } setTwitterSavedDbid( Database::instance()->dbid() ); @@ -169,22 +164,11 @@ TwitterPlugin::connectPlugin( bool startup ) qDebug() << Q_FUNC_INFO; m_cachedPeers = twitterCachedPeers(); - QList peerlist = m_cachedPeers.keys(); - qStableSort( peerlist.begin(), peerlist.end() ); - foreach( QString screenName, peerlist ) - { - QVariantHash cachedPeer = m_cachedPeers[screenName].toHash(); - if ( cachedPeer.contains( "onod" ) && cachedPeer["onod"] != Database::instance()->dbid() ) - { - m_cachedPeers.remove( screenName ); - syncConfig(); - } - foreach( QString prop, cachedPeer.keys() ) - qDebug() << "TwitterPlugin : " << screenName << ", key " << prop << ", value " << ( cachedPeer[prop].canConvert< QString >() ? cachedPeer[prop].toString() : QString::number( cachedPeer[prop].toInt() ) ); - - QMetaObject::invokeMethod( this, "registerOffer", Q_ARG( QString, screenName ), Q_ARG( QVariantHash, cachedPeer ) ); - } + QStringList peerList = m_cachedPeers.keys(); + qStableSort( peerList.begin(), peerList.end() ); + registerOffers( peerList ); + if ( twitterOAuthToken().isEmpty() || twitterOAuthTokenSecret().isEmpty() ) { qDebug() << "TwitterPlugin has empty Twitter credentials; not connecting"; @@ -340,6 +324,48 @@ TwitterPlugin::checkTimerFired() m_mentions.data()->fetch( m_cachedMentionsSinceId, 0, 800 ); } + +void +TwitterPlugin::registerOffers( const QStringList &peerList ) +{ + foreach( QString screenName, peerList ) + { + QVariantHash peerData = m_cachedPeers[screenName].toHash(); + + if ( peerData.contains( "onod" ) && peerData["onod"] != Database::instance()->dbid() ) + { + m_cachedPeers.remove( screenName ); + syncConfig(); + } + + if ( Servent::instance()->connectedToSession( peerData["node"].toString() ) ) + { + peerData["lastseen"] = QDateTime::currentMSecsSinceEpoch(); + m_cachedPeers[screenName] = peerData; + syncConfig(); + qDebug() << Q_FUNC_INFO << " already connected"; + continue; + } + else if ( QDateTime::currentMSecsSinceEpoch() - peerData["lastseen"].toLongLong() > 1209600000 ) // 2 weeks + { + qDebug() << Q_FUNC_INFO << " aging peer " << screenName << " out of cache"; + m_cachedPeers.remove( screenName ); + syncConfig(); + m_cachedAvatars.remove( screenName ); + continue; + } + + if ( !peerData.contains( "host" ) || !peerData.contains( "port" ) || !peerData.contains( "pkey" ) ) + { + qDebug() << "TwitterPlugin does not have host, port and/or pkey values for " << screenName << " (this is usually *not* a bug or problem but a normal part of the process)"; + continue; + } + + QMetaObject::invokeMethod( this, "registerOffer", Q_ARG( QString, screenName ), Q_ARG( QVariantHash, peerData ) ); + } +} + + void TwitterPlugin::connectTimerFired() { @@ -357,39 +383,9 @@ TwitterPlugin::connectTimerFired() qDebug() << Q_FUNC_INFO << " continuing"; QString myScreenName = twitterScreenName(); - QList peerlist = m_cachedPeers.keys(); - qStableSort( peerlist.begin(), peerlist.end() ); - foreach( QString screenName, peerlist ) - { - qDebug() << Q_FUNC_INFO << " checking peer " << screenName; - QVariantHash peerData = m_cachedPeers[screenName].toHash(); - - if ( Servent::instance()->connectedToSession( peerData["node"].toString() ) ) - { - peerData["lastseen"] = QDateTime::currentMSecsSinceEpoch(); - m_cachedPeers[screenName] = peerData; - syncConfig(); - qDebug() << Q_FUNC_INFO << " already connected"; - continue; - } - - if ( QDateTime::currentMSecsSinceEpoch() - peerData["lastseen"].toLongLong() > 1209600000 ) // 2 weeks - { - qDebug() << Q_FUNC_INFO << " aging peer " << screenName << " out of cache"; - m_cachedPeers.remove( screenName ); - syncConfig(); - m_cachedAvatars.remove( screenName ); - continue; - } - - if ( !peerData.contains( "host" ) || !peerData.contains( "port" ) || !peerData.contains( "pkey" ) ) - { - qDebug() << "TwitterPlugin does not have host, port and/or pkey values for " << screenName << " (this is usually *not* a bug or problem but a normal part of the process)"; - continue; - } - - QMetaObject::invokeMethod( this, "registerOffer", Q_ARG( QString, screenName ), Q_ARG( QVariantHash, peerData ) ); - } + QStringList peerList = m_cachedPeers.keys(); + qStableSort( peerList.begin(), peerList.end() ); + registerOffers( peerList ); } void diff --git a/src/sip/twitter/twitter.h b/src/sip/twitter/twitter.h index adeebc34d..3ca0688ca 100644 --- a/src/sip/twitter/twitter.h +++ b/src/sip/twitter/twitter.h @@ -108,6 +108,7 @@ private slots: void directMessagePosted( const QTweetDMStatus &message ); void directMessagePostError( QTweetNetBase::ErrorCode errorCode, const QString &message ); void directMessageDestroyed( const QTweetDMStatus &message ); + void registerOffers( const QStringList &peerList ); void registerOffer( const QString &screenName, const QVariantHash &peerdata ); void sendOffer( const QString &screenName, const QVariantHash &peerdata ); void makeConnection( const QString &screenName, const QVariantHash &peerdata );