2828use OCP \Collaboration \Reference \IReference ;
2929use OCP \Collaboration \Reference \IReferenceProvider ;
3030use OCP \Collaboration \Reference \Reference ;
31+ use OCP \Files \IMimeTypeDetector ;
3132use OCP \Files \InvalidPathException ;
3233use OCP \Files \IRootFolder ;
3334use 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