From 950869c9a64f05dca0f05cfef99decf72dbbc59c Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Wed, 21 Sep 2022 15:40:22 -0100 Subject: [PATCH] use mimeIcon is preview not available Signed-off-by: Maxence Lange --- .gitignore | 2 +- lib/Dashboard/RecommendationWidget.php | 41 ++++++++++++++++++++------ 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index 8ea6abea..d0abaa0f 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,4 @@ /build /node_modules /vendor/ - +.idea/ diff --git a/lib/Dashboard/RecommendationWidget.php b/lib/Dashboard/RecommendationWidget.php index aa67d56f..44ec9bc0 100644 --- a/lib/Dashboard/RecommendationWidget.php +++ b/lib/Dashboard/RecommendationWidget.php @@ -1,4 +1,7 @@ * @@ -30,6 +33,7 @@ use OCP\Dashboard\IIconWidget; use OCP\Dashboard\IWidget; use OCP\Dashboard\Model\WidgetItem; +use OCP\Files\IMimeTypeDetector; use OCP\IL10N; use OCP\IURLGenerator; use OCP\IUserManager; @@ -40,6 +44,7 @@ class RecommendationWidget implements IWidget, IIconWidget, IAPIWidget { private IUserSession $userSession; private IL10N $l10n; private IURLGenerator $urlGenerator; + private IMimeTypeDetector $mimeTypeDetector; private RecommendationService $recommendationService; private IUserManager $userManager; @@ -47,12 +52,14 @@ public function __construct( IUserSession $userSession, IL10N $l10n, IURLGenerator $urlGenerator, + IMimeTypeDetector $mimeTypeDetector, RecommendationService $recommendationService, IUserManager $userManager ) { $this->userSession = $userSession; $this->l10n = $l10n; $this->urlGenerator = $urlGenerator; + $this->mimeTypeDetector = $mimeTypeDetector; $this->recommendationService = $recommendationService; $this->userManager = $userManager; } @@ -96,15 +103,31 @@ public function getItems(string $userId, ?string $since = null, int $limit = 7): } $recommendations = $this->recommendationService->getRecommendations($user, $limit); - return array_map(function(IRecommendation $recommendation) { - $url = $this->urlGenerator->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $recommendation->getNode()->getId()]); - $icon = $this->urlGenerator->linkToRouteAbsolute('core.Preview.getPreviewByFileId', [ - 'x' => 256, - 'y' => 256, - 'fileId' => $recommendation->getNode()->getId(), - 'c' => $recommendation->getNode()->getEtag(), - ]); - return new WidgetItem($recommendation->getNode()->getName(), '', $url, $icon, $recommendation->getTimestamp()); + return array_map(function (IRecommendation $recommendation) { + $url = $this->urlGenerator->linkToRouteAbsolute( + 'files.viewcontroller.showFile', ['fileid' => $recommendation->getNode()->getId()] + ); + + if ($recommendation->hasPreview()) { + $icon = $this->urlGenerator->linkToRouteAbsolute('core.Preview.getPreviewByFileId', [ + 'x' => 256, + 'y' => 256, + 'fileId' => $recommendation->getNode()->getId(), + 'c' => $recommendation->getNode()->getEtag(), + ]); + } else { + $icon = $this->urlGenerator->getAbsoluteURL( + $this->mimeTypeDetector->mimeTypeIcon($recommendation->getNode()->getMimetype()) + ); + } + + return new WidgetItem( + $recommendation->getNode()->getName(), + '', + $url, + $icon, + (string)$recommendation->getTimestamp() + ); }, $recommendations); } }