1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-03-28 11:42:42 +01: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
TwitterAccount::configDialogAuthedSignalSlot( bool authed )
{
tDebug() << Q_FUNC_INFO;
m_isAuthenticated = authed;
if ( !credentials()[ "username" ].toString().isEmpty() )
setAccountFriendlyName( QString( "@%1" ).arg( credentials()[ "username" ].toString() ) );

View File

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

View File

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

View File

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

View File

@ -514,8 +514,10 @@ TomahawkApp::initSIP()
foreach ( Tomahawk::Accounts::Account* account, Tomahawk::Accounts::AccountManager::instance()->getAccounts() )
{
tDebug() << Q_FUNC_INFO << "testing account with name " << account->accountServiceName();
if ( account->configurationWidget() )
if ( account->configurationWidget() && account->configuration().isEmpty() )
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