fix(files_trashbin): Fix size propagation when moving file to trash

Signed-off-by: provokateurin <kate@provokateurin.de>
This commit is contained in:
provokateurin 2025-09-08 14:41:22 +02:00
parent ceb65eb1ff
commit b0a27e4dc4
No known key found for this signature in database
2 changed files with 26 additions and 1 deletions

View file

@ -293,8 +293,9 @@ class Trashbin implements IEventListener {
try {
$moveSuccessful = true;
$inCache = $sourceStorage->getCache()->inCache($sourceInternalPath);
$trashStorage->moveFromStorage($sourceStorage, $sourceInternalPath, $trashInternalPath);
if ($sourceStorage->getCache()->inCache($sourceInternalPath)) {
if ($inCache) {
$trashStorage->getUpdater()->renameFromStorage($sourceStorage, $sourceInternalPath, $trashInternalPath);
}
} catch (CopyRecursiveException $e) {

View file

@ -19,7 +19,9 @@ use OCA\Files_Trashbin\Trashbin;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\Constants;
use OCP\Files\FileInfo;
use OCP\Files\IRootFolder;
use OCP\IConfig;
use OCP\Server;
use OCP\Share\IShare;
/**
@ -664,6 +666,28 @@ class TrashbinTest extends \Test\TestCase {
}
}
public function testTrashSizePropagation(): void {
$view = new View('/' . self::TEST_TRASHBIN_USER1 . '/files_trashbin/files');
$userFolder = Server::get(IRootFolder::class)->getUserFolder(self::TEST_TRASHBIN_USER1);
$file1 = $userFolder->newFile('foo.txt');
$file1->putContent('1');
$this->assertTrue($userFolder->nodeExists('foo.txt'));
$file1->delete();
$this->assertFalse($userFolder->nodeExists('foo.txt'));
$this->assertEquals(1, $view->getFileInfo('')->getSize());
$folder = $userFolder->newFolder('bar');
$file2 = $folder->newFile('baz.txt');
$file2->putContent('22');
$this->assertTrue($userFolder->nodeExists('bar'));
$folder->delete();
$this->assertFalse($userFolder->nodeExists('bar'));
$this->assertEquals(3, $view->getFileInfo('')->getSize());
}
/**
* @param string $user
* @param bool $create