}
+QByteArray PropagateRemoteDeleteEncrypted::folderToken()
+{
+ return _folderToken;
+}
+
void PropagateRemoteDeleteEncrypted::start()
{
Q_ASSERT(!_item->_encryptedFileName.isEmpty());
{
if (statusCode == 404) {
qCDebug(PROPAGATE_REMOVE_ENCRYPTED) << "Metadata not found, ignoring.";
- unlockFolder();
+ emit finished(true);
return;
}
if (!found) {
// The removed file was not in the JSON so nothing else to do
- unlockFolder();
+ emit finished(true);
+ return;
}
qCDebug(PROPAGATE_REMOVE_ENCRYPTED) << "Metadata updated, sending to the server.";
metadata.encryptedMetadata(),
_folderToken);
- connect(job, &UpdateMetadataApiJob::success, this, &PropagateRemoteDeleteEncrypted::unlockFolder);
+ connect(job, &UpdateMetadataApiJob::success, this, [this] { emit finished(true); });
connect(job, &UpdateMetadataApiJob::error, this, &PropagateRemoteDeleteEncrypted::taskFailed);
job->start();
}
void PropagateRemoteDeleteEncrypted::unlockFolder()
{
+ if (!_folderLocked) {
+ emit folderUnlocked();
+ return;
+ }
+
qCDebug(PROPAGATE_REMOVE_ENCRYPTED) << "Unlocking folder" << _folderId;
auto unlockJob = new UnlockEncryptFolderApiJob(_propagator->account(),
_folderId, _folderToken, this);
connect(unlockJob, &UnlockEncryptFolderApiJob::success, [this] {
qCDebug(PROPAGATE_REMOVE_ENCRYPTED) << "Folder successfully unlocked" << _folderId;
_folderLocked = false;
- emit finished(true);
+ emit folderUnlocked();
});
connect(unlockJob, &UnlockEncryptFolderApiJob::error, this, &PropagateRemoteDeleteEncrypted::taskFailed);
unlockJob->start();
{
qCDebug(PROPAGATE_REMOVE_ENCRYPTED) << "Task failed of job" << sender();
if (_folderLocked) {
+ connect(this, &PropagateRemoteDeleteEncrypted::folderUnlocked, this, [this] { emit finished(false); });
unlockFolder();
} else {
emit finished(false);
public:
PropagateRemoteDeleteEncrypted(OwncloudPropagator *_propagator, SyncFileItemPtr item, QObject *parent);
+ QByteArray folderToken();
+ void unlockFolder();
+
void start();
signals:
void finished(bool success);
+ void folderUnlocked();
private:
void slotFolderEncryptedIdReceived(const QStringList &list);
void slotTryLock(const QByteArray &folderId);
void slotFolderLockedSuccessfully(const QByteArray &fileId, const QByteArray &token);
void slotFolderEncryptedMetadataReceived(const QJsonDocument &json, int statusCode);
- void unlockFolder();
void taskFailed();
OwncloudPropagator *_propagator;