diff --git a/src/pages/settings/components/Theming/ThemePlaylists/ThemePlaylists.tsx b/src/pages/settings/components/Theming/ThemePlaylists/ThemePlaylists.tsx index 8ccc0b4..43bdaf5 100644 --- a/src/pages/settings/components/Theming/ThemePlaylists/ThemePlaylists.tsx +++ b/src/pages/settings/components/Theming/ThemePlaylists/ThemePlaylists.tsx @@ -2,7 +2,7 @@ import { Box, Group, LoadingOverlay, SimpleGrid, Stack, Text } from '@mantine/co import { useDebouncedValue, useDisclosure } from '@mantine/hooks'; import { NoItemsFound, SettingsHeader } from 'components'; import { useCommonHooks, useMutationAPI, useQueryAPI } from 'hooks'; -import { useEffect, useState, useMemo, useCallback } from 'react'; +import { useCallback, useEffect, useMemo, useState } from 'react'; import { FiChevronRight } from 'react-icons/fi'; import { textClasses } from 'styles'; import type { Theme, ThemePlaylist } from 'types'; @@ -23,11 +23,13 @@ export function ThemePlaylists() { const [debouncedSearch] = useDebouncedValue(searchValue, 500); const themePlaylists: ThemePlaylist[] = useMemo(() => { - return themePlaylistData?.filter( - (a: ThemePlaylist) => - a.name.toLowerCase().includes((debouncedSearch as string).toLowerCase()) || - a.name.includes('Time of Day'), - ) || []; + return ( + themePlaylistData?.filter( + (a: ThemePlaylist) => + a.name.toLowerCase().includes((debouncedSearch as string).toLowerCase()) || + a.name.includes('Time of Day'), + ) || [] + ); }, [themePlaylistData, debouncedSearch]); const defaultPlaylist: ThemePlaylist = { id: undefined, @@ -42,10 +44,13 @@ export function ThemePlaylists() { const { currentThemePlaylist, theme, isMobile } = useCommonHooks(); const [isLoading, setIsLoading] = useState(false); - const handleOpen = useCallback((playlist: ThemePlaylist) => { - setSelectedPlaylist(playlist); - open(); - }, [open]); + const handleOpen = useCallback( + (playlist: ThemePlaylist) => { + setSelectedPlaylist(playlist); + open(); + }, + [open], + ); const handleClose = useCallback(() => { setSelectedPlaylist(defaultPlaylist); @@ -67,17 +72,26 @@ export function ThemePlaylists() { } }, [debouncedSearch, searchValue]); - const allThemesIds = useMemo(() => - allThemeData?.map((a: Theme) => a.id) ?? [], - [allThemeData]); + const allThemesIds = useMemo( + () => allThemeData?.map((a: Theme) => a.id) ?? [], + [allThemeData], + ); - const backgroundsThemes = useMemo(() => - allThemeData?.filter((a: any) => !a.backgroundImage.toLowerCase().includes('none')) ?? [], - [allThemeData]); + const backgroundsThemes = useMemo( + () => + allThemeData?.filter( + (a: any) => !a.backgroundImage.toLowerCase().includes('none'), + ) ?? [], + [allThemeData], + ); - const noBackgroundsThemes = useMemo(() => - allThemeData?.filter((a: any) => a.backgroundImage.toLowerCase().includes('none')) ?? [], - [allThemeData]); + const noBackgroundsThemes = useMemo( + () => + allThemeData?.filter((a: any) => + a.backgroundImage.toLowerCase().includes('none'), + ) ?? [], + [allThemeData], + ); const timeOfDayPlaylist = useMemo(() => { const found = themePlaylists?.find((a: ThemePlaylist) => a.name === 'Time of Day'); @@ -89,26 +103,35 @@ export function ThemePlaylists() { }; }, [themePlaylists]); - const allStack = useMemo(() => ({ - id: undefined, - name: 'All', - default: 1, - themeList: `[${allThemesIds.join(',')}]`, - }), [allThemesIds]); + const allStack = useMemo( + () => ({ + id: undefined, + name: 'All', + default: 1, + themeList: `[${allThemesIds.join(',')}]`, + }), + [allThemesIds], + ); - const backgroundsStack = useMemo(() => ({ - id: undefined, - name: 'Backgrounds', - default: 1, - themeList: `[${backgroundsThemes.map((a: Theme) => a.id).join(',')}]`, - }), [backgroundsThemes]); + const backgroundsStack = useMemo( + () => ({ + id: undefined, + name: 'Backgrounds', + default: 1, + themeList: `[${backgroundsThemes.map((a: Theme) => a.id).join(',')}]`, + }), + [backgroundsThemes], + ); - const noBackgroundsStack = useMemo(() => ({ - id: undefined, - name: 'No Backgrounds', - default: 1, - themeList: `[${noBackgroundsThemes.map((a: Theme) => a.id).join(',')}]`, - }), [noBackgroundsThemes]); + const noBackgroundsStack = useMemo( + () => ({ + id: undefined, + name: 'No Backgrounds', + default: 1, + themeList: `[${noBackgroundsThemes.map((a: Theme) => a.id).join(',')}]`, + }), + [noBackgroundsThemes], + ); return ( @@ -153,7 +176,7 @@ export function ThemePlaylists() { /> {allThemeData && ( <> - + Defaults - - - - {'All' === currentThemePlaylist && ( - - )} - - - - - - - {'Backgrounds' === currentThemePlaylist && ( - - )} - - - - - - {'No Backgrounds' === currentThemePlaylist && ( - - )} - - - - - - {'Time of Day' === currentThemePlaylist && ( - - )} - - - - - - - User Made - - - - {themePlaylists.length > 1 ? ( - - {themePlaylists - .filter((playlist: ThemePlaylist) => playlist.default === 0) - .sort((a: ThemePlaylist, b: ThemePlaylist) => - a.name.toLocaleLowerCase() > b.name.toLocaleLowerCase() ? 1 : -1, - ) - .map((cardPlaylist: ThemePlaylist) => { - return ( - - {cardPlaylist.name === currentThemePlaylist && ( - - )} - - - - - ); - })} - - ) : ( - - + + + {'All' === currentThemePlaylist && ( + + )} + + + - )} - + + {'Backgrounds' === currentThemePlaylist && ( + + )} + + + + + + {'No Backgrounds' === currentThemePlaylist && ( + + )} + + + + + + {'Time of Day' === currentThemePlaylist && ( + + )} + + + + + + + + + + User Made + + + + {themePlaylists.length > 1 ? ( + + {themePlaylists + .filter((playlist: ThemePlaylist) => playlist.default === 0) + .sort((a: ThemePlaylist, b: ThemePlaylist) => + a.name.toLocaleLowerCase() > b.name.toLocaleLowerCase() ? 1 : -1, + ) + .map((cardPlaylist: ThemePlaylist) => { + return ( + + {cardPlaylist.name === currentThemePlaylist && ( + + )} + + + + + ); + })} + + ) : ( + + + + )} + + )}