Fix lag on albumList toggling (#1136)

This commit is contained in:
Aldrin Jenson 2021-05-26 18:12:39 +05:30 committed by GitHub
parent 4217c75c9f
commit 0941fbc0cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,5 +1,5 @@
import React from 'react' import React, { useEffect } from 'react'
import { useSelector } from 'react-redux' import { useSelector, useDispatch } from 'react-redux'
import { Redirect, useLocation } from 'react-router-dom' import { Redirect, useLocation } from 'react-router-dom'
import { import {
AutocompleteInput, AutocompleteInput,
@ -20,7 +20,7 @@ import AlbumGridView from './AlbumGridView'
import { AddToPlaylistDialog } from '../dialogs' import { AddToPlaylistDialog } from '../dialogs'
import albumLists, { defaultAlbumList } from './albumLists' import albumLists, { defaultAlbumList } from './albumLists'
import config from '../config' import config from '../config'
import useSelectedFields from '../common/useSelectedFields' import { setToggleableFields, setOmittedFields } from '../actions'
const AlbumFilter = (props) => { const AlbumFilter = (props) => {
const translate = useTranslate() const translate = useTranslate()
@ -66,6 +66,10 @@ const AlbumList = (props) => {
const albumView = useSelector((state) => state.albumView) const albumView = useSelector((state) => state.albumView)
const [perPage, perPageOptions] = useAlbumsPerPage(width) const [perPage, perPageOptions] = useAlbumsPerPage(width)
const location = useLocation() const location = useLocation()
const toggleableAlbumFields = useSelector(
(state) => state.settings.toggleableFields
)?.album
const dispatch = useDispatch()
const albumListType = location.pathname const albumListType = location.pathname
.replace(/^\/album/, '') .replace(/^\/album/, '')
@ -74,17 +78,24 @@ const AlbumList = (props) => {
// Workaround to force album columns to appear the first time. // Workaround to force album columns to appear the first time.
// See https://github.com/navidrome/navidrome/pull/923#issuecomment-833004842 // See https://github.com/navidrome/navidrome/pull/923#issuecomment-833004842
// TODO: Find a better solution // TODO: Find a better solution
useSelectedFields({
resource: 'album', useEffect(() => {
columns: { if (!toggleableAlbumFields) {
artist: 'artist', dispatch(
songCount: 'songCount', setToggleableFields({
playCount: 'playCount', album: {
year: 'year', artist: true,
duration: 'duration', songCount: true,
rating: 'rating', playCount: true,
}, year: true,
}) duration: true,
rating: true,
},
})
)
dispatch(setOmittedFields({ album: [] }))
}
}, [dispatch, toggleableAlbumFields])
// If it does not have filter/sort params (usually coming from Menu), // If it does not have filter/sort params (usually coming from Menu),
// reload with correct filter/sort params // reload with correct filter/sort params