diff options
author | Julien Veyssier <eneiluj@posteo.net> | 2022-10-03 16:46:29 +0300 |
---|---|---|
committer | backportbot-nextcloud[bot] <backportbot-nextcloud[bot]@users.noreply.github.com> | 2022-10-06 07:33:51 +0300 |
commit | 4807c23e0938e95ca13393fa8c8e837bee2e6919 (patch) | |
tree | 0f9dd0556f25fa9367eb2e3709c17198566a79ff /lib | |
parent | 0c6b5cde956ee2dce768e43bc4761c054e29ba74 (diff) |
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')
-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(), |