mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-06 22:26:32 +02:00
When the DBID is reset, don't re-read all past DMs. Probably fixes
TWK-513.
This commit is contained in:
@@ -71,12 +71,7 @@ TwitterPlugin::TwitterPlugin( const QString& pluginId )
|
|||||||
qDebug() << Q_FUNC_INFO;
|
qDebug() << Q_FUNC_INFO;
|
||||||
|
|
||||||
if ( Database::instance()->dbid() != twitterSavedDbid() )
|
if ( Database::instance()->dbid() != twitterSavedDbid() )
|
||||||
{
|
|
||||||
setTwitterCachedDirectMessagesSinceId( 0 );
|
|
||||||
setTwitterCachedFriendsSinceId( 0 );
|
|
||||||
setTwitterCachedMentionsSinceId( 0 );
|
|
||||||
setTwitterCachedPeers( QVariantHash() );
|
setTwitterCachedPeers( QVariantHash() );
|
||||||
}
|
|
||||||
|
|
||||||
setTwitterSavedDbid( Database::instance()->dbid() );
|
setTwitterSavedDbid( Database::instance()->dbid() );
|
||||||
|
|
||||||
@@ -169,21 +164,10 @@ TwitterPlugin::connectPlugin( bool startup )
|
|||||||
qDebug() << Q_FUNC_INFO;
|
qDebug() << Q_FUNC_INFO;
|
||||||
|
|
||||||
m_cachedPeers = twitterCachedPeers();
|
m_cachedPeers = twitterCachedPeers();
|
||||||
QList<QString> peerlist = m_cachedPeers.keys();
|
QStringList peerList = m_cachedPeers.keys();
|
||||||
qStableSort( peerlist.begin(), peerlist.end() );
|
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 ) );
|
registerOffers( peerList );
|
||||||
}
|
|
||||||
|
|
||||||
if ( twitterOAuthToken().isEmpty() || twitterOAuthTokenSecret().isEmpty() )
|
if ( twitterOAuthToken().isEmpty() || twitterOAuthTokenSecret().isEmpty() )
|
||||||
{
|
{
|
||||||
@@ -340,6 +324,48 @@ TwitterPlugin::checkTimerFired()
|
|||||||
m_mentions.data()->fetch( m_cachedMentionsSinceId, 0, 800 );
|
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
|
void
|
||||||
TwitterPlugin::connectTimerFired()
|
TwitterPlugin::connectTimerFired()
|
||||||
{
|
{
|
||||||
@@ -357,39 +383,9 @@ TwitterPlugin::connectTimerFired()
|
|||||||
|
|
||||||
qDebug() << Q_FUNC_INFO << " continuing";
|
qDebug() << Q_FUNC_INFO << " continuing";
|
||||||
QString myScreenName = twitterScreenName();
|
QString myScreenName = twitterScreenName();
|
||||||
QList<QString> peerlist = m_cachedPeers.keys();
|
QStringList peerList = m_cachedPeers.keys();
|
||||||
qStableSort( peerlist.begin(), peerlist.end() );
|
qStableSort( peerList.begin(), peerList.end() );
|
||||||
foreach( QString screenName, peerlist )
|
registerOffers( 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 ) );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@@ -108,6 +108,7 @@ private slots:
|
|||||||
void directMessagePosted( const QTweetDMStatus &message );
|
void directMessagePosted( const QTweetDMStatus &message );
|
||||||
void directMessagePostError( QTweetNetBase::ErrorCode errorCode, const QString &message );
|
void directMessagePostError( QTweetNetBase::ErrorCode errorCode, const QString &message );
|
||||||
void directMessageDestroyed( const QTweetDMStatus &message );
|
void directMessageDestroyed( const QTweetDMStatus &message );
|
||||||
|
void registerOffers( const QStringList &peerList );
|
||||||
void registerOffer( const QString &screenName, const QVariantHash &peerdata );
|
void registerOffer( const QString &screenName, const QVariantHash &peerdata );
|
||||||
void sendOffer( const QString &screenName, const QVariantHash &peerdata );
|
void sendOffer( const QString &screenName, const QVariantHash &peerdata );
|
||||||
void makeConnection( const QString &screenName, const QVariantHash &peerdata );
|
void makeConnection( const QString &screenName, const QVariantHash &peerdata );
|
||||||
|
Reference in New Issue
Block a user