diff --git a/api/config/settings/common.py b/api/config/settings/common.py index 06194348d7e95b37e110479648f864070adcb131..b1283ea86d8a886cab3e98ca962fa7bdc4841c2e 100644 --- a/api/config/settings/common.py +++ b/api/config/settings/common.py @@ -1223,6 +1223,7 @@ VERSATILEIMAGEFIELD_RENDITION_KEY_SETS = { "attachment_square": [ ("original", "url"), ("medium_square_crop", "crop__200x200"), + ("large_square_crop", "crop__600x600"), ], } VERSATILEIMAGEFIELD_SETTINGS = { diff --git a/api/funkwhale_api/common/models.py b/api/funkwhale_api/common/models.py index e0bd216198f799d517c7820983ce464d0343ff74..688af540635b0ffebad4c2271a49ba76852da31e 100644 --- a/api/funkwhale_api/common/models.py +++ b/api/funkwhale_api/common/models.py @@ -267,6 +267,13 @@ class Attachment(models.Model): proxy_url = reverse("api:v1:attachments-proxy", kwargs={"uuid": self.uuid}) return federation_utils.full_url(proxy_url + "?next=medium_square_crop") + @property + def download_url_large_square_crop(self): + if self.file: + return utils.media_url(self.file.crop["600x600"].url) + proxy_url = reverse("api:v1:attachments-proxy", kwargs={"uuid": self.uuid}) + return federation_utils.full_url(proxy_url + "?next=large_square_crop") + class MutationAttachment(models.Model): """ diff --git a/api/funkwhale_api/common/serializers.py b/api/funkwhale_api/common/serializers.py index 9210c0603c3925d724dc82d79ba5e1c0fae227f8..fa194ea8aa138eb72a27dc62b514b321324d2e2a 100644 --- a/api/funkwhale_api/common/serializers.py +++ b/api/funkwhale_api/common/serializers.py @@ -297,6 +297,7 @@ class AttachmentSerializer(serializers.Serializer): urls["source"] = o.url urls["original"] = o.download_url_original urls["medium_square_crop"] = o.download_url_medium_square_crop + urls["large_square_crop"] = o.download_url_large_square_crop return urls def create(self, validated_data): diff --git a/api/funkwhale_api/common/views.py b/api/funkwhale_api/common/views.py index a4818acd96325c7e069e5646e48cfe25ebc0658c..fe669ad215a7a8f48a877f09c9aff2699989e3a0 100644 --- a/api/funkwhale_api/common/views.py +++ b/api/funkwhale_api/common/views.py @@ -175,7 +175,7 @@ class AttachmentViewSet( return r size = request.GET.get("next", "original").lower() - if size not in ["original", "medium_square_crop"]: + if size not in ["original", "medium_square_crop", "large_square_crop"]: size = "original" try: diff --git a/api/tests/common/test_serializers.py b/api/tests/common/test_serializers.py index 1d23efb66140d01231a26745c6df4b84f617574b..e8ef04bca4eb988b84c787505c29b69d6c356d5d 100644 --- a/api/tests/common/test_serializers.py +++ b/api/tests/common/test_serializers.py @@ -200,6 +200,9 @@ def test_attachment_serializer_existing_file(factories, to_api_date): "medium_square_crop": federation_utils.full_url( attachment.file.crop["200x200"].url ), + "large_square_crop": federation_utils.full_url( + attachment.file.crop["600x600"].url + ), }, } @@ -227,6 +230,9 @@ def test_attachment_serializer_remote_file(factories, to_api_date): "medium_square_crop": federation_utils.full_url( proxy_url + "?next=medium_square_crop" ), + "large_square_crop": federation_utils.full_url( + proxy_url + "?next=large_square_crop" + ), }, } diff --git a/changes/changelog.d/1205.enhancement b/changes/changelog.d/1205.enhancement new file mode 100644 index 0000000000000000000000000000000000000000..a3ccf4dc37e2915596cb16522b06ea606653f24f --- /dev/null +++ b/changes/changelog.d/1205.enhancement @@ -0,0 +1 @@ +Added a new, large thumbnail size for cover images (#1205 \ No newline at end of file diff --git a/front/src/components/Queue.vue b/front/src/components/Queue.vue index 27365be14f748111cf5c212f51926abcc46efb1d..d55490656f327ce976709a774a6f1c6010313f4f 100644 --- a/front/src/components/Queue.vue +++ b/front/src/components/Queue.vue @@ -6,8 +6,8 @@ <div class="ui six wide column current-track"> <div class="ui basic segment" id="player"> <template v-if="currentTrack"> - <img ref="cover" alt="" v-if="currentTrack.cover && currentTrack.cover.urls.original" :src="$store.getters['instance/absoluteUrl'](currentTrack.cover.urls.original)"> - <img ref="cover" alt="" v-else-if="currentTrack.album && currentTrack.album.cover && currentTrack.album.cover.urls.original" :src="$store.getters['instance/absoluteUrl'](currentTrack.album.cover.urls.original)"> + <img ref="cover" alt="" v-if="currentTrack.cover && currentTrack.cover.urls.large_square_crop" :src="$store.getters['instance/absoluteUrl'](currentTrack.cover.urls.large_square_crop)"> + <img ref="cover" alt="" v-else-if="currentTrack.album && currentTrack.album.cover && currentTrack.album.cover.urls.large_square_crop" :src="$store.getters['instance/absoluteUrl'](currentTrack.album.cover.urls.large_square_crop)"> <img class="ui image" alt="" v-else src="../assets/audio/default-cover.png"> <h1 class="ui header"> <div class="content ellipsis">