mirror of
https://github.com/antebudimir/feishin.git
synced 2026-01-01 02:13:33 +00:00
[enhancement]: Support toggling Album/Track view for gneres (#591)
* [enhancement]: Support toggling Album/Track view for gneres The _primary_ purpose of this PR is to enable viewing tracks OR albums for genres. This has a few requirements: 1. Ability to set default route for genres, **except** when already on song/album page 2. Ability to toggle between album and genre view 3. Fixed refresh for genre ID Additionally, there was some refactoring: - Since the *-list-headers had very similar functions for search, export that as a hook instead * also use hook for album artist * support switching albumartist tracks/albums * remove toggle on song/album list, simplify logic
This commit is contained in:
parent
595eba152a
commit
ba531505af
20 changed files with 336 additions and 158 deletions
|
|
@ -171,6 +171,11 @@ export enum BindingActions {
|
|||
ZOOM_OUT = 'zoomOut',
|
||||
}
|
||||
|
||||
export enum GenreTarget {
|
||||
ALBUM = 'album',
|
||||
TRACK = 'track',
|
||||
}
|
||||
|
||||
export interface SettingsState {
|
||||
discord: {
|
||||
clientId: string;
|
||||
|
|
@ -192,6 +197,7 @@ export interface SettingsState {
|
|||
defaultFullPlaylist: boolean;
|
||||
externalLinks: boolean;
|
||||
followSystemTheme: boolean;
|
||||
genreTarget: GenreTarget;
|
||||
homeItems: SortableItem<HomeItem>[];
|
||||
language: string;
|
||||
passwordStore?: string;
|
||||
|
|
@ -311,6 +317,7 @@ const initialState: SettingsState = {
|
|||
defaultFullPlaylist: true,
|
||||
externalLinks: true,
|
||||
followSystemTheme: false,
|
||||
genreTarget: GenreTarget.TRACK,
|
||||
homeItems,
|
||||
language: 'en',
|
||||
passwordStore: undefined,
|
||||
|
|
@ -604,6 +611,11 @@ export const useSettingsStore = create<SettingsSlice>()(
|
|||
state.playback.mpvProperties.audioSampleRateHz = 0;
|
||||
});
|
||||
},
|
||||
setGenreBehavior: (target: GenreTarget) => {
|
||||
set((state) => {
|
||||
state.general.genreTarget = target;
|
||||
});
|
||||
},
|
||||
setHomeItems: (items: SortableItem<HomeItem>[]) => {
|
||||
set((state) => {
|
||||
state.general.homeItems = items;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue