Skip to content

Commit 396bdd7

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 9c516c2 commit 396bdd7

File tree

2 files changed

+20
-8
lines changed

2 files changed

+20
-8
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(),

lib/private/Collaboration/Reference/ReferenceManager.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,9 @@ public function getReferenceFromCache(string $referenceId): ?IReference {
7777

7878
public function getReferenceByCacheKey(string $cacheKey): ?IReference {
7979
$cached = $this->cache->get($cacheKey);
80-
if ($cached) {
81-
return Reference::fromCache($cached);
82-
}
80+
//if ($cached) {
81+
// return Reference::fromCache($cached);
82+
//}
8383

8484
return null;
8585
}
@@ -93,9 +93,9 @@ public function resolveReference(string $referenceId): ?IReference {
9393

9494
$cacheKey = $this->getFullCacheKey($matchedProvider, $referenceId);
9595
$cached = $this->cache->get($cacheKey);
96-
if ($cached) {
97-
return Reference::fromCache($cached);
98-
}
96+
//if ($cached) {
97+
// return Reference::fromCache($cached);
98+
//}
9999

100100
$reference = $matchedProvider->resolveReference($referenceId);
101101
if ($reference) {

0 commit comments

Comments
 (0)