Working adding of inoreader acc.

This commit is contained in:
Martin Rotter 2017-09-22 12:34:37 +02:00
parent 6dde6928f6
commit d4d186b951
8 changed files with 56 additions and 8 deletions

View File

@ -22,6 +22,8 @@
#include "miscellaneous/iconfactory.h"
#include "miscellaneous/textfactory.h"
#include "services/abstract/category.h"
#include "services/inoreader/inoreaderserviceroot.h"
#include "services/inoreader/network/inoreadernetworkfactory.h"
#include "services/owncloud/definitions.h"
#include "services/owncloud/network/owncloudnetworkfactory.h"
#include "services/owncloud/owncloudfeed.h"
@ -1480,6 +1482,40 @@ Assignment DatabaseQueries::getCategories(QSqlDatabase db, int account_id, bool*
return categories;
}
QList<ServiceRoot*> DatabaseQueries::getInoreaderAccounts(QSqlDatabase db, bool* ok) {
QSqlQuery query(db);
QList<ServiceRoot*> roots;
if (query.exec("SELECT * FROM InoreaderAccounts;")) {
while (query.next()) {
InoreaderServiceRoot* root = new InoreaderServiceRoot(nullptr);
root->setId(query.value(0).toInt());
root->setAccountId(query.value(0).toInt());
root->network()->setUsername(query.value(1).toString());
root->network()->setAccessToken(query.value(2).toString());
root->network()->setRefreshToken(query.value(3).toString());
root->network()->setBatchSize(query.value(4).toInt());
root->updateTitle();
roots.append(root);
}
if (ok != nullptr) {
*ok = true;
}
}
else {
qWarning("Inoreader: Getting list of activated accounts failed: '%s'.", qPrintable(query.lastError().text()));
if (ok != nullptr) {
*ok = false;
}
}
return roots;
}
bool DatabaseQueries::overwriteInoreaderAccount(QSqlDatabase db, const QString& username, const QString& access_token,
const QString& refresh_token, int batch_size, int account_id) {
QSqlQuery query(db);

View File

@ -79,6 +79,7 @@ class DatabaseQueries {
static Assignment getCategories(QSqlDatabase db, int account_id, bool* ok = nullptr);
// Inoreader account.
static QList<ServiceRoot*> getInoreaderAccounts(QSqlDatabase db, bool* ok = nullptr);
static bool overwriteInoreaderAccount(QSqlDatabase db, const QString& username, const QString& access_token,
const QString& refresh_token, int batch_size, int account_id);
static bool createInoreaderAccount(QSqlDatabase db, int id_to_assign, const QString& username,

View File

@ -91,6 +91,10 @@ void FormEditInoreaderAccount::onClickedOk() {
editing_account = false;
}
if (m_editableRoot->network()->userName().isEmpty()) {
m_editableRoot->network()->setUsername(tr("uknown"));
}
m_editableRoot->network()->setBatchSize(m_ui.m_spinLimitMessages->value());
m_editableRoot->saveAccountDataToDatabase();
accept();

View File

@ -34,7 +34,9 @@ ServiceRoot* InoreaderEntryPoint::createNewRoot() const {
}
QList<ServiceRoot*> InoreaderEntryPoint::initializeSubtree() const {
return QList<ServiceRoot*>();
QSqlDatabase database = qApp->database()->connection(QSL("InoreaderEntryPoint"), DatabaseFactory::FromSettings);
return DatabaseQueries::getInoreaderAccounts(database);
}
bool InoreaderEntryPoint::isSingleInstanceService() const {

View File

@ -32,19 +32,21 @@ InoreaderServiceRoot::InoreaderServiceRoot(InoreaderNetworkFactory* network, Roo
else {
m_network->setParent(this);
}
setIcon(InoreaderEntryPoint().icon());
}
InoreaderServiceRoot::~InoreaderServiceRoot() {}
void InoreaderServiceRoot::updateTitle() {
setTitle(m_network->username() + QSL(" (Inoreader)"));
setTitle(m_network->userName() + QSL(" (Inoreader)"));
}
void InoreaderServiceRoot::saveAccountDataToDatabase() {
QSqlDatabase database = qApp->database()->connection(metaObject()->className(), DatabaseFactory::FromSettings);
if (accountId() != NO_PARENT_CATEGORY) {
if (DatabaseQueries::overwriteInoreaderAccount(database, m_network->username(), m_network->accessToken(),
if (DatabaseQueries::overwriteInoreaderAccount(database, m_network->userName(), m_network->accessToken(),
m_network->refreshToken(), m_network->batchSize(),
accountId())) {
updateTitle();
@ -57,7 +59,7 @@ void InoreaderServiceRoot::saveAccountDataToDatabase() {
if (saved) {
if (DatabaseQueries::createInoreaderAccount(database, id_to_assign,
m_network->username(), m_network->accessToken(),
m_network->userName(), m_network->accessToken(),
m_network->refreshToken(), m_network->batchSize())) {
setId(id_to_assign);
setAccountId(id_to_assign);

View File

@ -45,8 +45,6 @@ class InoreaderServiceRoot : public ServiceRoot {
public slots:
void addNewFeed(const QString& url);
void addNewCategory();
private slots:
void updateTitle();
private:

View File

@ -38,7 +38,7 @@ bool InoreaderNetworkFactory::isLoggedIn() const {
return m_oauth2->expirationAt() > QDateTime::currentDateTime() && m_oauth2->status() == QAbstractOAuth::Status::Granted;
}
QString InoreaderNetworkFactory::username() const {
QString InoreaderNetworkFactory::userName() const {
return m_username;
}
@ -122,6 +122,10 @@ void InoreaderNetworkFactory::initializeOauth() {
});
}
void InoreaderNetworkFactory::setUsername(const QString& username) {
m_username = username;
}
void InoreaderNetworkFactory::setRefreshToken(const QString& refreshToken) {
m_refreshToken = refreshToken;
}

View File

@ -31,7 +31,8 @@ class InoreaderNetworkFactory : public QObject {
bool isLoggedIn() const;
QString username() const;
QString userName() const;
void setUsername(const QString& username);
// Gets/sets the amount of messages to obtain during single feed update.
int batchSize() const;