fix: 下载bug

This commit is contained in:
zx 2024-04-22 18:47:37 +08:00
parent 6c12a4e5a8
commit 95b38c8578
3 changed files with 22 additions and 18 deletions

View File

@ -107,14 +107,14 @@ export default forwardRef<OnlineListType, OnlineListProps>(({
<ListMusicAdd ref={listMusicAddRef} onAdded={() => { hancelExitSelect() }} /> <ListMusicAdd ref={listMusicAddRef} onAdded={() => { hancelExitSelect() }} />
<ListMusicMultiAdd ref={listMusicMultiAddRef} onAdded={() => { hancelExitSelect() }} /> <ListMusicMultiAdd ref={listMusicMultiAddRef} onAdded={() => { hancelExitSelect() }} />
<MusicDownloadModal ref={musicDownloadModalRef} <MusicDownloadModal ref={musicDownloadModalRef}
onDownloadInfo={(info) => { handelDownload(info.musicInfo, "128k") }} /> onDownloadInfo={(info) => { }} />
<ListMenu <ListMenu
ref={listMenuRef} ref={listMenuRef}
onPlay={info => { handlePlay(info.musicInfo) }} onPlay={info => { handlePlay(info.musicInfo) }}
onPlayLater={info => { hancelExitSelect(); handlePlayLater(info.musicInfo, info.selectedList, hancelExitSelect) }} onPlayLater={info => { hancelExitSelect(); handlePlayLater(info.musicInfo, info.selectedList, hancelExitSelect) }}
onCopyName={info => { handleShare(info.musicInfo) }} onCopyName={info => { handleShare(info.musicInfo) }}
onAdd={handleAddMusic} onAdd={handleAddMusic}
onDownload={info => musicDownloadModalRef.current?.show(info)} onDownload={info => musicDownloadModalRef.current?.show(info.musicInfo)}
onDislikeMusic={info => { void handleDislikeMusic(info.musicInfo) }} onDislikeMusic={info => { void handleDislikeMusic(info.musicInfo) }}
/> />
{/* <LoadingMask ref={loadingMaskRef} /> */} {/* <LoadingMask ref={loadingMaskRef} /> */}

View File

@ -9,7 +9,7 @@ import { handelDownload } from './listAction'
import { getOtherSource } from '@/core/music/utils' import { getOtherSource } from '@/core/music/utils'
interface TitleType { interface TitleType {
updateTitle: (musicInfo: SelectInfo['musicInfo']) => void updateTitle: (musicInfo: LX.Music.MusicInfo) => void
} }
const Title = forwardRef<TitleType, {}>((props, ref) => { const Title = forwardRef<TitleType, {}>((props, ref) => {
const [title, setTitle] = useState('') const [title, setTitle] = useState('')
@ -40,11 +40,11 @@ export interface SelectInfo {
const initSelectInfo = {} const initSelectInfo = {}
interface MusicDownloadModalProps { interface MusicDownloadModalProps {
onDownloadInfo: (info: SelectInfo) => void onDownloadInfo: (info: LX.Music.MusicInfo) => void
} }
export interface MusicDownloadModalType { export interface MusicDownloadModalType {
show: (listInfo: any) => void show: (info: LX.Music.MusicInfo) => void
} }
@ -52,7 +52,7 @@ export default forwardRef<MusicDownloadModalType, MusicDownloadModalProps>(({ on
const alertRef = useRef<ConfirmAlertType>(null) const alertRef = useRef<ConfirmAlertType>(null)
const titleRef = useRef<TitleType>(null) const titleRef = useRef<TitleType>(null)
const inputRef = useRef<PositionInputType>(null) const inputRef = useRef<PositionInputType>(null)
const selectedInfo = useRef<SelectInfo>(initSelectInfo as SelectInfo) const selectedInfo = useRef<LX.Music.MusicInfo>(initSelectInfo as LX.Music.MusicInfo)
const [selectedQuality, setSelectedQuality] = useState<LX.Quality>("128k"); const [selectedQuality, setSelectedQuality] = useState<LX.Quality>("128k");
const [playQualityList, setPlayQualityList] = useState<MusicOption[]>([]); const [playQualityList, setPlayQualityList] = useState<MusicOption[]>([]);
const [visible, setVisible] = useState(false) const [visible, setVisible] = useState(false)
@ -62,13 +62,15 @@ export default forwardRef<MusicDownloadModalType, MusicDownloadModalProps>(({ on
} }
const calcQualitys = () => { const calcQualitys = () => {
console.log("calcQualitys");
console.log("calcQualitys" + selectedInfo.current.name);
setPlayQualityList([]) setPlayQualityList([])
const map = new Map(); const map = new Map();
map.set("128k", "标准音质"); map.set("128k", "标准音质");
map.set("320k", "高品音质"); map.set("320k", "高品音质");
map.set("flac", "无损音质"); map.set("flac", "无损音质");
map.set("flac24bit", "Hi-Res音质"); map.set("flac24bit", "Hi-Res音质");
const qualitys = selectedInfo.current?.musicInfo.meta.qualitys; const qualitys = selectedInfo.current.meta.qualitys;
let qualityMap: QualityMap = {}; let qualityMap: QualityMap = {};
for (let index = 0; index < qualitys.length; index++) { for (let index = 0; index < qualitys.length; index++) {
@ -85,7 +87,7 @@ export default forwardRef<MusicDownloadModalType, MusicDownloadModalProps>(({ on
if (Object.values(qualityMap).length == map.size) { if (Object.values(qualityMap).length == map.size) {
return; return;
} }
getOtherSource(selectedInfo.current?.musicInfo, true).then(res => { getOtherSource(selectedInfo.current, true).then(res => {
if (res.length == 0) { if (res.length == 0) {
setPlayQualityList(Object.values(qualityMap)); setPlayQualityList(Object.values(qualityMap));
return; return;
@ -118,23 +120,26 @@ export default forwardRef<MusicDownloadModalType, MusicDownloadModalProps>(({ on
} }
const handleShow = () => { const handleShow = () => {
console.log("handleShow");
alertRef.current?.setVisible(true) alertRef.current?.setVisible(true)
requestAnimationFrame(() => { requestAnimationFrame(() => {
titleRef.current?.updateTitle(selectedInfo.current.musicInfo) titleRef.current?.updateTitle(selectedInfo.current)
setTimeout(() => { setTimeout(() => {
inputRef.current?.focus() inputRef.current?.focus()
}, 300) }, 300)
}) })
} }
useImperativeHandle(ref, () => ({ useImperativeHandle(ref, () => ({
show(listInfo) { show(info) {
selectedInfo.current = listInfo console.log("useImperativeHandle");
console.log(info);
selectedInfo.current = info
if (visible) { if (visible) {
calcQualitys(); calcQualitys();
handleShow() handleShow()
} } else {
else { calcQualitys();
setVisible(true) setVisible(true)
requestAnimationFrame(() => { requestAnimationFrame(() => {
handleShow() handleShow()
@ -146,8 +151,7 @@ export default forwardRef<MusicDownloadModalType, MusicDownloadModalProps>(({ on
const handleDownloadMusic = () => { const handleDownloadMusic = () => {
setSelectedQuality("128k"); setSelectedQuality("128k");
alertRef.current?.setVisible(false) alertRef.current?.setVisible(false)
handelDownload(selectedInfo.current?.musicInfo, selectedQuality); handelDownload(selectedInfo.current, selectedQuality);
onDownloadInfo(selectedInfo.current);
} }
interface MusicOption { interface MusicOption {

View File

@ -152,7 +152,7 @@ export default () => {
<MusicPositionModal ref={musicPositionModalRef} <MusicPositionModal ref={musicPositionModalRef}
onUpdatePosition={(info, postion) => { handleUpdateMusicPosition(postion, info.listId, info.musicInfo, info.selectedList, hancelExitSelect) }} /> onUpdatePosition={(info, postion) => { handleUpdateMusicPosition(postion, info.listId, info.musicInfo, info.selectedList, hancelExitSelect) }} />
<MusicDownloadModal ref={musicDownloadModalRef} <MusicDownloadModal ref={musicDownloadModalRef}
onDownloadInfo={(info) => { handelDownload(info.musicInfo, "128k") }} /> onDownloadInfo={(info) => { }} />
<ListMenu <ListMenu
ref={listMenuRef} ref={listMenuRef}
onPlay={info => { handlePlay(info.listId, info.index) }} onPlay={info => { handlePlay(info.listId, info.index) }}
@ -160,7 +160,7 @@ export default () => {
onRemove={info => { hancelExitSelect(); handleRemove(info.listId, info.musicInfo, info.selectedList, hancelExitSelect) }} onRemove={info => { hancelExitSelect(); handleRemove(info.listId, info.musicInfo, info.selectedList, hancelExitSelect) }}
onDislikeMusic={info => { void handleDislikeMusic(info.musicInfo) }} onDislikeMusic={info => { void handleDislikeMusic(info.musicInfo) }}
onCopyName={info => { handleShare(info.musicInfo) }} onCopyName={info => { handleShare(info.musicInfo) }}
onDownload={info => musicDownloadModalRef.current?.show(info)} onDownload={info => musicDownloadModalRef.current?.show(info.musicInfo)}
onAdd={handleAddMusic} onAdd={handleAddMusic}
onMove={handleMoveMusic} onMove={handleMoveMusic}
onEditMetadata={handleEditMetadata} onEditMetadata={handleEditMetadata}