diff --git a/api/funkwhale_api/federation/serializers.py b/api/funkwhale_api/federation/serializers.py index cf59eaa63..bca35902d 100644 --- a/api/funkwhale_api/federation/serializers.py +++ b/api/funkwhale_api/federation/serializers.py @@ -159,6 +159,7 @@ class APILibrarySerializer(serializers.ModelSerializer): class APILibraryCreateSerializer(serializers.ModelSerializer): actor = serializers.URLField() + federation_enabled = serializers.BooleanField() class Meta: model = models.Library diff --git a/api/funkwhale_api/users/models.py b/api/funkwhale_api/users/models.py index 9516c108f..572fa9ddc 100644 --- a/api/funkwhale_api/users/models.py +++ b/api/funkwhale_api/users/models.py @@ -31,6 +31,9 @@ class User(AbstractUser): 'dynamic_preferences.change_globalpreferencemodel': { 'external_codename': 'settings.change', }, + 'federation.change_library': { + 'external_codename': 'federation.manage', + }, } privacy_level = fields.get_privacy_field() diff --git a/front/src/components/Sidebar.vue b/front/src/components/Sidebar.vue index 42a923b6b..c04ebe5a8 100644 --- a/front/src/components/Sidebar.vue +++ b/front/src/components/Sidebar.vue @@ -45,6 +45,9 @@ Activity + Federation diff --git a/front/src/components/federation/LibraryCard.vue b/front/src/components/federation/LibraryCard.vue new file mode 100644 index 000000000..9676f2de5 --- /dev/null +++ b/front/src/components/federation/LibraryCard.vue @@ -0,0 +1,82 @@ + + + diff --git a/front/src/components/federation/LibraryForm.vue b/front/src/components/federation/LibraryForm.vue new file mode 100644 index 000000000..5cf6dabb2 --- /dev/null +++ b/front/src/components/federation/LibraryForm.vue @@ -0,0 +1,110 @@ + + + diff --git a/front/src/router/index.js b/front/src/router/index.js index d41764227..0981c37f9 100644 --- a/front/src/router/index.js +++ b/front/src/router/index.js @@ -25,6 +25,7 @@ import RequestsList from '@/components/requests/RequestsList' import PlaylistDetail from '@/views/playlists/Detail' import PlaylistList from '@/views/playlists/List' import Favorites from '@/components/favorites/List' +import Federation from '@/views/federation/Home' Vue.use(Router) @@ -83,6 +84,10 @@ export default new Router({ defaultPaginateBy: route.query.paginateBy }) }, + { + path: '/manage/federation', + component: Federation + }, { path: '/library', component: Library, diff --git a/front/src/views/federation/Home.vue b/front/src/views/federation/Home.vue new file mode 100644 index 000000000..c9e3693d6 --- /dev/null +++ b/front/src/views/federation/Home.vue @@ -0,0 +1,40 @@ + + +