diff --git a/tests/js/workspace-saved-views.test.js b/tests/js/workspace-saved-views.test.js index 9a281fe2..172142d2 100644 --- a/tests/js/workspace-saved-views.test.js +++ b/tests/js/workspace-saved-views.test.js @@ -231,3 +231,8 @@ test('a Library view keeps untagged, and untagged never travels with tags (#444) assert.equal(libraryViewState(shelf).tag_mode, 'untagged'); assert.deepEqual(libraryFilters(libraryViewState(shelf)), shelf); }); + +test('a shelf without the #444 filters saves their defaults', async () => { + const { libraryViewState } = await source; + assert.deepEqual(libraryViewState({ text: '', category: '', sort: 'newest', tags: [] }), LIBRARY_DEFAULTS); +}); diff --git a/web/js/workspace/saved-views.mjs b/web/js/workspace/saved-views.mjs index fa370575..93c9dccd 100644 --- a/web/js/workspace/saved-views.mjs +++ b/web/js/workspace/saved-views.mjs @@ -121,7 +121,8 @@ export function libraryFilters(state) { } export function libraryViewState(filters) { return normalizeViewState('library', { q: filters.text, category: filters.category, sort: filters.sort, tags: filters.tags, - tag_mode: filters.tagMode ?? 'all', folder: filters.folder ?? '' }); + // A filter the shelf lacks (undefined) takes its key's default in normalizeViewState. + tag_mode: filters.tagMode, folder: filters.folder }); } /**