|
10 | 10 | namespace OCA\Files_Trashbin\Listener; |
11 | 11 |
|
12 | 12 | use OCA\Files_Trashbin\Storage; |
| 13 | +use OCA\Files_Trashbin\Trash\ITrashManager; |
13 | 14 | use OCA\Files_Trashbin\Trashbin; |
14 | 15 | use OCP\EventDispatcher\Event; |
| 16 | +use OCP\EventDispatcher\IEventDispatcher; |
15 | 17 | use OCP\EventDispatcher\IEventListener; |
16 | 18 | use OCP\Files\Events\BeforeFileSystemSetupEvent; |
17 | 19 | use OCP\Files\Events\Node\NodeWrittenEvent; |
18 | 20 | use OCP\Files\Folder; |
19 | 21 | use OCP\Files\IRootFolder; |
20 | 22 | use OCP\Files\NotFoundException; |
21 | 23 | use OCP\Files\NotPermittedException; |
| 24 | +use OCP\Files\Storage\IStorage; |
| 25 | +use OCP\IRequest; |
22 | 26 | use OCP\IUserManager; |
23 | 27 | use OCP\User\Events\BeforeUserDeletedEvent; |
| 28 | +use Psr\Log\LoggerInterface; |
24 | 29 |
|
25 | 30 | /** @template-implements IEventListener<NodeWrittenEvent|BeforeUserDeletedEvent|BeforeFileSystemSetupEvent> */ |
26 | 31 | class EventListener implements IEventListener { |
27 | 32 | public function __construct( |
28 | | - private IUserManager $userManager, |
29 | | - private IRootFolder $rootFolder, |
30 | | - private ?string $userId = null, |
| 33 | + private readonly IUserManager $userManager, |
| 34 | + private readonly IRootFolder $rootFolder, |
| 35 | + private readonly IRequest $request, |
| 36 | + private readonly IEventDispatcher $eventDispatcher, |
| 37 | + private readonly LoggerInterface $logger, |
| 38 | + private readonly ITrashManager $trashManager, |
| 39 | + private readonly ?string $userId = null, |
31 | 40 | ) { |
32 | 41 | } |
33 | 42 |
|
@@ -57,7 +66,20 @@ public function handle(Event $event): void { |
57 | 66 | } |
58 | 67 |
|
59 | 68 | if ($event instanceof BeforeFileSystemSetupEvent) { |
60 | | - Storage::setupStorage(); |
| 69 | + $event->addStorageWrapper( |
| 70 | + Storage::class, |
| 71 | + function (string $mountPoint, IStorage $storage): Storage { |
| 72 | + return new Storage( |
| 73 | + ['storage' => $storage, 'mountPoint' => $mountPoint], |
| 74 | + $this->trashManager, |
| 75 | + $this->userManager, |
| 76 | + $this->logger, |
| 77 | + $this->eventDispatcher, |
| 78 | + $this->rootFolder, |
| 79 | + $this->request, |
| 80 | + ); |
| 81 | + }, |
| 82 | + 1); |
61 | 83 | } |
62 | 84 | } |
63 | 85 | } |
0 commit comments