Преглед изворни кода

Merge pull request #38679 from nextcloud/feat/add-spec-to-preview-fetched-event

feat: add width, height, crop and mode to BeforePreviewFetchedEvent
Daniel пре 10 месеци
родитељ
комит
9751303182

+ 6 - 2
lib/private/Preview/Generator.php

@@ -91,7 +91,7 @@ class Generator {
 	 * @param int $height
 	 * @param bool $crop
 	 * @param string $mode
-	 * @param string $mimeType
+	 * @param string|null $mimeType
 	 * @return ISimpleFile
 	 * @throws NotFoundException
 	 * @throws \InvalidArgumentException if the preview would be invalid (in case the original image is invalid)
@@ -109,7 +109,11 @@ class Generator {
 			new GenericEvent($file, $specification)
 		);
 		$this->eventDispatcher->dispatchTyped(new BeforePreviewFetchedEvent(
-			$file
+			$file,
+			$width,
+			$height,
+			$crop,
+			$mode,
 		));
 
 		// since we only ask for one preview, and the generate method return the last one it created, it returns the one we want

+ 41 - 4
lib/public/Preview/BeforePreviewFetchedEvent.php

@@ -27,19 +27,27 @@ declare(strict_types=1);
 namespace OCP\Preview;
 
 use OCP\Files\Node;
+use OCP\IPreview;
 
 /**
  * @since 25.0.1
  */
 class BeforePreviewFetchedEvent extends \OCP\EventDispatcher\Event {
-	private Node $node;
-
 	/**
 	 * @since 25.0.1
 	 */
-	public function __construct(Node $node) {
+	public function __construct(
+		private Node $node,
+		/** @deprecated 28.0.0 null deprecated **/
+		private ?int $width = null,
+		/** @deprecated 28.0.0 null deprecated **/
+		private ?int $height = null,
+		/** @deprecated 28.0.0 null deprecated **/
+		private ?bool $crop = null,
+		/** @deprecated 28.0.0 null deprecated **/
+		private ?string $mode = null,
+	) {
 		parent::__construct();
-		$this->node = $node;
 	}
 
 	/**
@@ -48,4 +56,33 @@ class BeforePreviewFetchedEvent extends \OCP\EventDispatcher\Event {
 	public function getNode(): Node {
 		return $this->node;
 	}
+
+	/**
+	 * @since 28.0.0
+	 */
+	public function getWidth(): ?int {
+		return $this->width;
+	}
+
+	/**
+	 * @since 28.0.0
+	 */
+	public function getHeight(): ?int {
+		return $this->height;
+	}
+
+	/**
+	 * @since 28.0.0
+	 */
+	public function isCrop(): ?bool {
+		return $this->crop;
+	}
+
+	/**
+	 * @since 28.0.0
+	 * @return null|IPreview::MODE_FILL|IPreview::MODE_COVER
+	 */
+	public function getMode(): ?string {
+		return $this->mode;
+	}
 }

+ 6 - 6
tests/lib/Preview/GeneratorTest.php

@@ -125,7 +125,7 @@ class GeneratorTest extends \Test\TestCase {
 
 		$this->eventDispatcher->expects($this->once())
 			->method('dispatchTyped')
-			->with(new BeforePreviewFetchedEvent($file));
+			->with(new BeforePreviewFetchedEvent($file, 100, 100, false, IPreview::MODE_FILL));
 
 		$result = $this->generator->getPreview($file, 100, 100);
 		$this->assertSame($previewFile, $result);
@@ -264,7 +264,7 @@ class GeneratorTest extends \Test\TestCase {
 
 		$this->eventDispatcher->expects($this->once())
 			->method('dispatchTyped')
-			->with(new BeforePreviewFetchedEvent($file));
+			->with(new BeforePreviewFetchedEvent($file, 100, 100, false, IPreview::MODE_FILL));
 
 		$result = $this->generator->getPreview($file, 100, 100);
 		$this->assertSame($previewFile, $result);
@@ -316,7 +316,7 @@ class GeneratorTest extends \Test\TestCase {
 
 		$this->eventDispatcher->expects($this->once())
 			->method('dispatchTyped')
-			->with(new BeforePreviewFetchedEvent($file));
+			->with(new BeforePreviewFetchedEvent($file, 1024, 512, true, IPreview::MODE_COVER));
 
 		$this->generator->getPreview($file, 1024, 512, true, IPreview::MODE_COVER, 'invalidType');
 	}
@@ -366,7 +366,7 @@ class GeneratorTest extends \Test\TestCase {
 
 		$this->eventDispatcher->expects($this->once())
 			->method('dispatchTyped')
-			->with(new BeforePreviewFetchedEvent($file));
+			->with(new BeforePreviewFetchedEvent($file, 1024, 512, true, IPreview::MODE_COVER));
 
 		$result = $this->generator->getPreview($file, 1024, 512, true, IPreview::MODE_COVER, 'invalidType');
 		$this->assertSame($preview, $result);
@@ -405,7 +405,7 @@ class GeneratorTest extends \Test\TestCase {
 
 		$this->eventDispatcher->expects($this->once())
 			->method('dispatchTyped')
-			->with(new BeforePreviewFetchedEvent($file));
+			->with(new BeforePreviewFetchedEvent($file, 100, 100, false, IPreview::MODE_FILL));
 
 		$this->expectException(NotFoundException::class);
 		$this->generator->getPreview($file, 100, 100);
@@ -543,7 +543,7 @@ class GeneratorTest extends \Test\TestCase {
 
 		$this->eventDispatcher->expects($this->once())
 			->method('dispatchTyped')
-			->with(new BeforePreviewFetchedEvent($file));
+			->with(new BeforePreviewFetchedEvent($file, $reqX, $reqY, $crop, $mode));
 
 		$result = $this->generator->getPreview($file, $reqX, $reqY, $crop, $mode);
 		if ($expectedX === $maxX && $expectedY === $maxY) {