mirror of
https://github.com/nextcloud/desktop.git
synced 2024-10-27 06:45:49 +03:00
Set the encrypted flag in the database when EncryptFolderJob succeeds
Signed-off-by: Kevin Ottens <kevin.ottens@nextcloud.com>
This commit is contained in:
parent
b667bdda14
commit
37a51872e1
4 changed files with 16 additions and 4 deletions
|
@ -307,7 +307,7 @@ void AccountSettings::slotMarkSubfolderEncrypted(const FolderStatusModel::SubFol
|
||||||
// But EncryptFolderJob expects directory path Foo/Bar convention
|
// But EncryptFolderJob expects directory path Foo/Bar convention
|
||||||
const auto path = folderInfo->_path.chopped(1);
|
const auto path = folderInfo->_path.chopped(1);
|
||||||
|
|
||||||
auto job = new OCC::EncryptFolderJob(accountsState()->account(), path, folderInfo->_fileId, this);
|
auto job = new OCC::EncryptFolderJob(accountsState()->account(), folderInfo->_folder->journalDb(), path, folderInfo->_fileId, this);
|
||||||
connect(job, &OCC::EncryptFolderJob::finished, this, &AccountSettings::slotEncryptFolderFinished);
|
connect(job, &OCC::EncryptFolderJob::finished, this, &AccountSettings::slotEncryptFolderFinished);
|
||||||
job->start();
|
job->start();
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
|
|
||||||
#include "encryptfolderjob.h"
|
#include "encryptfolderjob.h"
|
||||||
|
|
||||||
|
#include "common/syncjournaldb.h"
|
||||||
#include "clientsideencryptionjobs.h"
|
#include "clientsideencryptionjobs.h"
|
||||||
|
|
||||||
#include <QLoggingCategory>
|
#include <QLoggingCategory>
|
||||||
|
@ -22,9 +23,10 @@ namespace OCC {
|
||||||
|
|
||||||
Q_LOGGING_CATEGORY(lcEncryptFolderJob, "nextcloud.sync.propagator.encryptfolder", QtInfoMsg)
|
Q_LOGGING_CATEGORY(lcEncryptFolderJob, "nextcloud.sync.propagator.encryptfolder", QtInfoMsg)
|
||||||
|
|
||||||
EncryptFolderJob::EncryptFolderJob(const AccountPtr &account, const QString &path, const QByteArray &fileId, QObject *parent)
|
EncryptFolderJob::EncryptFolderJob(const AccountPtr &account, SyncJournalDb *journal, const QString &path, const QByteArray &fileId, QObject *parent)
|
||||||
: QObject(parent)
|
: QObject(parent)
|
||||||
, _account(account)
|
, _account(account)
|
||||||
|
, _journal(journal)
|
||||||
, _path(path)
|
, _path(path)
|
||||||
, _fileId(fileId)
|
, _fileId(fileId)
|
||||||
{
|
{
|
||||||
|
@ -47,6 +49,13 @@ void EncryptFolderJob::slotEncryptionFlagSuccess(const QByteArray &fileId)
|
||||||
{
|
{
|
||||||
_account->e2e()->setFolderEncryptedStatus(_path + '/', true);
|
_account->e2e()->setFolderEncryptedStatus(_path + '/', true);
|
||||||
|
|
||||||
|
SyncJournalFileRecord rec;
|
||||||
|
_journal->getFileRecord(_path, &rec);
|
||||||
|
if (rec.isValid()) {
|
||||||
|
rec._isE2eEncrypted = true;
|
||||||
|
_journal->setFileRecord(rec);
|
||||||
|
}
|
||||||
|
|
||||||
auto lockJob = new LockEncryptFolderApiJob(_account, fileId, this);
|
auto lockJob = new LockEncryptFolderApiJob(_account, fileId, this);
|
||||||
connect(lockJob, &LockEncryptFolderApiJob::success,
|
connect(lockJob, &LockEncryptFolderApiJob::success,
|
||||||
this, &EncryptFolderJob::slotLockForEncryptionSuccess);
|
this, &EncryptFolderJob::slotLockForEncryptionSuccess);
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
#include "account.h"
|
#include "account.h"
|
||||||
|
|
||||||
namespace OCC {
|
namespace OCC {
|
||||||
|
class SyncJournalDb;
|
||||||
|
|
||||||
class OWNCLOUDSYNC_EXPORT EncryptFolderJob : public QObject
|
class OWNCLOUDSYNC_EXPORT EncryptFolderJob : public QObject
|
||||||
{
|
{
|
||||||
|
@ -29,7 +30,7 @@ public:
|
||||||
};
|
};
|
||||||
Q_ENUM(Status)
|
Q_ENUM(Status)
|
||||||
|
|
||||||
explicit EncryptFolderJob(const AccountPtr &account, const QString &path, const QByteArray &fileId, QObject *parent = nullptr);
|
explicit EncryptFolderJob(const AccountPtr &account, SyncJournalDb *journal, const QString &path, const QByteArray &fileId, QObject *parent = nullptr);
|
||||||
void start();
|
void start();
|
||||||
|
|
||||||
QString errorString() const;
|
QString errorString() const;
|
||||||
|
@ -49,6 +50,7 @@ private slots:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
AccountPtr _account;
|
AccountPtr _account;
|
||||||
|
SyncJournalDb *_journal;
|
||||||
QString _path;
|
QString _path;
|
||||||
QByteArray _fileId;
|
QByteArray _fileId;
|
||||||
QByteArray _folderToken;
|
QByteArray _folderToken;
|
||||||
|
|
|
@ -242,7 +242,7 @@ void PropagateRemoteMkdir::slotMkcolJobFinished()
|
||||||
// But encryption job expect it in Foo/Bar/ convention
|
// But encryption job expect it in Foo/Bar/ convention
|
||||||
const auto path = _job->path().mid(1);
|
const auto path = _job->path().mid(1);
|
||||||
|
|
||||||
auto job = new OCC::EncryptFolderJob(propagator()->account(), path, _item->_fileId, this);
|
auto job = new OCC::EncryptFolderJob(propagator()->account(), propagator()->_journal, path, _item->_fileId, this);
|
||||||
connect(job, &OCC::EncryptFolderJob::finished, this, &PropagateRemoteMkdir::slotEncryptFolderFinished);
|
connect(job, &OCC::EncryptFolderJob::finished, this, &PropagateRemoteMkdir::slotEncryptFolderFinished);
|
||||||
job->start();
|
job->start();
|
||||||
}
|
}
|
||||||
|
@ -252,6 +252,7 @@ void PropagateRemoteMkdir::slotEncryptFolderFinished()
|
||||||
{
|
{
|
||||||
qCDebug(lcPropagateRemoteMkdir) << "Success making the new folder encrypted";
|
qCDebug(lcPropagateRemoteMkdir) << "Success making the new folder encrypted";
|
||||||
propagator()->_activeJobList.removeOne(this);
|
propagator()->_activeJobList.removeOne(this);
|
||||||
|
_item->_isEncrypted = true;
|
||||||
success();
|
success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue