From b4e06c416d7a93fa220cf70892c2f12271e66d7e Mon Sep 17 00:00:00 2001 From: Deluan Date: Mon, 8 Jun 2020 18:39:31 -0400 Subject: [PATCH] Allow toggling a playlist public from the Playlist list view. Closes #344 --- persistence/playlist_repository.go | 10 +++++++--- ui/src/playlist/PlaylistList.js | 32 ++++++++++++++++++++++++++++-- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/persistence/playlist_repository.go b/persistence/playlist_repository.go index c29a18d46..4a679e065 100644 --- a/persistence/playlist_repository.go +++ b/persistence/playlist_repository.go @@ -87,9 +87,13 @@ func (r *playlistRepository) Put(p *model.Playlist) error { return err } p.ID = id - err = r.updateTracks(id, tracks) - if err != nil { - return err + + // Only update tracks if they are specified + if tracks != nil { + err = r.updateTracks(id, tracks) + if err != nil { + return err + } } return r.loadTracks(p) } diff --git a/ui/src/playlist/PlaylistList.js b/ui/src/playlist/PlaylistList.js index 11629f956..9929af07b 100644 --- a/ui/src/playlist/PlaylistList.js +++ b/ui/src/playlist/PlaylistList.js @@ -1,6 +1,5 @@ import React from 'react' import { - BooleanField, Datagrid, DateField, EditButton, @@ -8,7 +7,10 @@ import { NumberField, SearchInput, TextField, + useUpdate, + useNotify, } from 'react-admin' +import Switch from '@material-ui/core/Switch' import { DurationField, List } from '../common' import Writable, { isWritable } from '../common/Writable' @@ -18,15 +20,41 @@ const PlaylistFilter = (props) => ( ) +const TogglePublicInput = ({ resource, record, source }) => { + const notify = useNotify() + const [togglePublic] = useUpdate( + resource, + record.id, + { + ...record, + public: !record.public, + }, + { + undoable: false, + onFailure: (error) => { + console.log(error) + notify('ra.page.error', 'warning') + }, + } + ) + + const handleClick = (e) => { + togglePublic() + e.stopPropagation() + } + + return +} + const PlaylistList = (props) => ( }> isWritable(r && r.owner)}> - +