diff --git a/lib/private/Collaboration/Reference/File/FileReferenceEventListener.php b/lib/private/Collaboration/Reference/File/FileReferenceEventListener.php index 9c18531c8e71d..0b2385a0555db 100644 --- a/lib/private/Collaboration/Reference/File/FileReferenceEventListener.php +++ b/lib/private/Collaboration/Reference/File/FileReferenceEventListener.php @@ -8,21 +8,22 @@ namespace OC\Collaboration\Reference\File; -use OC\Files\Node\NonExistingFile; -use OC\Files\Node\NonExistingFolder; use OCP\Collaboration\Reference\IReferenceManager; use OCP\EventDispatcher\Event; use OCP\EventDispatcher\IEventDispatcher; use OCP\EventDispatcher\IEventListener; use OCP\Files\Events\Node\NodeDeletedEvent; use OCP\Files\Events\Node\NodeRenamedEvent; +use OCP\Files\NotFoundException; use OCP\Share\Events\ShareCreatedEvent; use OCP\Share\Events\ShareDeletedEvent; +use Psr\Log\LoggerInterface; /** @template-implements IEventListener */ class FileReferenceEventListener implements IEventListener { public function __construct( private IReferenceManager $manager, + private LoggerInterface $logger, ) { } @@ -38,11 +39,12 @@ public static function register(IEventDispatcher $eventDispatcher): void { */ public function handle(Event $event): void { if ($event instanceof NodeDeletedEvent) { - if ($event->getNode() instanceof NonExistingFolder || $event->getNode() instanceof NonExistingFile) { - return; + try { + $this->manager->invalidateCache((string)$event->getNode()->getId()); + } catch (NotFoundException $e) { + // Non existing node might not have an id + $this->logger->debug('Could not invalidate reference cache for deleted node', ['exception' => $e]); } - - $this->manager->invalidateCache((string)$event->getNode()->getId()); } if ($event instanceof NodeRenamedEvent) { $this->manager->invalidateCache((string)$event->getTarget()->getId()); diff --git a/lib/private/Files/View.php b/lib/private/Files/View.php index ecf2f438edb1f..c1068d2349b3b 100644 --- a/lib/private/Files/View.php +++ b/lib/private/Files/View.php @@ -11,6 +11,7 @@ use OC\Files\Mount\MoveableMount; use OC\Files\Storage\Storage; use OC\Files\Storage\Wrapper\Quota; +use OC\Files\Utils\PathHelper; use OC\Share\Share; use OC\User\LazyUser; use OC\User\Manager as UserManager; @@ -92,13 +93,7 @@ public function getAbsolutePath($path = '/'): ?string { return null; } $this->assertPathLength($path); - if ($path === '') { - $path = '/'; - } - if ($path[0] !== '/') { - $path = '/' . $path; - } - return $this->fakeRoot . $path; + return PathHelper::normalizePath($this->fakeRoot . '/' . $path); } /** diff --git a/tests/lib/Files/ViewTest.php b/tests/lib/Files/ViewTest.php index 5742410740138..b9f6b1a737319 100644 --- a/tests/lib/Files/ViewTest.php +++ b/tests/lib/Files/ViewTest.php @@ -917,11 +917,11 @@ public function testPartFileInfo(): void { public static function absolutePathProvider(): array { return [ - ['/files/', ''], + ['/files', ''], ['/files/0', '0'], ['/files/false', 'false'], ['/files/true', 'true'], - ['/files/', '/'], + ['/files', '/'], ['/files/test', 'test'], ['/files/test', '/test'], ];