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,