From 1aa8f3ce42a081b31409741b523a32a6a52ed3cf Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Tue, 7 Nov 2023 22:45:35 -0100 Subject: [PATCH] returns resources preview Signed-off-by: Maxence Lange --- lib/IRelatedResource.php | 4 ++++ lib/Model/RelatedResource.php | 17 +++++++++++++++-- .../FilesRelatedResourceProvider.php | 6 ++++++ .../TalkRelatedResourceProvider.php | 8 +++++++- 4 files changed, 32 insertions(+), 3 deletions(-) diff --git a/lib/IRelatedResource.php b/lib/IRelatedResource.php index 854c2b06..98ce4f36 100644 --- a/lib/IRelatedResource.php +++ b/lib/IRelatedResource.php @@ -52,6 +52,10 @@ public function setIcon(string $icon): self; public function getIcon(): string; + public function setPreview(string $preview): self; + + public function getPreview(): string; + public function setUrl(string $url): self; public function getUrl(): string; diff --git a/lib/Model/RelatedResource.php b/lib/Model/RelatedResource.php index c3c86c1b..7a0a91e9 100644 --- a/lib/Model/RelatedResource.php +++ b/lib/Model/RelatedResource.php @@ -63,6 +63,7 @@ class RelatedResource implements IRelatedResource, IDeserializable, JsonSerializ private string $subtitle = ''; private string $tooltip = ''; private string $icon = ''; + private string $preview = ''; private string $url = ''; private int $range = 0; private array $virtualGroup = []; @@ -141,6 +142,16 @@ public function getIcon(): string { return $this->icon; } + public function setPreview(string $preview): self { + $this->preview = $preview; + + return $this; + } + + public function getPreview(): string { + return $this->preview; + } + public function setUrl(string $url): IRelatedResource { $this->url = $url; @@ -270,6 +281,7 @@ public function import(array $data): IDeserializable { $this->setSubtitle($this->get('subtitle', $data)); $this->setTooltip($this->get('tooltip', $data)); $this->setIcon($this->get('icon', $data)); + $this->setPreview($this->get('preview', $data)); $this->setUrl($this->get('url', $data)); $this->setScore($this->getInt('score', $data)); $this->setAsGroupShared($this->getBool('groupShared', $data)); @@ -290,6 +302,7 @@ public function jsonSerialize(): array { 'subtitle' => $this->getSubtitle(), 'tooltip' => $this->getTooltip(), 'icon' => $this->getIcon(), + 'preview' => $this->getPreview(), 'url' => $this->getUrl(), 'score' => $this->getScore(), 'groupShared' => $this->isGroupShared(), @@ -303,8 +316,8 @@ public function jsonSerialize(): array { public static function cleanData(array $arr): array { static $acceptedKeys = [ - 'providerId', 'itemId', 'title', 'subtitle', 'tooltip', 'url', 'icon', 'score', - 'improvements' + 'providerId', 'itemId', 'title', 'subtitle', 'tooltip', 'url', + 'icon', 'preview', 'score', 'improvements' ]; $new = []; diff --git a/lib/RelatedResourceProviders/FilesRelatedResourceProvider.php b/lib/RelatedResourceProviders/FilesRelatedResourceProvider.php index 0a6140a4..7fbc3efd 100644 --- a/lib/RelatedResourceProviders/FilesRelatedResourceProvider.php +++ b/lib/RelatedResourceProviders/FilesRelatedResourceProvider.php @@ -166,6 +166,12 @@ private function convertToRelatedResource(FilesShare $share): IRelatedResource { ) ) ); + $related->setPreview( + $this->urlGenerator->linkToRouteAbsolute( + 'core.Preview.getPreviewByFileId', + ['x' => 64, 'y' => 64, 'fileId' => $share->getFileId()] + ) + ); $related->setUrl( $this->urlGenerator->linkToRouteAbsolute('files.View.showFile', ['fileid' => $share->getFileId()]) diff --git a/lib/RelatedResourceProviders/TalkRelatedResourceProvider.php b/lib/RelatedResourceProviders/TalkRelatedResourceProvider.php index d8f14c9e..e37a8402 100644 --- a/lib/RelatedResourceProviders/TalkRelatedResourceProvider.php +++ b/lib/RelatedResourceProviders/TalkRelatedResourceProvider.php @@ -179,7 +179,13 @@ private function convertToRelatedResource(TalkRoom $share): IRelatedResource { ) ) ) - ->setUrl($url); + ->setPreview( + $this->urlGenerator->linkToOCSRouteAbsolute( + 'spreed.Avatar.getAvatar', + ['token' => $share->getToken(), 'apiVersion' => 'v1'] + ) + ) + ->setUrl($url); $keywords = preg_split('/[\/_\-. ]/', ltrim(strtolower($share->getRoomName()), '/')); if (is_array($keywords)) {