From 4a64f5fe9b0accd2a6d3b3e6cd9ccbd9d0cb3620 Mon Sep 17 00:00:00 2001 From: jeffvli Date: Fri, 30 Dec 2022 21:31:35 -0800 Subject: [PATCH] Add play on double click for song list rows --- .../songs/components/song-list-content.tsx | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/renderer/features/songs/components/song-list-content.tsx b/src/renderer/features/songs/components/song-list-content.tsx index 079b1813..da973820 100644 --- a/src/renderer/features/songs/components/song-list-content.tsx +++ b/src/renderer/features/songs/components/song-list-content.tsx @@ -6,6 +6,7 @@ import type { GridReadyEvent, IDatasource, PaginationChangedEvent, + RowDoubleClickedEvent, } from '@ag-grid-community/core'; import type { AgGridReact as AgGridReactType } from '@ag-grid-community/react/lib/agGridReact'; import { Stack } from '@mantine/core'; @@ -32,6 +33,9 @@ import debounce from 'lodash/debounce'; import { openContextMenu } from '/@/renderer/features/context-menu'; import { SONG_CONTEXT_MENU_ITEMS } from '/@/renderer/features/context-menu/context-menu-items'; import sortBy from 'lodash/sortBy'; +import { useHandlePlayQueueAdd } from '/@/renderer/features/player/hooks/use-handle-playqueue-add'; +import { usePlayButtonBehavior } from '/@/renderer/store/settings.store'; +import { QueueSong } from '/@/renderer/api/types'; interface SongListContentProps { tableRef: MutableRefObject; @@ -45,6 +49,8 @@ export const SongListContent = ({ tableRef }: SongListContentProps) => { const pagination = useSongTablePagination(); const setPagination = useSetSongTablePagination(); const setTable = useSetSongTable(); + const handlePlayQueueAdd = useHandlePlayQueueAdd(); + const playButtonBehavior = usePlayButtonBehavior(); const isPaginationEnabled = page.display === ListDisplayType.TABLE_PAGINATED; @@ -180,6 +186,14 @@ export const SongListContent = ({ tableRef }: SongListContentProps) => { }); }; + const handleRowDoubleClick = (e: RowDoubleClickedEvent) => { + if (!e.data) return; + handlePlayQueueAdd({ + byData: [e.data], + play: playButtonBehavior, + }); + }; + return ( { onGridReady={onGridReady} onGridSizeChanged={handleGridSizeChange} onPaginationChanged={onPaginationChanged} + onRowDoubleClicked={handleRowDoubleClick} />