修复在线列表、我的列表内的歌曲批量操作后,没有自动取消选择的问题

This commit is contained in:
lyswhut 2023-06-04 16:48:43 +08:00
parent cbe48bb873
commit 1bbc417f19
7 changed files with 42 additions and 29 deletions

View File

@ -7,3 +7,4 @@
- 修复wy歌单分类切换无效的问题
- 修复因插入数字类型的ID导致其意外在末尾追加 .0 导致列表数据异常的问题同时也可能导致同步数据丢失的问题此问题会影响PC端要完全修复这个问题还需要同时将PC端、同步服务更新到最新版本
- 修复在线列表、我的列表内的歌曲批量操作后,没有自动取消选择的问题

View File

@ -15,18 +15,19 @@ export interface SelectInfo {
}
const initSelectInfo = {}
// export interface MusicAddModalProps {
// onRename: (listInfo: LX.List.UserListInfo) => void
// onImport: (listInfo: LX.List.MyListInfo, index: number) => void
// onExport: (listInfo: LX.List.MyListInfo, index: number) => void
// onSync: (listInfo: LX.List.UserListInfo) => void
// onRemove: (listInfo: LX.List.UserListInfo) => void
// }
export interface MusicAddModalProps {
onAdded?: () => void
// onRename: (listInfo: LX.List.UserListInfo) => void
// onImport: (listInfo: LX.List.MyListInfo, index: number) => void
// onExport: (listInfo: LX.List.MyListInfo, index: number) => void
// onSync: (listInfo: LX.List.UserListInfo) => void
// onRemove: (listInfo: LX.List.UserListInfo) => void
}
export interface MusicAddModalType {
show: (info: SelectInfo) => void
}
export default forwardRef<MusicAddModalType, {}>((props, ref) => {
export default forwardRef<MusicAddModalType, MusicAddModalProps>(({ onAdded }, ref) => {
const t = useI18n()
const dialogRef = useRef<DialogType>(null)
const [selectInfo, setSelectInfo] = useState<SelectInfo>(initSelectInfo as SelectInfo)
@ -54,6 +55,7 @@ export default forwardRef<MusicAddModalType, {}>((props, ref) => {
[selectInfo.musicInfo as LX.Music.MusicInfo],
settingState.setting['list.addMusicLocationType'],
).then(() => {
onAdded?.()
toast(t('list_edit_action_tip_move_success'))
}).catch(() => {
toast(t('list_edit_action_tip_move_failed'))
@ -63,6 +65,7 @@ export default forwardRef<MusicAddModalType, {}>((props, ref) => {
[selectInfo.musicInfo as LX.Music.MusicInfo],
settingState.setting['list.addMusicLocationType'],
).then(() => {
onAdded?.()
toast(t('list_edit_action_tip_add_success'))
}).catch(() => {
toast(t('list_edit_action_tip_add_failed'))

View File

@ -1,11 +1,14 @@
import React, { useRef, useImperativeHandle, forwardRef, useState } from 'react'
import Modal, { type MusicAddModalType as ModalType, type SelectInfo } from './MusicAddModal'
import Modal, { type MusicAddModalType as ModalType, type MusicAddModalProps as ModalProps, type SelectInfo } from './MusicAddModal'
export interface MusicAddModalProps {
onAdded?: ModalProps['onAdded']
}
export interface MusicAddModalType {
show: (info: SelectInfo) => void
}
export default forwardRef<MusicAddModalType, {}>((props, ref) => {
export default forwardRef<MusicAddModalType, MusicAddModalProps>(({ onAdded }, ref) => {
const musicAddModalRef = useRef<ModalType>(null)
const [visible, setVisible] = useState(false)
@ -23,7 +26,7 @@ export default forwardRef<MusicAddModalType, {}>((props, ref) => {
return (
visible
? <Modal ref={musicAddModalRef} />
? <Modal ref={musicAddModalRef} onAdded={onAdded} />
: null
)
})

View File

@ -15,18 +15,19 @@ export interface SelectInfo {
}
const initSelectInfo = { selectedList: [], listId: '', isMove: false }
// export interface MusicMultiAddModalProps {
// onRename: (listInfo: LX.List.UserListInfo) => void
// onImport: (listInfo: LX.List.MyListInfo, index: number) => void
// onExport: (listInfo: LX.List.MyListInfo, index: number) => void
// onSync: (listInfo: LX.List.UserListInfo) => void
// onRemove: (listInfo: LX.List.UserListInfo) => void
// }
export interface MusicMultiAddModalProps {
onAdded?: () => void
// onRename: (listInfo: LX.List.UserListInfo) => void
// onImport: (listInfo: LX.List.MyListInfo, index: number) => void
// onExport: (listInfo: LX.List.MyListInfo, index: number) => void
// onSync: (listInfo: LX.List.UserListInfo) => void
// onRemove: (listInfo: LX.List.UserListInfo) => void
}
export interface MusicMultiAddModalType {
show: (info: SelectInfo) => void
}
export default forwardRef<MusicMultiAddModalType, {}>((props, ref) => {
export default forwardRef<MusicMultiAddModalType, MusicMultiAddModalProps>(({ onAdded }, ref) => {
const t = useI18n()
const dialogRef = useRef<DialogType>(null)
const [selectInfo, setSelectInfo] = useState<SelectInfo>(initSelectInfo)
@ -54,6 +55,7 @@ export default forwardRef<MusicMultiAddModalType, {}>((props, ref) => {
[...selectInfo.selectedList],
settingState.setting['list.addMusicLocationType'],
).then(() => {
onAdded?.()
toast(t('list_edit_action_tip_move_success'))
}).catch(() => {
toast(t('list_edit_action_tip_move_failed'))
@ -63,6 +65,7 @@ export default forwardRef<MusicMultiAddModalType, {}>((props, ref) => {
[...selectInfo.selectedList],
settingState.setting['list.addMusicLocationType'],
).then(() => {
onAdded?.()
toast(t('list_edit_action_tip_add_success'))
}).catch(() => {
toast(t('list_edit_action_tip_add_failed'))

View File

@ -1,11 +1,14 @@
import React, { useRef, useImperativeHandle, forwardRef, useState } from 'react'
import Modal, { type MusicMultiAddModalType as ModalType, type SelectInfo } from './MusicMultiAddModal'
import Modal, { type MusicMultiAddModalType as ModalType, type MusicMultiAddModalProps as ModalProps, type SelectInfo } from './MusicMultiAddModal'
export interface MusicAddModalProps {
onAdded?: ModalProps['onAdded']
}
export interface MusicMultiAddModalType {
show: (info: SelectInfo) => void
}
export default forwardRef<MusicMultiAddModalType, {}>((props, ref) => {
export default forwardRef<MusicMultiAddModalType, MusicAddModalProps>(({ onAdded }, ref) => {
const musicMultiAddModalRef = useRef<ModalType>(null)
const [visible, setVisible] = useState(false)
@ -23,7 +26,7 @@ export default forwardRef<MusicMultiAddModalType, {}>((props, ref) => {
return (
visible
? <Modal ref={musicMultiAddModalRef} />
? <Modal ref={musicMultiAddModalRef} onAdded={onAdded} />
: null
)
})

View File

@ -98,12 +98,12 @@ export default forwardRef<OnlineListType, OnlineListProps>(({
onExitSelectMode={hancelExitSelect}
/>
</View>
<ListMusicAdd ref={listMusicAddRef} />
<ListMusicMultiAdd ref={listMusicMultiAddRef} />
<ListMusicAdd ref={listMusicAddRef} onAdded={() => { hancelExitSelect() }} />
<ListMusicMultiAdd ref={listMusicMultiAddRef} onAdded={() => { hancelExitSelect() }} />
<ListMenu
ref={listMenuRef}
onPlay={info => { handlePlay(info.musicInfo) }}
onPlayLater={info => { handlePlayLater(info.musicInfo, info.selectedList, hancelExitSelect) }}
onPlayLater={info => { hancelExitSelect(); handlePlayLater(info.musicInfo, info.selectedList, hancelExitSelect) }}
onCopyName={info => { handleShare(info.musicInfo) }}
onAdd={handleAddMusic}
/>

View File

@ -130,15 +130,15 @@ export default () => {
onScrollToInfo={handleScrollToInfo}
/>
</View>
<ListMusicAdd ref={listMusicAddRef} />
<ListMusicMultiAdd ref={listMusicMultiAddRef} />
<ListMusicAdd ref={listMusicAddRef} onAdded={() => { hancelExitSelect() }} />
<ListMusicMultiAdd ref={listMusicMultiAddRef} onAdded={() => { hancelExitSelect() }} />
<MusicPositionModal ref={musicPositionModalRef}
onUpdatePosition={(info, postion) => { handleUpdateMusicPosition(postion, info.listId, info.musicInfo, info.selectedList, hancelExitSelect) }} />
<ListMenu
ref={listMenuRef}
onPlay={info => { handlePlay(info.listId, info.index) }}
onPlayLater={info => { handlePlayLater(info.listId, info.musicInfo, info.selectedList, hancelExitSelect) }}
onRemove={info => { handleRemove(info.listId, info.musicInfo, info.selectedList, hancelExitSelect) }}
onPlayLater={info => { hancelExitSelect(); handlePlayLater(info.listId, info.musicInfo, info.selectedList, hancelExitSelect) }}
onRemove={info => { hancelExitSelect(); handleRemove(info.listId, info.musicInfo, info.selectedList, hancelExitSelect) }}
onCopyName={info => { handleShare(info.musicInfo) }}
onAdd={handleAddMusic}
onMove={handleMoveMusic}