From 3d5a1cef920339a8666779a6aee65a6e9702f0bb Mon Sep 17 00:00:00 2001 From: Deluan Date: Sun, 2 Oct 2022 13:56:39 -0400 Subject: [PATCH] Don't allow adding songs to smart playlists --- persistence/playlist_repository.go | 7 ++++++- ui/src/dialogs/AddToPlaylistDialog.test.js | 2 +- ui/src/dialogs/SelectPlaylistInput.js | 2 +- ui/src/dialogs/SelectPlaylistInput.test.js | 4 ++-- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/persistence/playlist_repository.go b/persistence/playlist_repository.go index f421b378..affad09c 100644 --- a/persistence/playlist_repository.go +++ b/persistence/playlist_repository.go @@ -32,7 +32,8 @@ func NewPlaylistRepository(ctx context.Context, o orm.QueryExecutor) model.Playl r.ormer = o r.tableName = "playlist" r.filterMappings = map[string]filterFunc{ - "q": playlistFilter, + "q": playlistFilter, + "smart": smartPlaylistFilter, } return r } @@ -44,6 +45,10 @@ func playlistFilter(field string, value interface{}) Sqlizer { } } +func smartPlaylistFilter(field string, value interface{}) Sqlizer { + return Eq{"rules": ""} +} + func (r *playlistRepository) userFilter() Sqlizer { user := loggedUser(r.ctx) if user.IsAdmin { diff --git a/ui/src/dialogs/AddToPlaylistDialog.test.js b/ui/src/dialogs/AddToPlaylistDialog.test.js index 850b1d03..0932af30 100644 --- a/ui/src/dialogs/AddToPlaylistDialog.test.js +++ b/ui/src/dialogs/AddToPlaylistDialog.test.js @@ -45,7 +45,7 @@ const createTestUtils = (mockDataProvider) => data: mockIndexedData, list: { cachedRequests: { - '{"pagination":{"page":1,"perPage":-1},"sort":{"field":"name","order":"ASC"},"filter":{}}': + '{"pagination":{"page":1,"perPage":-1},"sort":{"field":"name","order":"ASC"},"filter":{"smart":false}}': { ids: ['sample-id1', 'sample-id2'], total: 2, diff --git a/ui/src/dialogs/SelectPlaylistInput.js b/ui/src/dialogs/SelectPlaylistInput.js index 5e2df7b5..e35af00f 100644 --- a/ui/src/dialogs/SelectPlaylistInput.js +++ b/ui/src/dialogs/SelectPlaylistInput.js @@ -25,7 +25,7 @@ export const SelectPlaylistInput = ({ onChange }) => { 'playlist', { page: 1, perPage: -1 }, { field: 'name', order: 'ASC' }, - {} + { smart: false } ) const options = diff --git a/ui/src/dialogs/SelectPlaylistInput.test.js b/ui/src/dialogs/SelectPlaylistInput.test.js index 544e0260..13fab2af 100644 --- a/ui/src/dialogs/SelectPlaylistInput.test.js +++ b/ui/src/dialogs/SelectPlaylistInput.test.js @@ -51,7 +51,7 @@ describe('SelectPlaylistInput', () => { data: mockIndexedData, list: { cachedRequests: { - '{"pagination":{"page":1,"perPage":-1},"sort":{"field":"name","order":"ASC"},"filter":{}}': + '{"pagination":{"page":1,"perPage":-1},"sort":{"field":"name","order":"ASC"},"filter":{"smart":false}}': { ids: ['sample-id1', 'sample-id2'], total: 2, @@ -70,7 +70,7 @@ describe('SelectPlaylistInput', () => { await waitFor(() => { expect(mockDataProvider.getList).toHaveBeenCalledWith('playlist', { - filter: {}, + filter: { smart: false }, pagination: { page: 1, perPage: -1 }, sort: { field: 'name', order: 'ASC' }, })