diff --git a/ui/src/App.jsx b/ui/src/App.jsx
index 54b70c039..9ff15f377 100644
--- a/ui/src/App.jsx
+++ b/ui/src/App.jsx
@@ -36,6 +36,8 @@ import config, { shareInfo } from './config'
import { keyMap } from './hotkeys'
import useChangeThemeColor from './useChangeThemeColor'
import SharePlayer from './share/SharePlayer'
+import { HTML5Backend } from 'react-dnd-html5-backend'
+import { DndProvider } from 'react-dnd'
const history = createHashHistory()
@@ -136,7 +138,9 @@ const AppWithHotkeys = () => {
}
return (
-
+
+
+
)
}
diff --git a/ui/src/audioplayer/AudioTitle.jsx b/ui/src/audioplayer/AudioTitle.jsx
index c4b6fd2b0..707e27df7 100644
--- a/ui/src/audioplayer/AudioTitle.jsx
+++ b/ui/src/audioplayer/AudioTitle.jsx
@@ -4,17 +4,28 @@ import { Link } from 'react-router-dom'
import clsx from 'clsx'
import { QualityInfo } from '../common'
import useStyle from './styles'
+import { useDrag } from 'react-dnd'
+import { DraggableTypes } from '../consts'
const AudioTitle = React.memo(({ audioInfo, gainInfo, isMobile }) => {
const classes = useStyle()
const className = classes.audioTitle
const isDesktop = useMediaQuery('(min-width:810px)')
- if (!audioInfo.song) {
+ const song = audioInfo.song
+ const [, dragSongRef] = useDrag(
+ () => ({
+ type: DraggableTypes.SONG,
+ item: { ids: [song?.id] },
+ options: { dropEffect: 'copy' },
+ }),
+ [song],
+ )
+
+ if (!song) {
return ''
}
- const song = audioInfo.song
const qi = {
suffix: song.suffix,
bitRate: song.bitRate,
@@ -32,6 +43,7 @@ const AudioTitle = React.memo(({ audioInfo, gainInfo, isMobile }) => {
: `/album/${song.albumId}/show`
}
className={className}
+ ref={dragSongRef}
>
diff --git a/ui/src/layout/Layout.jsx b/ui/src/layout/Layout.jsx
index 0ae30c2e8..e3f13d25f 100644
--- a/ui/src/layout/Layout.jsx
+++ b/ui/src/layout/Layout.jsx
@@ -3,8 +3,6 @@ import { useDispatch, useSelector } from 'react-redux'
import { Layout as RALayout, toggleSidebar } from 'react-admin'
import { makeStyles } from '@material-ui/core/styles'
import { HotKeys } from 'react-hotkeys'
-import { HTML5Backend } from 'react-dnd-html5-backend'
-import { DndProvider } from 'react-dnd'
import Menu from './Menu'
import AppBar from './AppBar'
import Notification from './Notification'
@@ -25,18 +23,16 @@ const Layout = (props) => {
}
return (
-
-
-
-
-
+
+
+
)
}