diff options
author | Julien Veyssier <eneiluj@posteo.net> | 2022-10-03 15:46:29 +0200 |
---|---|---|
committer | Julien Veyssier <eneiluj@posteo.net> | 2022-10-06 01:04:19 +0200 |
commit | 3c86afcce4ffcc2bb5ec897587c74a80c5a39b8e (patch) | |
tree | a4f4281041edd2c22a05ad1076e998d1d8b906a7 /lib/private/Collaboration | |
parent | 4a31d56c7a8fae520369b25c9a50fd64e1a51985 (diff) | |
download | nextcloud-server-3c86afcce4ffcc2bb5ec897587c74a80c5a39b8e.tar.gz nextcloud-server-3c86afcce4ffcc2bb5ec897587c74a80c5a39b8e.zip |
File reference: use the file type icon as fallback when no preview provider for this type
Signed-off-by: Julien Veyssier <eneiluj@posteo.net>
Diffstat (limited to 'lib/private/Collaboration')
-rw-r--r-- | lib/private/Collaboration/Reference/File/FileReferenceProvider.php | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/lib/private/Collaboration/Reference/File/FileReferenceProvider.php b/lib/private/Collaboration/Reference/File/FileReferenceProvider.php index 9109cbf7377..4e6c7ea623f 100644 --- a/lib/private/Collaboration/Reference/File/FileReferenceProvider.php +++ b/lib/private/Collaboration/Reference/File/FileReferenceProvider.php @@ -28,6 +28,7 @@ use OC\User\NoUserException; use OCP\Collaboration\Reference\IReference; use OCP\Collaboration\Reference\IReferenceProvider; use OCP\Collaboration\Reference\Reference; +use OCP\Files\IMimeTypeDetector; use OCP\Files\InvalidPathException; use OCP\Files\IRootFolder; use OCP\Files\Node; @@ -42,12 +43,18 @@ class FileReferenceProvider implements IReferenceProvider { private IRootFolder $rootFolder; private ?string $userId; private IPreview $previewManager; + private IMimeTypeDetector $mimeTypeDetector; - public function __construct(IURLGenerator $urlGenerator, IRootFolder $rootFolder, IUserSession $userSession, IPreview $previewManager) { + public function __construct(IURLGenerator $urlGenerator, + IRootFolder $rootFolder, + IUserSession $userSession, + IMimeTypeDetector $mimeTypeDetector, + IPreview $previewManager) { $this->urlGenerator = $urlGenerator; $this->rootFolder = $rootFolder; $this->userId = $userSession->getUser() ? $userSession->getUser()->getUID() : null; $this->previewManager = $previewManager; + $this->mimeTypeDetector = $mimeTypeDetector; } public function matchReference(string $referenceText): bool { @@ -127,7 +134,12 @@ class FileReferenceProvider implements IReferenceProvider { $reference->setTitle($file->getName()); $reference->setDescription($file->getMimetype()); $reference->setUrl($this->urlGenerator->getAbsoluteURL('/index.php/f/' . $fileId)); - $reference->setImageUrl($this->urlGenerator->linkToRouteAbsolute('core.Preview.getPreviewByFileId', ['x' => 1600, 'y' => 630, 'fileId' => $fileId])); + if ($this->previewManager->isMimeSupported($file->getMimeType())) { + $reference->setImageUrl($this->urlGenerator->linkToRouteAbsolute('core.Preview.getPreviewByFileId', ['x' => 1600, 'y' => 630, 'fileId' => $fileId])); + } else { + $fileTypeIconUrl = $this->mimeTypeDetector->mimeTypeIcon($file->getMimeType()); + $reference->setImageUrl($fileTypeIconUrl); + } $reference->setRichObject('file', [ 'id' => $file->getId(), |