1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-07-31 11:20:22 +02:00

Twitter actually saves auth and connects

This commit is contained in:
Jeff Mitchell
2011-11-05 13:36:58 -04:00
parent 13cfda6e1e
commit 9db0b5ed40
5 changed files with 48 additions and 40 deletions

View File

@@ -62,6 +62,7 @@ TwitterAccount::~TwitterAccount()
void void
TwitterAccount::configDialogAuthedSignalSlot( bool authed ) TwitterAccount::configDialogAuthedSignalSlot( bool authed )
{ {
tDebug() << Q_FUNC_INFO;
m_isAuthenticated = authed; m_isAuthenticated = authed;
if ( !credentials()[ "username" ].toString().isEmpty() ) if ( !credentials()[ "username" ].toString().isEmpty() )
setAccountFriendlyName( QString( "@%1" ).arg( credentials()[ "username" ].toString() ) ); setAccountFriendlyName( QString( "@%1" ).arg( credentials()[ "username" ].toString() ) );

View File

@@ -132,9 +132,9 @@ public:
m_accountId = accountId; m_accountId = accountId;
TomahawkSettings* s = TomahawkSettings::instance(); TomahawkSettings* s = TomahawkSettings::instance();
s->beginGroup( "accounts/" + m_accountId ); s->beginGroup( "accounts/" + m_accountId );
m_accountFriendlyName = s->value( "accountFriendlyName", QString() ).toString(); m_accountFriendlyName = s->value( "accountfriendlyname", QString() ).toString();
m_enabled = s->value( "enabled", false ).toBool(); m_enabled = s->value( "enabled", false ).toBool();
m_autoConnect = s->value( "autoConnect", false ).toBool(); m_autoConnect = s->value( "autoconnect", false ).toBool();
m_credentials = s->value( "credentials", QVariantHash() ).toHash(); m_credentials = s->value( "credentials", QVariantHash() ).toHash();
m_configuration = s->value( "configuration", QVariantHash() ).toHash(); m_configuration = s->value( "configuration", QVariantHash() ).toHash();
m_acl = s->value( "acl", QVariantMap() ).toMap(); m_acl = s->value( "acl", QVariantMap() ).toMap();
@@ -147,17 +147,15 @@ public:
{ {
TomahawkSettings* s = TomahawkSettings::instance(); TomahawkSettings* s = TomahawkSettings::instance();
s->beginGroup( "accounts/" + m_accountId ); s->beginGroup( "accounts/" + m_accountId );
s->setValue( "accountFriendlyName", m_accountFriendlyName ); s->setValue( "accountfriendlyname", m_accountFriendlyName );
s->setValue( "enabled", m_enabled ); s->setValue( "enabled", m_enabled );
s->setValue( "autoConnect", m_autoConnect ); s->setValue( "autoconnect", m_autoConnect );
s->setValue( "credentials", m_credentials ); s->setValue( "credentials", m_credentials );
s->setValue( "configuration", m_configuration ); s->setValue( "configuration", m_configuration );
s->setValue( "acl", m_acl ); s->setValue( "acl", m_acl );
s->setValue( "types", m_types ); s->setValue( "types", m_types );
s->endGroup(); s->endGroup();
s->sync(); s->sync();
emit configurationChanged();
} }
QString m_accountServiceName; QString m_accountServiceName;

View File

@@ -173,9 +173,11 @@ SipHandler::removeSipPlugin( SipPlugin* p )
void void
SipHandler::loadFromAccountManager() SipHandler::loadFromAccountManager()
{ {
tDebug() << Q_FUNC_INFO;
QList< Tomahawk::Accounts::Account* > accountList = Tomahawk::Accounts::AccountManager::instance()->getAccounts( Tomahawk::Accounts::SipType ); QList< Tomahawk::Accounts::Account* > accountList = Tomahawk::Accounts::AccountManager::instance()->getAccounts( Tomahawk::Accounts::SipType );
foreach( Tomahawk::Accounts::Account* account, accountList ) foreach( Tomahawk::Accounts::Account* account, accountList )
{ {
tDebug() << Q_FUNC_INFO << "adding plugin " << account->accountId();
SipPlugin* p = account->sipPlugin(); SipPlugin* p = account->sipPlugin();
addSipPlugin( p ); addSipPlugin( p );
} }

View File

@@ -58,10 +58,10 @@ TwitterSipPlugin::TwitterSipPlugin( Tomahawk::Accounts::Account* account )
{ {
qDebug() << Q_FUNC_INFO; qDebug() << Q_FUNC_INFO;
if ( Database::instance()->dbid() != m_configuration[ "savedDbid" ].toString() ) if ( Database::instance()->dbid() != m_configuration[ "saveddbid" ].toString() )
{ {
m_configuration[ "cachedPeers" ] = QVariantHash(); m_configuration[ "cachedpeers" ] = QVariantHash();
m_configuration[ "savedDbid" ] = Database::instance()->dbid(); m_configuration[ "saveddbid" ] = Database::instance()->dbid();
syncConfig(); syncConfig();
} }
@@ -102,18 +102,22 @@ void TwitterSipPlugin::checkSettings()
bool bool
TwitterSipPlugin::connectPlugin() TwitterSipPlugin::connectPlugin()
{ {
qDebug() << Q_FUNC_INFO; tDebug() << Q_FUNC_INFO;
if ( !m_account->enabled() ) if ( !m_account->enabled() )
{
tDebug() << Q_FUNC_INFO << "account isn't enabled";
return false; return false;
}
m_cachedPeers = m_configuration[ "cachedPeers" ].toHash(); m_cachedPeers = m_configuration[ "cachedpeers" ].toHash();
QStringList peerList = m_cachedPeers.keys(); QStringList peerList = m_cachedPeers.keys();
qStableSort( peerList.begin(), peerList.end() ); qStableSort( peerList.begin(), peerList.end() );
registerOffers( peerList ); registerOffers( peerList );
tDebug() << Q_FUNC_INFO << "credentials: " << m_credentials.keys();
if ( m_credentials[ "oauthToken" ].toString().isEmpty() || m_credentials[ "oauthTokenSecret" ].toString().isEmpty() ) if ( m_credentials[ "oauthtoken" ].toString().isEmpty() || m_credentials[ "oauthtokensecret" ].toString().isEmpty() )
{ {
qDebug() << "TwitterSipPlugin has empty Twitter credentials; not connecting"; qDebug() << "TwitterSipPlugin has empty Twitter credentials; not connecting";
return m_cachedPeers.isEmpty(); return m_cachedPeers.isEmpty();
@@ -146,8 +150,8 @@ TwitterSipPlugin::refreshTwitterAuth()
if( m_twitterAuth.isNull() ) if( m_twitterAuth.isNull() )
return false; return false;
m_twitterAuth.data()->setOAuthToken( m_credentials[ "oauthToken" ].toString().toLatin1() ); m_twitterAuth.data()->setOAuthToken( m_credentials[ "oauthtoken" ].toString().toLatin1() );
m_twitterAuth.data()->setOAuthTokenSecret( m_credentials[ "oauthTokenSecret" ].toString().toLatin1() ); m_twitterAuth.data()->setOAuthTokenSecret( m_credentials[ "oauthtokensecret" ].toString().toLatin1() );
return true; return true;
} }
@@ -155,7 +159,7 @@ TwitterSipPlugin::refreshTwitterAuth()
void void
TwitterSipPlugin::disconnectPlugin() TwitterSipPlugin::disconnectPlugin()
{ {
qDebug() << Q_FUNC_INFO; tDebug() << Q_FUNC_INFO;
m_checkTimer.stop(); m_checkTimer.stop();
m_connectTimer.stop(); m_connectTimer.stop();
m_dmPollTimer.stop(); m_dmPollTimer.stop();
@@ -172,7 +176,7 @@ TwitterSipPlugin::disconnectPlugin()
if( !m_twitterAuth.isNull() ) if( !m_twitterAuth.isNull() )
delete m_twitterAuth.data(); delete m_twitterAuth.data();
m_configuration[ "cachedPeers" ] = m_cachedPeers; m_configuration[ "cachedpeers" ] = m_cachedPeers;
syncConfig(); syncConfig();
m_cachedPeers.empty(); m_cachedPeers.empty();
m_state = Disconnected; m_state = Disconnected;
@@ -198,7 +202,7 @@ TwitterSipPlugin::connectAuthVerifyReply( const QTweetUser &user )
m_isAuthed = true; m_isAuthed = true;
if ( !m_twitterAuth.isNull() ) if ( !m_twitterAuth.isNull() )
{ {
m_configuration[ "screenName" ] = user.screenName(); m_configuration[ "screenname" ] = user.screenName();
syncConfig(); syncConfig();
m_friendsTimeline = QWeakPointer<QTweetFriendsTimeline>( new QTweetFriendsTimeline( m_twitterAuth.data(), this ) ); m_friendsTimeline = QWeakPointer<QTweetFriendsTimeline>( new QTweetFriendsTimeline( m_twitterAuth.data(), this ) );
m_mentions = QWeakPointer<QTweetMentions>( new QTweetMentions( m_twitterAuth.data(), this ) ); m_mentions = QWeakPointer<QTweetMentions>( new QTweetMentions( m_twitterAuth.data(), this ) );
@@ -249,7 +253,7 @@ TwitterSipPlugin::checkTimerFired()
return; return;
if ( m_cachedFriendsSinceId == 0 ) if ( m_cachedFriendsSinceId == 0 )
m_cachedFriendsSinceId = m_configuration[ "cachedFriendsSinceId" ].toLongLong(); m_cachedFriendsSinceId = m_configuration[ "cachedfriendssinceid" ].toLongLong();
qDebug() << "TwitterSipPlugin looking at friends timeline since id " << m_cachedFriendsSinceId; qDebug() << "TwitterSipPlugin looking at friends timeline since id " << m_cachedFriendsSinceId;
@@ -257,7 +261,7 @@ TwitterSipPlugin::checkTimerFired()
m_friendsTimeline.data()->fetch( m_cachedFriendsSinceId, 0, 800 ); m_friendsTimeline.data()->fetch( m_cachedFriendsSinceId, 0, 800 );
if ( m_cachedMentionsSinceId == 0 ) if ( m_cachedMentionsSinceId == 0 )
m_cachedMentionsSinceId = m_configuration[ "cachedMentionsSinceId" ].toLongLong(); m_cachedMentionsSinceId = m_configuration[ "cachedmentionssinceid" ].toLongLong();
qDebug() << "TwitterSipPlugin looking at mentions timeline since id " << m_cachedMentionsSinceId; qDebug() << "TwitterSipPlugin looking at mentions timeline since id " << m_cachedMentionsSinceId;
@@ -276,7 +280,7 @@ TwitterSipPlugin::registerOffers( const QStringList &peerList )
if ( peerData.contains( "onod" ) && peerData["onod"] != Database::instance()->dbid() ) if ( peerData.contains( "onod" ) && peerData["onod"] != Database::instance()->dbid() )
{ {
m_cachedPeers.remove( screenName ); m_cachedPeers.remove( screenName );
m_configuration[ "cachedPeers" ] = m_cachedPeers; m_configuration[ "cachedpeers" ] = m_cachedPeers;
syncConfig(); syncConfig();
} }
@@ -284,7 +288,7 @@ TwitterSipPlugin::registerOffers( const QStringList &peerList )
{ {
peerData["lastseen"] = QDateTime::currentMSecsSinceEpoch(); peerData["lastseen"] = QDateTime::currentMSecsSinceEpoch();
m_cachedPeers[screenName] = peerData; m_cachedPeers[screenName] = peerData;
m_configuration[ "cachedPeers" ] = m_cachedPeers; m_configuration[ "cachedpeers" ] = m_cachedPeers;
syncConfig(); syncConfig();
qDebug() << Q_FUNC_INFO << " already connected"; qDebug() << Q_FUNC_INFO << " already connected";
continue; continue;
@@ -293,7 +297,7 @@ TwitterSipPlugin::registerOffers( const QStringList &peerList )
{ {
qDebug() << Q_FUNC_INFO << " aging peer " << screenName << " out of cache"; qDebug() << Q_FUNC_INFO << " aging peer " << screenName << " out of cache";
m_cachedPeers.remove( screenName ); m_cachedPeers.remove( screenName );
m_configuration[ "cachedPeers" ] = m_cachedPeers; m_configuration[ "cachedpeers" ] = m_cachedPeers;
syncConfig(); syncConfig();
m_cachedAvatars.remove( screenName ); m_cachedAvatars.remove( screenName );
continue; continue;
@@ -313,20 +317,20 @@ TwitterSipPlugin::registerOffers( const QStringList &peerList )
void void
TwitterSipPlugin::connectTimerFired() TwitterSipPlugin::connectTimerFired()
{ {
qDebug() << Q_FUNC_INFO << " beginning"; tDebug() << Q_FUNC_INFO << " beginning";
if ( !isValid() || m_cachedPeers.isEmpty() || m_twitterAuth.isNull() ) if ( !isValid() || m_cachedPeers.isEmpty() || m_twitterAuth.isNull() )
{ {
if ( !isValid() ) if ( !isValid() )
qDebug() << Q_FUNC_INFO << " is not valid"; tDebug() << Q_FUNC_INFO << " is not valid";
if ( m_cachedPeers.isEmpty() ) if ( m_cachedPeers.isEmpty() )
qDebug() << Q_FUNC_INFO << " has empty cached peers"; tDebug() << Q_FUNC_INFO << " has empty cached peers";
if ( m_twitterAuth.isNull() ) if ( m_twitterAuth.isNull() )
qDebug() << Q_FUNC_INFO << " has null twitterAuth"; tDebug() << Q_FUNC_INFO << " has null twitterAuth";
return; return;
} }
qDebug() << Q_FUNC_INFO << " continuing"; tDebug() << Q_FUNC_INFO << " continuing";
QString myScreenName = m_configuration[ "screenName" ].toString(); QString myScreenName = m_configuration[ "screenname" ].toString();
QStringList peerList = m_cachedPeers.keys(); QStringList peerList = m_cachedPeers.keys();
qStableSort( peerList.begin(), peerList.end() ); qStableSort( peerList.begin(), peerList.end() );
registerOffers( peerList ); registerOffers( peerList );
@@ -335,7 +339,7 @@ TwitterSipPlugin::connectTimerFired()
void void
TwitterSipPlugin::parseGotTomahawk( const QRegExp &regex, const QString &screenName, const QString &text ) TwitterSipPlugin::parseGotTomahawk( const QRegExp &regex, const QString &screenName, const QString &text )
{ {
QString myScreenName = m_configuration[ "screenName" ].toString(); QString myScreenName = m_configuration[ "screenname" ].toString();
qDebug() << "TwitterSipPlugin found an exact matching Got Tomahawk? mention or direct message from user " << screenName << ", now parsing"; qDebug() << "TwitterSipPlugin found an exact matching Got Tomahawk? mention or direct message from user " << screenName << ", now parsing";
regex.exactMatch( text ); regex.exactMatch( text );
if ( text.startsWith( '@' ) && regex.captureCount() >= 2 && regex.cap( 1 ) != QString( '@' + myScreenName ) ) if ( text.startsWith( '@' ) && regex.captureCount() >= 2 && regex.cap( 1 ) != QString( '@' + myScreenName ) )
@@ -411,7 +415,7 @@ TwitterSipPlugin::friendsTimelineStatuses( const QList< QTweetStatus > &statuses
parseGotTomahawk( regex, status.user().screenName(), status.text() ); parseGotTomahawk( regex, status.user().screenName(), status.text() );
} }
m_configuration[ "cachedFriendsSinceId" ] = m_cachedFriendsSinceId; m_configuration[ "cachedfriendssinceid" ] = m_cachedFriendsSinceId;
syncConfig(); syncConfig();
} }
@@ -445,7 +449,7 @@ TwitterSipPlugin::mentionsStatuses( const QList< QTweetStatus > &statuses )
parseGotTomahawk( regex, status.user().screenName(), status.text() ); parseGotTomahawk( regex, status.user().screenName(), status.text() );
} }
m_configuration[ "cachedMentionsSinceId" ] = m_cachedMentionsSinceId; m_configuration[ "cachedmentionssinceid" ] = m_cachedMentionsSinceId;
syncConfig(); syncConfig();
} }
@@ -456,7 +460,7 @@ TwitterSipPlugin::pollDirectMessages()
return; return;
if ( m_cachedDirectMessagesSinceId == 0 ) if ( m_cachedDirectMessagesSinceId == 0 )
m_cachedDirectMessagesSinceId = m_configuration[ "cachedDirectMentionsSinceId" ].toLongLong(); m_cachedDirectMessagesSinceId = m_configuration[ "cacheddirectmentionssinceid" ].toLongLong();
qDebug() << "TwitterSipPlugin looking for direct messages since id " << m_cachedDirectMessagesSinceId; qDebug() << "TwitterSipPlugin looking for direct messages since id " << m_cachedDirectMessagesSinceId;
@@ -470,7 +474,7 @@ TwitterSipPlugin::directMessages( const QList< QTweetDMStatus > &messages )
qDebug() << Q_FUNC_INFO; qDebug() << Q_FUNC_INFO;
QRegExp regex( s_gotTomahawkRegex, Qt::CaseSensitive, QRegExp::RegExp2 ); QRegExp regex( s_gotTomahawkRegex, Qt::CaseSensitive, QRegExp::RegExp2 );
QString myScreenName = m_configuration[ "screenName" ].toString(); QString myScreenName = m_configuration[ "screenname" ].toString();
QHash< QString, QTweetDMStatus > latestHash; QHash< QString, QTweetDMStatus > latestHash;
foreach ( QTweetDMStatus status, messages ) foreach ( QTweetDMStatus status, messages )
@@ -547,7 +551,7 @@ TwitterSipPlugin::directMessages( const QList< QTweetDMStatus > &messages )
} }
} }
m_configuration[ "cachedDirectMessagesSinceId" ] = m_cachedDirectMessagesSinceId; m_configuration[ "cacheddirectmessagessinceid" ] = m_cachedDirectMessagesSinceId;
syncConfig(); syncConfig();
} }
@@ -627,7 +631,7 @@ TwitterSipPlugin::registerOffer( const QString &screenName, const QVariantHash &
{ {
_peerData["lastseen"] = QString::number( QDateTime::currentMSecsSinceEpoch() ); _peerData["lastseen"] = QString::number( QDateTime::currentMSecsSinceEpoch() );
m_cachedPeers[screenName] = QVariant::fromValue< QVariantHash >( _peerData ); m_cachedPeers[screenName] = QVariant::fromValue< QVariantHash >( _peerData );
m_configuration[ "cachedPeers" ] = m_cachedPeers; m_configuration[ "cachedpeers" ] = m_cachedPeers;
syncConfig(); syncConfig();
} }
@@ -715,7 +719,7 @@ TwitterSipPlugin::fetchAvatar( const QString& screenName )
void void
TwitterSipPlugin::avatarUserDataSlot( const QTweetUser &user ) TwitterSipPlugin::avatarUserDataSlot( const QTweetUser &user )
{ {
qDebug() << Q_FUNC_INFO; tDebug() << Q_FUNC_INFO;
if ( user.profileImageUrl().isEmpty() || m_twitterAuth.isNull() ) if ( user.profileImageUrl().isEmpty() || m_twitterAuth.isNull() )
return; return;
@@ -735,11 +739,11 @@ TwitterSipPlugin::refreshProxy()
void void
TwitterSipPlugin::profilePicReply() TwitterSipPlugin::profilePicReply()
{ {
qDebug() << Q_FUNC_INFO; tDebug() << Q_FUNC_INFO;
QNetworkReply *reply = qobject_cast< QNetworkReply* >( sender() ); QNetworkReply *reply = qobject_cast< QNetworkReply* >( sender() );
if ( !reply || reply->error() != QNetworkReply::NoError || !reply->property( "screenname" ).isValid() ) if ( !reply || reply->error() != QNetworkReply::NoError || !reply->property( "screenname" ).isValid() )
{ {
qDebug() << Q_FUNC_INFO << " reply not valid or came back with error"; tDebug() << Q_FUNC_INFO << " reply not valid or came back with error";
return; return;
} }
QString screenName = reply->property( "screenname" ).toString(); QString screenName = reply->property( "screenname" ).toString();
@@ -755,6 +759,7 @@ TwitterSipPlugin::profilePicReply()
void void
TwitterSipPlugin::configurationChanged() TwitterSipPlugin::configurationChanged()
{ {
tDebug() << Q_FUNC_INFO;
if ( m_state != Disconnected ) if ( m_state != Disconnected )
disconnectPlugin(); disconnectPlugin();
connectPlugin(); connectPlugin();

View File

@@ -514,8 +514,10 @@ TomahawkApp::initSIP()
foreach ( Tomahawk::Accounts::Account* account, Tomahawk::Accounts::AccountManager::instance()->getAccounts() ) foreach ( Tomahawk::Accounts::Account* account, Tomahawk::Accounts::AccountManager::instance()->getAccounts() )
{ {
tDebug() << Q_FUNC_INFO << "testing account with name " << account->accountServiceName(); tDebug() << Q_FUNC_INFO << "testing account with name " << account->accountServiceName();
if ( account->configurationWidget() ) if ( account->configurationWidget() && account->configuration().isEmpty() )
account->configurationWidget()->show(); account->configurationWidget()->show();
if ( !account->enabled() )
account->setEnabled( true );
} }
//FIXME: jabber autoconnect is really more, now that there is sip -- should be renamed and/or split out of jabber-specific settings //FIXME: jabber autoconnect is really more, now that there is sip -- should be renamed and/or split out of jabber-specific settings