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)}>
-
+