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 @@