From bb2f8461edc17252d337016853674740466d19c4 Mon Sep 17 00:00:00 2001 From: Kendall Garner <17521368+kgarner7@users.noreply.github.com> Date: Wed, 15 May 2024 21:48:20 -0700 Subject: [PATCH] [enhancement]: support toggling feature carousel --- src/i18n/locales/en.json | 2 ++ .../features/home/routes/home-route.tsx | 5 +++-- .../components/general/control-settings.tsx | 22 +++++++++++++++++++ src/renderer/store/settings.store.ts | 2 ++ 4 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index 7cceeced..18f2039e 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -496,6 +496,8 @@ "globalMediaHotkeys_description": "enable or disable the usage of your system media hotkeys to control playback", "homeConfiguration": "home page configuration", "homeConfiguration_description": "configure what items are shown, and in what order, on the home page", + "homeFeature": "home featured carousel", + "homeFeature_description": "controls whether to show the large featured carousel on the home page", "hotkey_browserBack": "browser back", "hotkey_browserForward": "browser forward", "hotkey_favoriteCurrentSong": "favorite $t(common.currentSong)", diff --git a/src/renderer/features/home/routes/home-route.tsx b/src/renderer/features/home/routes/home-route.tsx index 564440db..10a6f78f 100644 --- a/src/renderer/features/home/routes/home-route.tsx +++ b/src/renderer/features/home/routes/home-route.tsx @@ -33,11 +33,12 @@ const HomeRoute = () => { const server = useCurrentServer(); const itemsPerPage = 15; const { windowBarStyle } = useWindowSettings(); - const { homeItems } = useGeneralSettings(); + const { homeFeature, homeItems } = useGeneralSettings(); const feature = useAlbumList({ options: { cacheTime: 1000 * 60, + enabled: homeFeature, staleTime: 1000 * 60, }, query: { @@ -249,7 +250,7 @@ const HomeRoute = () => { px="2rem" spacing="lg" > - + {homeFeature && } {sortedCarousel.map((carousel) => ( { isHidden: false, title: t('setting.genreBehavior', { postProcess: 'sentenceCase' }), }, + { + control: ( + + setSettings({ + general: { + ...settings, + homeFeature: e.currentTarget.checked, + }, + }) + } + /> + ), + description: t('setting.homeFeature', { + context: 'description', + postProcess: 'sentenceCase', + }), + isHidden: false, + title: t('setting.homeFeature', { postProcess: 'sentenceCase' }), + }, ]; return ; diff --git a/src/renderer/store/settings.store.ts b/src/renderer/store/settings.store.ts index e3943204..529450e3 100644 --- a/src/renderer/store/settings.store.ts +++ b/src/renderer/store/settings.store.ts @@ -198,6 +198,7 @@ export interface SettingsState { externalLinks: boolean; followSystemTheme: boolean; genreTarget: GenreTarget; + homeFeature: boolean; homeItems: SortableItem[]; language: string; passwordStore?: string; @@ -319,6 +320,7 @@ const initialState: SettingsState = { externalLinks: true, followSystemTheme: false, genreTarget: GenreTarget.TRACK, + homeFeature: true, homeItems, language: 'en', passwordStore: undefined,