diff --git a/api/funkwhale_api/radios/radios.py b/api/funkwhale_api/radios/radios.py index 5f37dc7e485868af1608c10fc9044f52535715b2..4f23fb28121727b181a0c80e425391a44063c668 100644 --- a/api/funkwhale_api/radios/radios.py +++ b/api/funkwhale_api/radios/radios.py @@ -5,11 +5,12 @@ from django.db import connection from django.db.models import Q from rest_framework import serializers -from funkwhale_api.federation import models as federation_models from funkwhale_api.federation import fields as federation_fields +from funkwhale_api.federation import models as federation_models from funkwhale_api.moderation import filters as moderation_filters from funkwhale_api.music.models import Artist, Library, Track, Upload from funkwhale_api.tags.models import Tag + from . import filters, models from .registries import registry @@ -320,3 +321,10 @@ class LibraryRadio(RelatedObjectRadio): def get_related_object_id_repr(self, obj): return obj.uuid + + +@registry.register(name="recently-added") +class RecentlyAdded(SessionRadio): + def get_queryset(self, **kwargs): + qs = super().get_queryset(**kwargs) + return qs.filter(artist__content_category="music").order_by("-creation_date") diff --git a/changes/changelog.d/1390.feature b/changes/changelog.d/1390.feature new file mode 100644 index 0000000000000000000000000000000000000000..22516579b419556f880cc47ecd413929ac296c58 --- /dev/null +++ b/changes/changelog.d/1390.feature @@ -0,0 +1 @@ +Implemented awesome recently added radio (part of #1390) diff --git a/front/src/components/library/Radios.vue b/front/src/components/library/Radios.vue index 8fd6142ac1f58c73939c9074b644982ea9405a99..8f2b551ae2b6059c74d79561dae57d102fd792d3 100644 --- a/front/src/components/library/Radios.vue +++ b/front/src/components/library/Radios.vue @@ -13,6 +13,7 @@ <radio-card v-if="isAuthenticated" :type="'actor-content'" :object-id="$store.state.auth.fullUsername"></radio-card> <radio-card v-if="isAuthenticated && hasFavorites" :type="'favorites'"></radio-card> <radio-card :type="'random'"></radio-card> + <radio-card :type="'recently-added'"></radio-card> <radio-card v-if="$store.state.auth.authenticated" :type="'less-listened'"></radio-card> </div> </div> diff --git a/front/src/store/radios.js b/front/src/store/radios.js index 9cd48e769ded3b3f4746a462f4d5a975e0019833..475b2457f21bd5494e46df6ec6beb701eb21c644 100644 --- a/front/src/store/radios.js +++ b/front/src/store/radios.js @@ -27,6 +27,10 @@ export default { 'less-listened': { name: 'Less listened', description: "Listen to tracks you usually don't. It's time to restore some balance." + }, + 'recently-added': { + name: 'Recently Added', + description: "Newest content on the network. Get some fresh air." } } }