mirror of
https://github.com/nextcloud/desktop.git
synced 2024-10-24 05:15:40 +03:00
Act properly if OCS endpoint returned an error (OCS error)
For now pass it on to the gui. So at least they know something is wrong.
This commit is contained in:
parent
8c0297f688
commit
dd8d02b8ef
6 changed files with 65 additions and 59 deletions
|
@ -105,9 +105,10 @@ bool OcsJob::finished()
|
|||
<< Account::concatUrlPath(account()->url(), path())
|
||||
<< _params
|
||||
<< "has unexpected status code:" << statusCode << replyData;
|
||||
emit ocsError(statusCode, message);
|
||||
} else {
|
||||
emit jobFinished(json);
|
||||
}
|
||||
|
||||
emit jobFinished(json);
|
||||
deleteLater();
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -108,6 +108,15 @@ signals:
|
|||
*/
|
||||
void jobFinished(QVariantMap reply);
|
||||
|
||||
/**
|
||||
* The status code was not one of the expected (passing)
|
||||
* status code for this command
|
||||
*
|
||||
* @param statusCode The actual status code
|
||||
* @param message The message provided by the server
|
||||
*/
|
||||
void ocsError(int statusCode, const QString &message);
|
||||
|
||||
private slots:
|
||||
virtual bool finished() Q_DECL_OVERRIDE;
|
||||
|
||||
|
|
|
@ -48,21 +48,21 @@ int Share::getPermissions() const
|
|||
void Share::deleteShare()
|
||||
{
|
||||
OcsShareJob *job = new OcsShareJob(_account, this);
|
||||
connect(job, SIGNAL(jobFinished(QVariantMap)), this, SLOT(slotDeleted(QVariantMap)));
|
||||
connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotDeleted()));
|
||||
connect(job, SIGNAL(ocsError(int, const QString &)), SLOT(slotOcsError(int, const QString &)));
|
||||
job->deleteShare(getId());
|
||||
}
|
||||
|
||||
void Share::slotDeleted(const QVariantMap &reply)
|
||||
void Share::slotDeleted()
|
||||
{
|
||||
QString message;
|
||||
int code = OcsShareJob::getJsonReturnCode(reply, message);
|
||||
if (code != 100) {
|
||||
//emit error!
|
||||
}
|
||||
|
||||
emit shareDeleted();
|
||||
}
|
||||
|
||||
void Share::slotOcsError(int statusCode, const QString &message)
|
||||
{
|
||||
emit serverError(statusCode, message);
|
||||
}
|
||||
|
||||
QUrl LinkShare::getLink() const
|
||||
{
|
||||
return _url;
|
||||
|
@ -103,21 +103,13 @@ bool LinkShare::getPublicUpload()
|
|||
void LinkShare::setPublicUpload(bool publicUpload)
|
||||
{
|
||||
OcsShareJob *job = new OcsShareJob(_account, this);
|
||||
connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), this, SLOT(slotPublicUploadSet(QVariantMap, QVariant)));
|
||||
connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotPublicUploadSet(QVariantMap, QVariant)));
|
||||
connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString)));
|
||||
job->setPublicUpload(getId(), publicUpload);
|
||||
}
|
||||
|
||||
void LinkShare::slotPublicUploadSet(const QVariantMap &reply, const QVariant &value)
|
||||
void LinkShare::slotPublicUploadSet(const QVariantMap&, const QVariant &value)
|
||||
{
|
||||
qDebug() << Q_FUNC_INFO << reply;
|
||||
qDebug() << Q_FUNC_INFO << value;
|
||||
|
||||
QString message;
|
||||
int code = OcsShareJob::getJsonReturnCode(reply, message);
|
||||
if (code != 100) {
|
||||
//emit error
|
||||
}
|
||||
|
||||
//TODO FIX permission with names
|
||||
if (value.toBool()) {
|
||||
_permissions = 7;
|
||||
|
@ -131,18 +123,13 @@ void LinkShare::slotPublicUploadSet(const QVariantMap &reply, const QVariant &va
|
|||
void LinkShare::setPassword(const QString &password)
|
||||
{
|
||||
OcsShareJob *job = new OcsShareJob(_account, this);
|
||||
connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), this, SLOT(slotPasswordSet(QVariantMap, QVariant)));
|
||||
connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotPasswordSet(QVariantMap, QVariant)));
|
||||
connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString)));
|
||||
job->setPassword(getId(), password);
|
||||
}
|
||||
|
||||
void LinkShare::slotPasswordSet(const QVariantMap &reply, const QVariant &value)
|
||||
void LinkShare::slotPasswordSet(const QVariantMap&, const QVariant &value)
|
||||
{
|
||||
QString message;
|
||||
int code = OcsShareJob::getJsonReturnCode(reply, message);
|
||||
if (code != 100) {
|
||||
//emit error
|
||||
}
|
||||
|
||||
_passwordSet = value.toString() == "";
|
||||
emit passwordSet();
|
||||
}
|
||||
|
@ -150,18 +137,13 @@ void LinkShare::slotPasswordSet(const QVariantMap &reply, const QVariant &value)
|
|||
void LinkShare::setExpireDate(const QDate &date)
|
||||
{
|
||||
OcsShareJob *job = new OcsShareJob(_account, this);
|
||||
connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), this, SLOT(slotExpireDateSet(QVariantMap, QVariant)));
|
||||
connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotExpireDateSet(QVariantMap, QVariant)));
|
||||
connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString)));
|
||||
job->setExpireDate(getId(), date);
|
||||
}
|
||||
|
||||
void LinkShare::slotExpireDateSet(const QVariantMap &reply, const QVariant &value)
|
||||
void LinkShare::slotExpireDateSet(const QVariantMap&, const QVariant &value)
|
||||
{
|
||||
QString message;
|
||||
int code = OcsShareJob::getJsonReturnCode(reply, message);
|
||||
if (code != 100) {
|
||||
//emit error
|
||||
}
|
||||
|
||||
_expireDate = value.toDate();
|
||||
emit expireDateSet();
|
||||
}
|
||||
|
@ -177,7 +159,8 @@ void ShareManager::createLinkShare(const QString &path,
|
|||
const QString &password)
|
||||
{
|
||||
OcsShareJob *job = new OcsShareJob(_account, this);
|
||||
connect(job, SIGNAL(jobFinished(QVariantMap)), this, SLOT(slotLinkShareCreated(QVariantMap)));
|
||||
connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotLinkShareCreated(QVariantMap)));
|
||||
connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString)));
|
||||
job->createShare(path, OcsShareJob::ShareType::Link, password);
|
||||
}
|
||||
|
||||
|
@ -193,9 +176,7 @@ void ShareManager::slotLinkShareCreated(const QVariantMap &reply)
|
|||
if (code == 403) {
|
||||
emit linkShareRequiresPassword();
|
||||
return;
|
||||
} else if (code != 100) {
|
||||
//emit error
|
||||
}
|
||||
}
|
||||
|
||||
//Parse share
|
||||
auto data = reply.value("ocs").toMap().value("data").toMap();
|
||||
|
@ -207,18 +188,13 @@ void ShareManager::slotLinkShareCreated(const QVariantMap &reply)
|
|||
void ShareManager::fetchShares(const QString &path)
|
||||
{
|
||||
OcsShareJob *job = new OcsShareJob(_account, this);
|
||||
connect(job, SIGNAL(jobFinished(QVariantMap)), this, SLOT(slotSharesFetched(QVariantMap)));
|
||||
connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotSharesFetched(QVariantMap)));
|
||||
connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString)));
|
||||
job->getShares(path);
|
||||
}
|
||||
|
||||
void ShareManager::slotSharesFetched(const QVariantMap &reply)
|
||||
{
|
||||
QString message;
|
||||
int code = OcsShareJob::getJsonReturnCode(reply, message);
|
||||
if (code != 100 && code != 404) {
|
||||
//emit error!
|
||||
}
|
||||
|
||||
auto tmpShares = reply.value("ocs").toMap().value("data").toList();
|
||||
const QString versionString = _account->serverVersion();
|
||||
qDebug() << Q_FUNC_INFO << versionString << "Fetched" << tmpShares.count() << "shares";
|
||||
|
@ -280,4 +256,9 @@ QSharedPointer<LinkShare> ShareManager::parseLinkShare(const QVariantMap &data)
|
|||
expireDate));
|
||||
}
|
||||
|
||||
void ShareManager::slotOcsError(int statusCode, const QString &message)
|
||||
{
|
||||
emit serverError(statusCode, message);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -82,8 +82,11 @@ protected:
|
|||
int _shareType;
|
||||
int _permissions;
|
||||
|
||||
protected slots:
|
||||
void slotOcsError(int statusCode, const QString &message);
|
||||
|
||||
private slots:
|
||||
void slotDeleted(const QVariantMap &reply);
|
||||
void slotDeleted();
|
||||
|
||||
};
|
||||
|
||||
|
@ -156,9 +159,9 @@ signals:
|
|||
void passwordSet();
|
||||
|
||||
private slots:
|
||||
void slotPasswordSet(const QVariantMap &reply, const QVariant &value);
|
||||
void slotPublicUploadSet(const QVariantMap &reply, const QVariant &value);
|
||||
void slotExpireDateSet(const QVariantMap &reply, const QVariant &value);
|
||||
void slotPasswordSet(const QVariantMap&, const QVariant &value);
|
||||
void slotPublicUploadSet(const QVariantMap&, const QVariant &value);
|
||||
void slotExpireDateSet(const QVariantMap&, const QVariant &value);
|
||||
|
||||
private:
|
||||
bool _passwordSet;
|
||||
|
@ -208,6 +211,7 @@ signals:
|
|||
private slots:
|
||||
void slotSharesFetched(const QVariantMap &reply);
|
||||
void slotLinkShareCreated(const QVariantMap &reply);
|
||||
void slotOcsError(int statusCode, const QString &message);
|
||||
|
||||
private:
|
||||
QSharedPointer<LinkShare> parseLinkShare(const QVariantMap &data);
|
||||
|
|
|
@ -175,9 +175,10 @@ ShareDialog::ShareDialog(AccountPtr account, const QString &sharePath, const QSt
|
|||
*/
|
||||
_manager = new ShareManager(_account, this);
|
||||
|
||||
connect(_manager, SIGNAL(sharesFetched(QList<QSharedPointer<Share>>)), this, SLOT(slotSharesFetched(QList<QSharedPointer<Share>>)));
|
||||
connect(_manager, SIGNAL(linkShareCreated(const QSharedPointer<LinkShare>)), this, SLOT(slotCreateShareFetched(const QSharedPointer<LinkShare>)));
|
||||
connect(_manager, SIGNAL(linkShareRequiresPassword()), this, SLOT(slotCreateShareRequiresPassword()));
|
||||
connect(_manager, SIGNAL(sharesFetched(QList<QSharedPointer<Share>>)), SLOT(slotSharesFetched(QList<QSharedPointer<Share>>)));
|
||||
connect(_manager, SIGNAL(linkShareCreated(QSharedPointer<LinkShare>)), SLOT(slotCreateShareFetched(const QSharedPointer<LinkShare>)));
|
||||
connect(_manager, SIGNAL(linkShareRequiresPassword()), SLOT(slotCreateShareRequiresPassword()));
|
||||
connect(_manager, SIGNAL(serverError(int, QString)), SLOT(displayError(int, QString)));
|
||||
}
|
||||
|
||||
void ShareDialog::done( int r ) {
|
||||
|
@ -320,10 +321,11 @@ void ShareDialog::slotSharesFetched(const QList<QSharedPointer<Share>> &shares)
|
|||
_ui->pushButton_copy->setEnabled(true);
|
||||
|
||||
// Connect all shares signals to gui slots
|
||||
connect(_share.data(), SIGNAL(expireDateSet()), this, SLOT(slotExpireSet()));
|
||||
connect(_share.data(), SIGNAL(publicUploadSet()), this, SLOT(slotPublicUploadSet()));
|
||||
connect(_share.data(), SIGNAL(passwordSet()), this, SLOT(slotPasswordSet()));
|
||||
connect(_share.data(), SIGNAL(shareDeleted()), this, SLOT(slotDeleteShareFetched()));
|
||||
connect(_share.data(), SIGNAL(expireDateSet()), SLOT(slotExpireSet()));
|
||||
connect(_share.data(), SIGNAL(publicUploadSet()), SLOT(slotPublicUploadSet()));
|
||||
connect(_share.data(), SIGNAL(passwordSet()), SLOT(slotPasswordSet()));
|
||||
connect(_share.data(), SIGNAL(shareDeleted()), SLOT(slotDeleteShareFetched()));
|
||||
connect(_share.data(), SIGNAL(serverError(int, QString)), SLOT(displayError(int, QString)));
|
||||
|
||||
break;
|
||||
}
|
||||
|
@ -545,6 +547,13 @@ void ShareDialog::setShareCheckBoxTitle(bool haveShares)
|
|||
|
||||
}
|
||||
|
||||
void ShareDialog::displayError(int code, const QString &message)
|
||||
{
|
||||
const QString arg = QString("%1, %2").arg(code).arg(message);
|
||||
const QString errMsg = tr("OCS API error code: %1").arg(arg);
|
||||
displayError(errMsg);
|
||||
}
|
||||
|
||||
void ShareDialog::displayError(const QString& errMsg)
|
||||
{
|
||||
_ui->errorLabel->setText( errMsg );
|
||||
|
|
|
@ -66,6 +66,8 @@ private slots:
|
|||
void slotCheckBoxEditingClicked();
|
||||
void slotPublicUploadSet();
|
||||
|
||||
void displayError(int code, const QString &message);
|
||||
|
||||
void done( int r );
|
||||
private:
|
||||
void setShareCheckBoxTitle(bool haveShares);
|
||||
|
|
Loading…
Reference in a new issue