diff --git a/api/funkwhale_api/audio/serializers.py b/api/funkwhale_api/audio/serializers.py index 926ba0ab9..50e4fc01f 100644 --- a/api/funkwhale_api/audio/serializers.py +++ b/api/funkwhale_api/audio/serializers.py @@ -268,7 +268,7 @@ class ChannelSerializer(serializers.ModelSerializer): return obj.actor.received_follows.exclude(approved=False).count() def get_downloads_count(self, obj): - return getattr(obj, "_downloads_count", None) + return getattr(obj, "_downloads_count", None) or 0 def get_actor(self, obj): if obj.attributed_to == actors.get_service_actor(): diff --git a/api/tests/audio/test_serializers.py b/api/tests/audio/test_serializers.py index 58b7986e5..c91f1409f 100644 --- a/api/tests/audio/test_serializers.py +++ b/api/tests/audio/test_serializers.py @@ -250,7 +250,7 @@ def test_channel_serializer_external_representation(factories, to_api_date): "metadata": {}, "rss_url": channel.get_rss_url(), "url": channel.actor.url, - "downloads_count": None, + "downloads_count": 0, } expected["artist"]["description"] = common_serializers.ContentSerializer( content diff --git a/changes/changelog.d/1729.bugfix b/changes/changelog.d/1729.bugfix new file mode 100644 index 000000000..b7dd2b7c4 --- /dev/null +++ b/changes/changelog.d/1729.bugfix @@ -0,0 +1 @@ +Fixes channel page (#1729) (1729) diff --git a/front/src/components/audio/ChannelEntries.vue b/front/src/components/audio/ChannelEntries.vue index ee934a57f..ac817a2b2 100644 --- a/front/src/components/audio/ChannelEntries.vue +++ b/front/src/components/audio/ChannelEntries.vue @@ -67,7 +67,7 @@ export default { props: { filters: { type: Object, required: true }, limit: { type: Number, default: 10 }, - defaultCover: { type: Object, required: true }, + defaultCover: { type: Object, default: () => ({}) }, isPodcast: { type: Boolean, required: true } }, data () { diff --git a/front/src/components/audio/track/Table.vue b/front/src/components/audio/track/Table.vue index 6d4042d70..c4ebc3520 100644 --- a/front/src/components/audio/track/Table.vue +++ b/front/src/components/audio/track/Table.vue @@ -108,7 +108,7 @@ > @@ -163,6 +163,7 @@ import axios from 'axios' import TrackRow from '@/components/audio/track/Row.vue' import TrackMobileRow from '@/components/audio/track/MobileRow.vue' import Pagination from '@/components/Pagination.vue' +import { unique } from '@/filters' export default { components: { @@ -178,7 +179,7 @@ export default { showPosition: { type: Boolean, required: false, default: false }, showArt: { type: Boolean, required: false, default: true }, search: { type: Boolean, required: false, default: false }, - filters: { type: Object, required: false, default: null }, + filters: { type: Object, required: false, default: () => { return {} } }, nextUrl: { type: String, required: false, default: null }, displayActions: { type: Boolean, required: false, default: true }, showDuration: { type: Boolean, required: false, default: true }, @@ -203,7 +204,8 @@ export default { }, computed: { allTracks () { - return (this.tracks || []).concat(this.additionalTracks) + const tracks = (this.tracks || []).concat(this.additionalTracks) + return unique(tracks, 'id') }, labels () { diff --git a/front/src/components/channels/AlbumSelect.vue b/front/src/components/channels/AlbumSelect.vue index a5fdf91da..f307dc864 100644 --- a/front/src/components/channels/AlbumSelect.vue +++ b/front/src/components/channels/AlbumSelect.vue @@ -2,7 +2,7 @@