From 0dff48adb3b91f669c0e4b03cc96314d431ba60f Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 16 May 2025 01:36:14 -0600 Subject: [PATCH] Update MediaTransformer, return proper image type --- app/Media.php | 24 +++++++++++++ app/Transformer/Api/MediaTransformer.php | 44 +++++++++++++----------- 2 files changed, 47 insertions(+), 21 deletions(-) diff --git a/app/Media.php b/app/Media.php index 987771000..ef3414e86 100644 --- a/app/Media.php +++ b/app/Media.php @@ -111,6 +111,30 @@ class Media extends Model return $verb; } + public function mediaType() + { + $verb = 'Document'; + switch ($this->mimeType()) { + case 'audio': + $verb = 'Audio'; + break; + + case 'image': + $verb = 'Image'; + break; + + case 'video': + $verb = 'Video'; + break; + + default: + $verb = 'Image'; + break; + } + + return $verb; + } + public function getMetadata() { return json_decode($this->metadata, true, 3); diff --git a/app/Transformer/Api/MediaTransformer.php b/app/Transformer/Api/MediaTransformer.php index e1eeb1f6f..0d52006a4 100644 --- a/app/Transformer/Api/MediaTransformer.php +++ b/app/Transformer/Api/MediaTransformer.php @@ -11,40 +11,42 @@ class MediaTransformer extends Fractal\TransformerAbstract public function transform(Media $media) { $res = [ - 'id' => (string) $media->id, - 'type' => strtolower($media->activityVerb()), - 'url' => $media->url(), - 'remote_url' => null, - 'preview_url' => $media->thumbnailUrl(), + 'id' => (string) $media->id, + 'type' => strtolower($media->mediaType()), + 'url' => $media->url(), + 'remote_url' => null, + 'preview_url' => $media->thumbnailUrl(), 'optimized_url' => $media->optimized_url, - 'text_url' => null, - 'meta' => null, - 'description' => $media->caption, - 'license' => $media->getLicense(), - 'is_nsfw' => $media->is_nsfw, - 'orientation' => $media->orientation, - 'filter_name' => $media->filter_name, - 'filter_class' => $media->version == 1 ? $media->filter_class : null, - 'mime' => $media->mime, - 'blurhash' => $media->blurhash ?? 'U4Rfzst8?bt7ogayj[j[~pfQ9Goe%Mj[WBay' + 'text_url' => null, + 'meta' => null, + 'description' => $media->caption, + 'license' => $media->getLicense(), + 'is_nsfw' => $media->is_nsfw, + 'orientation' => $media->orientation, + 'filter_name' => $media->filter_name, + 'filter_class' => $media->version == 1 ? $media->filter_class : null, + 'mime' => $media->mime, + 'blurhash' => $media->blurhash ?? 'U4Rfzst8?bt7ogayj[j[~pfQ9Goe%Mj[WBay', ]; - if(config('media.hls.enabled') && $media->hls_transcoded_at != null && $media->hls_path) { - $res['hls_manifest'] = url(Storage::url($media->hls_path)); + if ((bool) config('media.hls.enabled')) { + if ($media->hls_transcoded_at != null && $media->hls_path) { + $res['hls_manifest'] = url(Storage::url($media->hls_path)); + } } - if($media->width && $media->height) { + if ($media->width && $media->height) { $res['meta'] = [ 'focus' => [ 'x' => 0, - 'y' => 0 + 'y' => 0, ], 'original' => [ 'width' => $media->width, 'height' => $media->height, 'size' => "{$media->width}x{$media->height}", - 'aspect' => $media->width / $media->height - ] + 'aspect' => $media->width / $media->height, + ], ]; }