fix(files): avoid sending thumbnail URL for directory as none exists

Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
This commit is contained in:
Benjamin Gaussorgues 2023-11-17 11:55:45 +01:00
parent 8c24a32fda
commit 01de485aca
No known key found for this signature in database
GPG key ID: 5DAC1CAFAA6DB883

View file

@ -31,6 +31,7 @@ namespace OCA\Files\Search;
use InvalidArgumentException;
use OCP\Files\Search\ISearchOperator;
use OCP\IPreview;
use OCP\Search\FilterDefinition;
use OCP\Search\IFilter;
use OCP\Search\IFilteringProvider;
@ -71,7 +72,8 @@ class FilesSearchProvider implements IFilteringProvider {
IL10N $l10n,
IURLGenerator $urlGenerator,
IMimeTypeDetector $mimeTypeDetector,
IRootFolder $rootFolder
IRootFolder $rootFolder,
private IPreview $previewManager,
) {
$this->l10n = $l10n;
$this->urlGenerator = $urlGenerator;
@ -139,8 +141,12 @@ class FilesSearchProvider implements IFilteringProvider {
return SearchResult::paginated(
$this->l10n->t('Files'),
array_map(function (Node $result) use ($userFolder) {
// Generate thumbnail url
$thumbnailUrl = $this->urlGenerator->linkToRouteAbsolute('core.Preview.getPreviewByFileId', ['x' => 32, 'y' => 32, 'fileId' => $result->getId()]);
$thumbnailUrl = $this->previewManager->isMimeSupported($result->getMimetype())
? $this->urlGenerator->linkToRouteAbsolute('core.Preview.getPreviewByFileId', ['x' => 32, 'y' => 32, 'fileId' => $result->getId()])
: '';
$icon = $result->getMimetype() === FileInfo::MIMETYPE_FOLDER
? 'icon-folder'
: $this->mimeTypeDetector->mimeTypeIcon($result->getMimetype());
$path = $userFolder->getRelativePath($result->getPath());
// Use shortened link to centralize the various
@ -155,7 +161,7 @@ class FilesSearchProvider implements IFilteringProvider {
$result->getName(),
$this->formatSubline($path),
$this->urlGenerator->getAbsoluteURL($link),
$result->getMimetype() === FileInfo::MIMETYPE_FOLDER ? 'icon-folder' : $this->mimeTypeDetector->mimeTypeIcon($result->getMimetype())
$icon,
);
$searchResultEntry->addAttribute('fileId', (string)$result->getId());
$searchResultEntry->addAttribute('path', $path);