mirror of
https://github.com/nextcloud/desktop.git
synced 2024-10-24 13:25:52 +03:00
Sharing: Fix crash with share deletion #4111
The problem was that Share could be deleted *before* the OcsShareJob itself finished. Since Share was the parent of the network job, its object would be deleted too early. In general, it's unnecessary to assign parents to the OcsJobs because they delete themselves when finished.
This commit is contained in:
parent
196ee05fcc
commit
05d1cc9a94
8 changed files with 18 additions and 19 deletions
|
@ -20,8 +20,8 @@
|
|||
|
||||
namespace OCC {
|
||||
|
||||
OcsJob::OcsJob(AccountPtr account, QObject* parent)
|
||||
: AbstractNetworkJob(account, "", parent)
|
||||
OcsJob::OcsJob(AccountPtr account)
|
||||
: AbstractNetworkJob(account, "")
|
||||
{
|
||||
_passStatusCodes.append(100);
|
||||
setIgnoreCredentialFailure(true);
|
||||
|
@ -109,7 +109,6 @@ bool OcsJob::finished()
|
|||
} else {
|
||||
emit jobFinished(json);
|
||||
}
|
||||
deleteLater();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ class OcsJob : public AbstractNetworkJob {
|
|||
|
||||
protected:
|
||||
|
||||
explicit OcsJob(AccountPtr account, QObject* parent = 0);
|
||||
explicit OcsJob(AccountPtr account);
|
||||
|
||||
/**
|
||||
* Set the verb for the job
|
||||
|
|
|
@ -15,8 +15,8 @@
|
|||
|
||||
namespace OCC {
|
||||
|
||||
OcsShareeJob::OcsShareeJob(AccountPtr account, QObject *parent)
|
||||
: OcsJob(account, parent)
|
||||
OcsShareeJob::OcsShareeJob(AccountPtr account)
|
||||
: OcsJob(account)
|
||||
{
|
||||
setPath("ocs/v1.php/apps/files_sharing/api/v1/sharees");
|
||||
connect(this, SIGNAL(jobFinished(QVariantMap)), SLOT(jobDone(QVariantMap)));
|
||||
|
|
|
@ -29,7 +29,7 @@ class OcsShareeJob : public OcsJob {
|
|||
Q_OBJECT
|
||||
public:
|
||||
|
||||
explicit OcsShareeJob(AccountPtr account, QObject *parent = 0);
|
||||
explicit OcsShareeJob(AccountPtr account);
|
||||
|
||||
/**
|
||||
* Get a list of sharees
|
||||
|
|
|
@ -20,8 +20,8 @@
|
|||
|
||||
namespace OCC {
|
||||
|
||||
OcsShareJob::OcsShareJob(AccountPtr account, QObject* parent)
|
||||
: OcsJob(account, parent)
|
||||
OcsShareJob::OcsShareJob(AccountPtr account)
|
||||
: OcsJob(account)
|
||||
{
|
||||
setPath("ocs/v1.php/apps/files_sharing/api/v1/shares");
|
||||
connect(this, SIGNAL(jobFinished(QVariantMap)), this, SLOT(jobDone(QVariantMap)));
|
||||
|
|
|
@ -36,7 +36,7 @@ public:
|
|||
/**
|
||||
* Constructor for new shares or listing of shares
|
||||
*/
|
||||
explicit OcsShareJob(AccountPtr account, QObject *parent = 0);
|
||||
explicit OcsShareJob(AccountPtr account);
|
||||
|
||||
/**
|
||||
* Get all the shares
|
||||
|
|
|
@ -52,7 +52,7 @@ QSharedPointer<Sharee> Share::getShareWith() const
|
|||
|
||||
void Share::setPermissions(Permissions permissions)
|
||||
{
|
||||
OcsShareJob *job = new OcsShareJob(_account, this);
|
||||
OcsShareJob *job = new OcsShareJob(_account);
|
||||
connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotPermissionsSet(QVariantMap, QVariant)));
|
||||
connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString)));
|
||||
job->setPermissions(getId(), permissions);
|
||||
|
@ -71,7 +71,7 @@ Share::Permissions Share::getPermissions() const
|
|||
|
||||
void Share::deleteShare()
|
||||
{
|
||||
OcsShareJob *job = new OcsShareJob(_account, this);
|
||||
OcsShareJob *job = new OcsShareJob(_account);
|
||||
connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotDeleted()));
|
||||
connect(job, SIGNAL(ocsError(int, const QString &)), SLOT(slotOcsError(int, const QString &)));
|
||||
job->deleteShare(getId());
|
||||
|
@ -125,7 +125,7 @@ bool LinkShare::getPublicUpload()
|
|||
|
||||
void LinkShare::setPublicUpload(bool publicUpload)
|
||||
{
|
||||
OcsShareJob *job = new OcsShareJob(_account, this);
|
||||
OcsShareJob *job = new OcsShareJob(_account);
|
||||
connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotPublicUploadSet(QVariantMap, QVariant)));
|
||||
connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString)));
|
||||
job->setPublicUpload(getId(), publicUpload);
|
||||
|
@ -144,7 +144,7 @@ void LinkShare::slotPublicUploadSet(const QVariantMap&, const QVariant &value)
|
|||
|
||||
void LinkShare::setPassword(const QString &password)
|
||||
{
|
||||
OcsShareJob *job = new OcsShareJob(_account, this);
|
||||
OcsShareJob *job = new OcsShareJob(_account);
|
||||
connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotPasswordSet(QVariantMap, QVariant)));
|
||||
connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString)));
|
||||
job->setPassword(getId(), password);
|
||||
|
@ -158,7 +158,7 @@ void LinkShare::slotPasswordSet(const QVariantMap&, const QVariant &value)
|
|||
|
||||
void LinkShare::setExpireDate(const QDate &date)
|
||||
{
|
||||
OcsShareJob *job = new OcsShareJob(_account, this);
|
||||
OcsShareJob *job = new OcsShareJob(_account);
|
||||
connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotExpireDateSet(QVariantMap, QVariant)));
|
||||
connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString)));
|
||||
job->setExpireDate(getId(), date);
|
||||
|
@ -180,7 +180,7 @@ ShareManager::ShareManager(AccountPtr account, QObject *parent)
|
|||
void ShareManager::createLinkShare(const QString &path,
|
||||
const QString &password)
|
||||
{
|
||||
OcsShareJob *job = new OcsShareJob(_account, this);
|
||||
OcsShareJob *job = new OcsShareJob(_account);
|
||||
connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotLinkShareCreated(QVariantMap)));
|
||||
connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString)));
|
||||
job->createLinkShare(path, password);
|
||||
|
@ -212,7 +212,7 @@ void ShareManager::createShare(const QString& path,
|
|||
const QString shareWith,
|
||||
const Share::Permissions permissions)
|
||||
{
|
||||
OcsShareJob *job = new OcsShareJob(_account, this);
|
||||
OcsShareJob *job = new OcsShareJob(_account);
|
||||
connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotShareCreated(QVariantMap)));
|
||||
connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString)));
|
||||
job->createShare(path, shareType, shareWith, permissions);
|
||||
|
@ -229,7 +229,7 @@ void ShareManager::slotShareCreated(const QVariantMap &reply)
|
|||
|
||||
void ShareManager::fetchShares(const QString &path)
|
||||
{
|
||||
OcsShareJob *job = new OcsShareJob(_account, this);
|
||||
OcsShareJob *job = new OcsShareJob(_account);
|
||||
connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotSharesFetched(QVariantMap)));
|
||||
connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString)));
|
||||
job->getShares(path);
|
||||
|
|
|
@ -69,7 +69,7 @@ ShareeModel::ShareeModel(AccountPtr account,
|
|||
|
||||
void ShareeModel::fetch()
|
||||
{
|
||||
OcsShareeJob *job = new OcsShareeJob(_account, this);
|
||||
OcsShareeJob *job = new OcsShareeJob(_account);
|
||||
connect(job, SIGNAL(shareeJobFinished(QVariantMap)), SLOT(shareesFetched(QVariantMap)));
|
||||
job->getSharees(_search, _type, 1, 50);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue