From 8bf47b89e4782c6f073b7d3a69cf049485e37d70 Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Sat, 14 May 2022 13:42:48 +1200 Subject: [PATCH] Applying URI setting to provider URI, fixes #810 --- src/js/util/selectors.js | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/js/util/selectors.js b/src/js/util/selectors.js index 1553d1f1..5d27ca71 100755 --- a/src/js/util/selectors.js +++ b/src/js/util/selectors.js @@ -12,6 +12,7 @@ const getLibraries = (state) => state.core.libraries; const getSearchResults = (state) => state.core.search_results; const getGridGlowEnabled = (state) => state.ui.grid_glow_enabled; const getSorts = (state) => state.ui.sort; +const getMopidySettings = (state) => state.mopidy; const makeItemSelector = (uri) => createSelector( [getItems], @@ -119,7 +120,7 @@ const providers = { albums: [ { scheme: 'local:', - uri: 'local:directory?type=album', + setting_name: 'library_albums_uri', title: i18n('services.mopidy.local'), }, { @@ -146,7 +147,7 @@ const providers = { artists: [ { scheme: 'local:', - uri: 'local:directory?type=artist&role=albumartist', + setting_name: 'library_artists_uri', title: i18n('services.mopidy.local'), }, { @@ -173,7 +174,7 @@ const providers = { tracks: [ { scheme: 'local:', - uri: 'local:directory?type=track', + setting_name: 'library_tracks_uri', title: i18n('services.mopidy.local'), }, { @@ -185,11 +186,18 @@ const providers = { }; const getProvider = (type, scheme) => providers[type]?.find((p) => p.scheme === scheme); const getUriSchemes = (state) => state.mopidy.uri_schemes || []; +const applyUriSettingToProviders = (filteredProviders, mopidySettings) => filteredProviders.map( + ({ setting_name, ...rest }) => ({ + uri: setting_name ? mopidySettings[setting_name] : undefined, + ...rest, + }), +); const makeProvidersSelector = (context) => createSelector( - [getUriSchemes], - (schemes) => { + [getUriSchemes, getMopidySettings], + (schemes, mopidySettings) => { if (!providers[context]) return []; - return providers[context].filter((p) => schemes.indexOf(p.scheme) > -1); + const results = providers[context].filter((p) => schemes.indexOf(p.scheme) > -1); + return applyUriSettingToProviders(results, mopidySettings); }, ); const makeSortSelector = (key, defaultField = 'sort_id') => createSelector(