diff --git a/src/sip/twitter/twitter.cpp b/src/sip/twitter/twitter.cpp index 334a6c0f0..c4e3e9bb5 100644 --- a/src/sip/twitter/twitter.cpp +++ b/src/sip/twitter/twitter.cpp @@ -130,16 +130,30 @@ TwitterPlugin::connectPlugin( bool /*startup*/ ) return m_cachedPeers.isEmpty(); } - delete m_twitterAuth.data(); + if ( refreshTwitterAuth() ) + { + QTweetAccountVerifyCredentials *credVerifier = new QTweetAccountVerifyCredentials( m_twitterAuth.data(), this ); + connect( credVerifier, SIGNAL( parsedUser(const QTweetUser &) ), SLOT( connectAuthVerifyReply(const QTweetUser &) ) ); + credVerifier->verify(); + } + + return true; +} + +bool +TwitterPlugin::refreshTwitterAuth() +{ m_twitterAuth = QWeakPointer<TomahawkOAuthTwitter>( new TomahawkOAuthTwitter( this ) ); + + TomahawkSettings *settings = TomahawkSettings::instance(); + + if ( m_twitterAuth.isNull() ) + return false; + m_twitterAuth.data()->setNetworkAccessManager( TomahawkUtils::nam() ); m_twitterAuth.data()->setOAuthToken( settings->twitterOAuthToken().toLatin1() ); m_twitterAuth.data()->setOAuthTokenSecret( settings->twitterOAuthTokenSecret().toLatin1() ); - - QTweetAccountVerifyCredentials *credVerifier = new QTweetAccountVerifyCredentials( m_twitterAuth.data(), this ); - connect( credVerifier, SIGNAL( parsedUser(const QTweetUser &) ), SLOT( connectAuthVerifyReply(const QTweetUser &) ) ); - credVerifier->verify(); - + return true; } @@ -189,8 +203,17 @@ TwitterPlugin::connectAuthVerifyReply( const QTweetUser &user ) } else { - qDebug() << "TwitterPlugin auth pointer was null!"; - m_isAuthed = false; + if ( refreshTwitterAuth() ) + { + QTweetAccountVerifyCredentials *credVerifier = new QTweetAccountVerifyCredentials( m_twitterAuth.data(), this ); + connect( credVerifier, SIGNAL( parsedUser(const QTweetUser &) ), SLOT( connectAuthVerifyReply(const QTweetUser &) ) ); + credVerifier->verify(); + } + else + { + qDebug() << "TwitterPlugin auth pointer was null!"; + m_isAuthed = false; + } } } } @@ -201,6 +224,21 @@ TwitterPlugin::checkTimerFired() if ( !isValid() ) return; + if ( m_twitterAuth.isNull() ) + { + if ( refreshTwitterAuth() ) + { + QTweetAccountVerifyCredentials *credVerifier = new QTweetAccountVerifyCredentials( m_twitterAuth.data(), this ); + connect( credVerifier, SIGNAL( parsedUser(const QTweetUser &) ), SLOT( connectAuthVerifyReply(const QTweetUser &) ) ); + credVerifier->verify(); + } + else + { + qDebug() << "TwitterPlugin auth went null somehow and could not refresh"; + return; + } + } + if ( m_cachedFriendsSinceId == 0 ) m_cachedFriendsSinceId = TomahawkSettings::instance()->twitterCachedFriendsSinceId(); @@ -224,6 +262,21 @@ TwitterPlugin::connectTimerFired() { if ( !isValid() || m_cachedPeers.isEmpty() ) return; + + if ( m_twitterAuth.isNull() ) + { + if ( refreshTwitterAuth() ) + { + QTweetAccountVerifyCredentials *credVerifier = new QTweetAccountVerifyCredentials( m_twitterAuth.data(), this ); + connect( credVerifier, SIGNAL( parsedUser(const QTweetUser &) ), SLOT( connectAuthVerifyReply(const QTweetUser &) ) ); + credVerifier->verify(); + } + else + { + qDebug() << "TwitterPlugin auth went null somehow and could not refresh"; + return; + } + } QString myScreenName = TomahawkSettings::instance()->twitterScreenName(); QList<QString> peerlist = m_cachedPeers.keys(); diff --git a/src/sip/twitter/twitter.h b/src/sip/twitter/twitter.h index 3b03440af..e0c38b479 100644 --- a/src/sip/twitter/twitter.h +++ b/src/sip/twitter/twitter.h @@ -91,6 +91,8 @@ private slots: void makeConnection( const QString &screenName, const QHash< QString, QVariant > &peerdata ); private: + bool refreshTwitterAuth(); + QWeakPointer< TomahawkOAuthTwitter > m_twitterAuth; QWeakPointer< QTweetFriendsTimeline > m_friendsTimeline; QWeakPointer< QTweetMentions > m_mentions;