From 1f842b08e2aa5d8634cff960eba5fcf1d1aa3d92 Mon Sep 17 00:00:00 2001 From: Deluan Date: Sat, 31 Oct 2020 10:23:52 -0400 Subject: [PATCH] Remove duplicated code for SongBulkActions --- ui/src/album/AlbumShow.js | 4 ++-- .../{song => common}/AddToPlaylistButton.js | 0 ui/src/common/BatchPlayButton.js | 11 +++++----- .../SongBulkActions.js} | 21 ++++++++++++------- ui/src/common/index.js | 4 ++++ ui/src/song/SongBulkActions.js | 20 ------------------ ui/src/song/SongList.js | 2 +- 7 files changed, 26 insertions(+), 36 deletions(-) rename ui/src/{song => common}/AddToPlaylistButton.js (100%) rename ui/src/{album/AlbumSongBulkActions.js => common/SongBulkActions.js} (57%) delete mode 100644 ui/src/song/SongBulkActions.js diff --git a/ui/src/album/AlbumShow.js b/ui/src/album/AlbumShow.js index d1e9ff0fe..841a0f431 100644 --- a/ui/src/album/AlbumShow.js +++ b/ui/src/album/AlbumShow.js @@ -3,7 +3,7 @@ import { useGetOne } from 'react-admin' import AlbumDetails from './AlbumDetails' import { Title } from '../common' import { useStyles } from './styles' -import { AlbumSongBulkActions } from './AlbumSongBulkActions' +import { SongBulkActions } from '../common' import AlbumActions from './AlbumActions' import AlbumSongs from './AlbumSongs' @@ -33,7 +33,7 @@ const AlbumShow = (props) => { perPage={0} pagination={null} sort={{ field: 'discNumber asc, trackNumber asc', order: 'ASC' }} - bulkActionButtons={} + bulkActionButtons={} /> ) diff --git a/ui/src/song/AddToPlaylistButton.js b/ui/src/common/AddToPlaylistButton.js similarity index 100% rename from ui/src/song/AddToPlaylistButton.js rename to ui/src/common/AddToPlaylistButton.js diff --git a/ui/src/common/BatchPlayButton.js b/ui/src/common/BatchPlayButton.js index 52aae0e7f..9b65d2c7d 100644 --- a/ui/src/common/BatchPlayButton.js +++ b/ui/src/common/BatchPlayButton.js @@ -1,4 +1,5 @@ import React from 'react' +import PropTypes from 'prop-types' import { Button, useDataProvider, @@ -7,8 +8,6 @@ import { useNotify, } from 'react-admin' import { useDispatch } from 'react-redux' -import { addTracks } from '../audioplayer' -import { RiPlayListAddFill } from 'react-icons/ri' const BatchPlayButton = ({ resource, selectedIds, action, label, icon }) => { const dispatch = useDispatch() @@ -42,10 +41,10 @@ const BatchPlayButton = ({ resource, selectedIds, action, label, icon }) => { ) } -BatchPlayButton.defaultProps = { - action: addTracks, - label: 'resources.song.actions.addToQueue', - icon: , +BatchPlayButton.propTypes = { + action: PropTypes.func.isRequired, + label: PropTypes.string.isRequired, + icon: PropTypes.object.isRequired, } export default BatchPlayButton diff --git a/ui/src/album/AlbumSongBulkActions.js b/ui/src/common/SongBulkActions.js similarity index 57% rename from ui/src/album/AlbumSongBulkActions.js rename to ui/src/common/SongBulkActions.js index fd3d3d1a6..b06b36aeb 100644 --- a/ui/src/album/AlbumSongBulkActions.js +++ b/ui/src/common/SongBulkActions.js @@ -1,15 +1,15 @@ import React, { Fragment, useEffect } from 'react' import { useUnselectAll } from 'react-admin' -import { playNext, playTracks } from '../audioplayer' -import { RiPlayList2Fill } from 'react-icons/ri' +import { addTracks, playNext, playTracks } from '../audioplayer' +import { RiPlayList2Fill, RiPlayListAddFill } from 'react-icons/ri' import PlayArrowIcon from '@material-ui/icons/PlayArrow' -import { BatchPlayButton } from '../common' -import AddToPlaylistButton from '../song/AddToPlaylistButton' +import { BatchPlayButton } from './index' +import AddToPlaylistButton from './AddToPlaylistButton' -export const AlbumSongBulkActions = (props) => { +const SongBulkActions = (props) => { const unselectAll = useUnselectAll() useEffect(() => { - unselectAll('albumSong') + unselectAll(props.resource) // eslint-disable-next-line }, []) return ( @@ -26,8 +26,15 @@ export const AlbumSongBulkActions = (props) => { label={'resources.song.actions.playNext'} icon={} /> - + } + /> ) } + +export default SongBulkActions diff --git a/ui/src/common/index.js b/ui/src/common/index.js index 4e6535204..1bba50b92 100644 --- a/ui/src/common/index.js +++ b/ui/src/common/index.js @@ -4,6 +4,8 @@ import BitrateField from './BitrateField' import Pagination from './Pagination' import PlayButton from './PlayButton' import BatchPlayButton from './BatchPlayButton' +import SongBulkActions from './SongBulkActions' +import AddToPlaylistButton from './AddToPlaylistButton' import SimpleList from './SimpleList' import RangeField, { formatRange } from './RangeField' import ArtistLinkField, { useGetHandleArtistClick } from './ArtistLinkField' @@ -29,6 +31,8 @@ export { List, PlayButton, BatchPlayButton, + SongBulkActions, + AddToPlaylistButton, SimpleList, RangeField, SongDetails, diff --git a/ui/src/song/SongBulkActions.js b/ui/src/song/SongBulkActions.js deleted file mode 100644 index 1da9caf0b..000000000 --- a/ui/src/song/SongBulkActions.js +++ /dev/null @@ -1,20 +0,0 @@ -import React, { Fragment } from 'react' -import { BatchPlayButton } from '../common' -import AddToPlaylistButton from './AddToPlaylistButton' -import { RiPlayList2Fill } from 'react-icons/ri' -import { playNext } from '../audioplayer' - -export const SongBulkActions = (props) => { - return ( - - } - /> - - - - ) -} diff --git a/ui/src/song/SongList.js b/ui/src/song/SongList.js index d6b0822cc..6b832d274 100644 --- a/ui/src/song/SongList.js +++ b/ui/src/song/SongList.js @@ -20,7 +20,7 @@ import { } from '../common' import { useDispatch } from 'react-redux' import { setTrack } from '../audioplayer' -import { SongBulkActions } from './SongBulkActions' +import { SongBulkActions } from '../common' import { SongListActions } from './SongListActions' import { AlbumLinkField } from './AlbumLinkField' import AddToPlaylistDialog from '../dialogs/AddToPlaylistDialog'