Skip to content

Commit 3c86afc

Browse files
author
Julien Veyssier
committed
File reference: use the file type icon as fallback when no preview provider for this type
Signed-off-by: Julien Veyssier <eneiluj@posteo.net>
1 parent 4a31d56 commit 3c86afc

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

lib/private/Collaboration/Reference/File/FileReferenceProvider.php

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
use OCP\Collaboration\Reference\IReference;
2929
use OCP\Collaboration\Reference\IReferenceProvider;
3030
use OCP\Collaboration\Reference\Reference;
31+
use OCP\Files\IMimeTypeDetector;
3132
use OCP\Files\InvalidPathException;
3233
use OCP\Files\IRootFolder;
3334
use OCP\Files\Node;
@@ -42,12 +43,18 @@ class FileReferenceProvider implements IReferenceProvider {
4243
private IRootFolder $rootFolder;
4344
private ?string $userId;
4445
private IPreview $previewManager;
46+
private IMimeTypeDetector $mimeTypeDetector;
4547

46-
public function __construct(IURLGenerator $urlGenerator, IRootFolder $rootFolder, IUserSession $userSession, IPreview $previewManager) {
48+
public function __construct(IURLGenerator $urlGenerator,
49+
IRootFolder $rootFolder,
50+
IUserSession $userSession,
51+
IMimeTypeDetector $mimeTypeDetector,
52+
IPreview $previewManager) {
4753
$this->urlGenerator = $urlGenerator;
4854
$this->rootFolder = $rootFolder;
4955
$this->userId = $userSession->getUser() ? $userSession->getUser()->getUID() : null;
5056
$this->previewManager = $previewManager;
57+
$this->mimeTypeDetector = $mimeTypeDetector;
5158
}
5259

5360
public function matchReference(string $referenceText): bool {
@@ -127,7 +134,12 @@ private function fetchReference(Reference $reference): void {
127134
$reference->setTitle($file->getName());
128135
$reference->setDescription($file->getMimetype());
129136
$reference->setUrl($this->urlGenerator->getAbsoluteURL('/index.php/f/' . $fileId));
130-
$reference->setImageUrl($this->urlGenerator->linkToRouteAbsolute('core.Preview.getPreviewByFileId', ['x' => 1600, 'y' => 630, 'fileId' => $fileId]));
137+
if ($this->previewManager->isMimeSupported($file->getMimeType())) {
138+
$reference->setImageUrl($this->urlGenerator->linkToRouteAbsolute('core.Preview.getPreviewByFileId', ['x' => 1600, 'y' => 630, 'fileId' => $fileId]));
139+
} else {
140+
$fileTypeIconUrl = $this->mimeTypeDetector->mimeTypeIcon($file->getMimeType());
141+
$reference->setImageUrl($fileTypeIconUrl);
142+
}
131143

132144
$reference->setRichObject('file', [
133145
'id' => $file->getId(),

0 commit comments

Comments
 (0)