Skip to content

Commit

Permalink
Fix issues.
Browse files Browse the repository at this point in the history
Signed-off-by: alex-z <[email protected]>
  • Loading branch information
allexzander committed Jun 19, 2023
1 parent be21c37 commit 628fc24
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 12 deletions.
22 changes: 20 additions & 2 deletions src/libsync/basepropagateremotedeleteencrypted.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,16 @@ void BasePropagateRemoteDeleteEncrypted::fetchMetadataForPath(const QString &pat
&FetchAndUploadE2eeFolderMetadataJob::fetchFinished,
this,
&BasePropagateRemoteDeleteEncrypted::slotFetchMetadataJobFinished);
connect(_fetchAndUploadE2eeFolderMetadataJob.data(),
&FetchAndUploadE2eeFolderMetadataJob::uploadFinished,
this,
&BasePropagateRemoteDeleteEncrypted::slotUpdateMetadataJobFinished);
_fetchAndUploadE2eeFolderMetadataJob->fetchMetadata();
}

void BasePropagateRemoteDeleteEncrypted::uploadMetadata(bool keepLock)
{
_fetchAndUploadE2eeFolderMetadataJob->uploadMetadata(keepLock);
}

void BasePropagateRemoteDeleteEncrypted::slotFolderUnLockFinished(const QByteArray &folderId, int statusCode)
Expand Down Expand Up @@ -144,11 +153,10 @@ void BasePropagateRemoteDeleteEncrypted::deleteRemoteItem(const QString &filenam
{
qCInfo(ABSTRACT_PROPAGATE_REMOVE_ENCRYPTED) << "Deleting nested encrypted item" << filename;

auto deleteJob = new DeleteJob(_propagator->account(), _propagator->fullRemotePath(filename), this);
const auto deleteJob = new DeleteJob(_propagator->account(), _propagator->fullRemotePath(filename), this);
deleteJob->setFolderToken(_fetchAndUploadE2eeFolderMetadataJob->folderToken());

connect(deleteJob, &DeleteJob::finishedSignal, this, &BasePropagateRemoteDeleteEncrypted::slotDeleteRemoteItemFinished);

deleteJob->start();
}

Expand Down Expand Up @@ -176,4 +184,14 @@ void BasePropagateRemoteDeleteEncrypted::taskFailed()
}
}

QSharedPointer<FolderMetadata> BasePropagateRemoteDeleteEncrypted::folderMetadata() const
{
return _fetchAndUploadE2eeFolderMetadataJob->folderMetadata();
}

const QByteArray BasePropagateRemoteDeleteEncrypted::folderToken() const
{
return _fetchAndUploadE2eeFolderMetadataJob->folderToken();
}

} // namespace OCC
16 changes: 12 additions & 4 deletions src/libsync/basepropagateremotedeleteencrypted.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,22 +47,30 @@ class BasePropagateRemoteDeleteEncrypted : public QObject
void storeFirstErrorString(const QString &errString);

void fetchMetadataForPath(const QString &path);
virtual void slotFolderUnLockFinished(const QByteArray &folderId, int statusCode);
virtual void slotFetchMetadataJobFinished(int statusCode, const QString &message) = 0;
virtual void slotUpdateMetadataJobFinished(int statusCode, const QString &message) = 0;
void slotDeleteRemoteItemFinished();
void uploadMetadata(bool keepLock = false);

[[nodiscard]] QSharedPointer<FolderMetadata> folderMetadata() const;
[[nodiscard]] const QByteArray folderToken() const;

void deleteRemoteItem(const QString &filename);
void unlockFolder(bool success);
void taskFailed();

protected slots:
virtual void slotFolderUnLockFinished(const QByteArray &folderId, int statusCode);
virtual void slotFetchMetadataJobFinished(int statusCode, const QString &message) = 0;
virtual void slotUpdateMetadataJobFinished(int statusCode, const QString &message) = 0;
void slotDeleteRemoteItemFinished();

protected:
OwncloudPropagator *_propagator = nullptr;
SyncFileItemPtr _item;
bool _isTaskFailed = false;
QNetworkReply::NetworkError _networkError = QNetworkReply::NoError;
QString _errorString;
QString _fullFolderRemotePath;

private:
QScopedPointer<FetchAndUploadE2eeFolderMetadataJob> _fetchAndUploadE2eeFolderMetadataJob;
};

Expand Down
7 changes: 6 additions & 1 deletion src/libsync/fetchanduploade2eefoldermetadatajob.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,11 @@ void FetchAndUploadE2eeFolderMetadataJob::slotUploadMetadata()

_uploadSignalEmitted = false;

if (!_folderMetadata->isValid()) {
slotUploadMetadataError(_folderId, -1);
return;
}

const auto encryptedMetadata = _folderMetadata->encryptedMetadata();
if (_isNewMetadataCreated) {
const auto job = new StoreMetaDataApiJob(_account, _folderId, _folderToken, encryptedMetadata);
Expand Down Expand Up @@ -280,7 +285,7 @@ void FetchAndUploadE2eeFolderMetadataJob::slotEmitUploadSuccess()
{
if (!_uploadSignalEmitted) {
_uploadSignalEmitted = true;
emit uploadFinished(0);
emit uploadFinished(200);
}
}

Expand Down
4 changes: 2 additions & 2 deletions src/libsync/propagateremotedeleteencrypted.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ void PropagateRemoteDeleteEncrypted::slotFetchMetadataJobFinished(int statusCode
return;
}

const auto metadata = _fetchAndUploadE2eeFolderMetadataJob->folderMetadata();
const auto metadata = folderMetadata();

if (!metadata->isValid()) {
taskFailed();
Expand Down Expand Up @@ -88,7 +88,7 @@ void PropagateRemoteDeleteEncrypted::slotFetchMetadataJobFinished(int statusCode
}

qCDebug(PROPAGATE_REMOVE_ENCRYPTED) << "Metadata updated, sending to the server.";
_fetchAndUploadE2eeFolderMetadataJob->uploadMetadata(true);
uploadMetadata(true);
}

void PropagateRemoteDeleteEncrypted::slotUpdateMetadataJobFinished(int statusCode, const QString &message)
Expand Down
6 changes: 3 additions & 3 deletions src/libsync/propagateremotedeleteencryptedrootfolder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ void PropagateRemoteDeleteEncryptedRootFolder::slotFetchMetadataJobFinished(int
return;
}

const auto metadata = _fetchAndUploadE2eeFolderMetadataJob->folderMetadata();
const auto metadata = folderMetadata();

if (!metadata->isValid()) {
taskFailed();
Expand All @@ -98,7 +98,7 @@ void PropagateRemoteDeleteEncryptedRootFolder::slotFetchMetadataJobFinished(int
metadata->removeAllEncryptedFiles();

qCDebug(PROPAGATE_REMOVE_ENCRYPTED_ROOTFOLDER) << "Metadata updated, sending to the server.";
_fetchAndUploadE2eeFolderMetadataJob->uploadMetadata(true);
uploadMetadata(true);
}

void PropagateRemoteDeleteEncryptedRootFolder::slotUpdateMetadataJobFinished(int statusCode, const QString &message)
Expand Down Expand Up @@ -182,7 +182,7 @@ void PropagateRemoteDeleteEncryptedRootFolder::deleteNestedRemoteItem(const QStr
qCInfo(PROPAGATE_REMOVE_ENCRYPTED_ROOTFOLDER) << "Deleting nested encrypted remote item" << filename;

auto deleteJob = new DeleteJob(_propagator->account(), _propagator->fullRemotePath(filename), this);
deleteJob->setFolderToken(_fetchAndUploadE2eeFolderMetadataJob->folderToken());
deleteJob->setFolderToken(folderToken());
deleteJob->setProperty(encryptedFileNamePropertyKey, filename);

connect(deleteJob, &DeleteJob::finishedSignal, this, &PropagateRemoteDeleteEncryptedRootFolder::slotDeleteNestedRemoteItemFinished);
Expand Down

0 comments on commit 628fc24

Please sign in to comment.