From 9022f05463e267e1e53fd944c9a647ff8cf532ba Mon Sep 17 00:00:00 2001 From: jeffvli Date: Tue, 8 Nov 2022 01:36:26 -0800 Subject: [PATCH] Move handlers to separate functions --- .../albums/routes/album-list-route.tsx | 126 +++++++++++------- 1 file changed, 76 insertions(+), 50 deletions(-) diff --git a/src/renderer/features/albums/routes/album-list-route.tsx b/src/renderer/features/albums/routes/album-list-route.tsx index b2954d9d9..d4a77b97d 100644 --- a/src/renderer/features/albums/routes/album-list-route.tsx +++ b/src/renderer/features/albums/routes/album-list-route.tsx @@ -1,6 +1,6 @@ /* eslint-disable no-plusplus */ -import { useState, useCallback, useMemo } from 'react'; -import { Group, Box, Slider } from '@mantine/core'; +import { useState, useCallback, useMemo, MouseEvent } from 'react'; +import { Group, Box } from '@mantine/core'; import { useDebouncedValue, useSetState, useToggle } from '@mantine/hooks'; import { useQueryClient } from '@tanstack/react-query'; import { AnimatePresence, motion } from 'framer-motion'; @@ -21,6 +21,7 @@ import { DropdownMenu, NumberInput, ScrollArea, + Slider, Paper, Text, VirtualGridAutoSizerContainer, @@ -168,6 +169,66 @@ export const AlbumListRoute = () => { 200 ); + const handleSetFilter = (e: MouseEvent) => { + if (!e.currentTarget?.value) return; + setFilters({ sortBy: e.currentTarget.value as AlbumSort }); + }; + + const handleSetOrder = (e: MouseEvent) => { + if (!e.currentTarget?.value) return; + setFilters({ orderBy: e.currentTarget.value as SortOrder }); + }; + + const handleSetServerFolder = (e: MouseEvent) => { + if (!e.currentTarget?.value) return; + const value = e.currentTarget.value as string; + if (filters.serverFolderId.includes(value)) { + setFilters({ + serverFolderId: filters.serverFolderId.filter((id) => id !== value), + }); + } else { + setFilters({ + serverFolderId: [...filters.serverFolderId, value], + }); + } + }; + + const handleToggleAdvancedFilters = () => { + toggleAdvFilter(); + }; + + const handleSetViewType = (e: MouseEvent) => { + if (!e.currentTarget?.value) return; + const type = e.currentTarget.value; + if (type === CardDisplayType.CARD) { + setPage('albums', { + ...page, + list: { + ...page.list, + display: CardDisplayType.CARD, + type: 'grid', + }, + }); + } else if (type === CardDisplayType.POSTER) { + setPage('albums', { + ...page, + list: { + ...page.list, + display: CardDisplayType.POSTER, + type: 'grid', + }, + }); + } else { + setPage('albums', { + ...page, + list: { + ...page.list, + type: 'list', + }, + }); + } + }; + return ( @@ -190,7 +251,8 @@ export const AlbumListRoute = () => { setFilters({ sortBy: filter.value })} + value={filter.value} + onClick={handleSetFilter} > {filter.name} @@ -198,7 +260,7 @@ export const AlbumListRoute = () => { toggleAdvFilter()} + onClick={handleToggleAdvancedFilters} > Advanced Filters @@ -218,7 +280,8 @@ export const AlbumListRoute = () => { setFilters({ orderBy: sort.value })} + value={sort.value} + onClick={handleSetOrder} > {sort.name} @@ -239,22 +302,8 @@ export const AlbumListRoute = () => { key={folder.id} $isActive={filters.serverFolderId.includes(folder.id)} closeMenuOnClick={false} - onClick={() => { - if (filters.serverFolderId.includes(folder.id)) { - setFilters({ - serverFolderId: filters.serverFolderId.filter( - (id) => id !== folder.id - ), - }); - } else { - setFilters({ - serverFolderId: [ - ...filters.serverFolderId, - folder.id, - ], - }); - } - }} + value={folder.id} + onClick={handleSetServerFolder} > {folder.name} @@ -283,16 +332,8 @@ export const AlbumListRoute = () => { page.list.type === 'grid' && page.list.display === CardDisplayType.CARD } - onClick={() => - setPage('albums', { - ...page, - list: { - ...page.list, - display: CardDisplayType.CARD, - type: 'grid', - }, - }) - } + value={CardDisplayType.CARD} + onClick={handleSetViewType} > Card @@ -301,31 +342,16 @@ export const AlbumListRoute = () => { page.list.type === 'grid' && page.list.display === CardDisplayType.POSTER } - onClick={() => - setPage('albums', { - ...page, - list: { - ...page.list, - display: CardDisplayType.POSTER, - type: 'grid', - }, - }) - } + value={CardDisplayType.POSTER} + onClick={handleSetViewType} > Poster - setPage('albums', { - ...page, - list: { - ...page.list, - type: 'list', - }, - }) - } + value="list" + onClick={handleSetViewType} > List