From 1e8048abee1745bab648dba5bf96f956c718e4e3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Julius=20H=C3=A4rtl?= <jus@bitgrid.net>
Date: Mon, 24 Feb 2020 15:01:39 +0100
Subject: [PATCH] Make sure that the transfer entry is present in the database
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Julius Härtl <jus@bitgrid.net>
---
 .../Controller/TransferOwnershipController.php | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/apps/files/lib/Controller/TransferOwnershipController.php b/apps/files/lib/Controller/TransferOwnershipController.php
index 824c8c00518..639e73187ca 100644
--- a/apps/files/lib/Controller/TransferOwnershipController.php
+++ b/apps/files/lib/Controller/TransferOwnershipController.php
@@ -27,6 +27,7 @@ declare(strict_types=1);
 namespace OCA\Files\Controller;
 
 use OCA\Files\BackgroundJob\TransferOwnership;
+use OCA\Files\Db\TransferOwnership as TransferOwnershipEntity;
 use OCA\Files\Db\TransferOwnershipMapper;
 use OCP\AppFramework\Db\DoesNotExistException;
 use OCP\AppFramework\Http;
@@ -95,7 +96,7 @@ class TransferOwnershipController extends OCSController {
 			return new DataResponse([], Http::STATUS_BAD_REQUEST);
 		}
 
-		$transferOwnership = new \OCA\Files\Db\TransferOwnership();
+		$transferOwnership = new TransferOwnershipEntity();
 		$transferOwnership->setSourceUser($this->userId);
 		$transferOwnership->setTargetUser($recipient);
 		$transferOwnership->setFileId($node->getId());
@@ -132,15 +133,22 @@ class TransferOwnershipController extends OCSController {
 			return new DataResponse([], Http::STATUS_FORBIDDEN);
 		}
 
-		$this->jobList->add(TransferOwnership::class, [
-			'id' => $transferOwnership->getId(),
-		]);
-
 		$notification = $this->notificationManager->createNotification();
 		$notification->setApp('files')
 			->setObject('transfer', (string)$id);
 		$this->notificationManager->markProcessed($notification);
 
+		$newTransferOwnership = new TransferOwnershipEntity();
+		$newTransferOwnership->setNodeName($transferOwnership->getNodeName());
+		$newTransferOwnership->setFileId($transferOwnership->getFileId());
+		$newTransferOwnership->setSourceUser($transferOwnership->getSourceUser());
+		$newTransferOwnership->setTargetUser($transferOwnership->getTargetUser());
+		$this->mapper->insert($newTransferOwnership);
+
+		$this->jobList->add(TransferOwnership::class, [
+			'id' => $newTransferOwnership->getId(),
+		]);
+
 		return new DataResponse([], Http::STATUS_OK);
 	}
 
-- 
GitLab