新增设置-播放设置-点击相同列表内的歌曲切歌时是否清空已播放列表

This commit is contained in:
lyswhut 2023-09-05 12:50:09 +08:00
parent 050949f183
commit 50ae77cd57
8 changed files with 50 additions and 3 deletions

View File

@ -15,6 +15,7 @@
- 新增是否允许通过歌词调整播放进度功能,默认关闭,可到播放详情页右上角设置开启
- 新增“不喜欢歌曲”功能,可以在我的列表或者在线列表内歌曲的右击菜单使用,还可以去“设置-其他”手动编辑不喜欢规则,注:“上一曲”、“下一曲”功能将跳过符合“不喜欢歌曲”规则的歌曲,但你仍可以手动播放这些歌曲
- 新增设置-播放设置-是否启用音频卸载,该设置之前默认是启用的,现在添加开关允许将其关闭,若出现播放器问题可尝试将其关闭
- 新增设置-播放设置-点击相同列表内的歌曲切歌时是否清空已播放列表(随机模式下列表内所有歌曲会重新参与随机)选项,默认关闭
### 优化
@ -41,6 +42,10 @@
- 修复kg无评论时的加载处理问题
- 修复顺序播放时播放完列表的最后一首歌播放按钮状态没有更新的问题(#300
### 变更
- 随机模式下,通过点击与播放列表相同的列表切歌时,将不再清空已播放列表,即已播放的歌曲不再重新参与随机,若想恢复之前的行为可以去设置-播放设置启用清空已播放列表选项
### 其他
- 更新 React native 到 v0.72.4

View File

@ -20,6 +20,7 @@ const defaultSetting: LX.AppSetting = {
'player.cacheSize': '1024',
'player.timeoutExit': '',
'player.timeoutExitPlayed': true,
'player.isAutoCleanPlayedList': false,
'player.isHandleAudioFocus': true,
'player.isEnableAudioOffload': true,
'player.isShowLyricTranslation': false,

View File

@ -243,9 +243,10 @@ const handlePlay = async() => {
*/
export const playList = async(listId: string, index: number) => {
await pause()
const prevListId = playerState.playInfo.playerListId
setPlayListId(listId)
setPlayMusicInfo(listId, getList(listId)[index])
clearPlayedList()
if (settingState.setting['player.isAutoCleanPlayedList'] || prevListId != listId) clearPlayedList()
clearTempPlayeList()
await handlePlay()
}

View File

@ -143,7 +143,6 @@
"search_hot_search": "popular searches",
"search_type_music": "Music",
"search_type_songlist": "Song list",
"setting_dislike_list_tips": "1. If there is a \"@\" symbol in the song or singer's name, you need to replace it with \"#\"\n2. Specify a song of a singer: <Name>@<Singer>\n3. Specify a song: <Name>\n4. Specify a certain singer:@<Singer>",
"setting__other_dislike_list": "Dislike song rule",
"setting__other_dislike_list_label": "Number of rules: {num}",
"setting__other_dislike_list_saved_tip": "Saved",
@ -213,6 +212,7 @@
"setting_basic_theme_auto_theme": "Follow the system light and dark mode to switch themes",
"setting_basic_theme_hide_bg_dark": "Hide black theme",
"setting_basic_theme_more_btn_show": "Expand themes",
"setting_dislike_list_tips": "1. If there is a \"@\" symbol in the song or singer's name, you need to replace it with \"#\"\n2. Specify a song of a singer: <Name>@<Singer>\n3. Specify a song: <Name>\n4. Specify a certain singer:@<Singer>",
"setting_list": "List settings",
"setting_list_add_music_location_type": "Position when the song was added to the list",
"setting_list_add_music_location_type_bottom": "Bottom",
@ -254,6 +254,7 @@
"setting_other_log_tip_clean_success": "Log cleaning completed",
"setting_other_log_tip_null": "The log is empty~",
"setting_play_audio_offload": "Enable audio offloading (to save power, if available)",
"setting_play_auto_clean_played_list": "Whether to clear the existing playlist when clicking the same list as the playlist to switch songs (all songs in the list in random mode will participate in the random again)",
"setting_play_cache_size": "Maximum cache size (MB)",
"setting_play_cache_size_no_cache": "Disabled cache",
"setting_play_cache_size_save_tip": "The cache setting is completed, it will take effect after restarting the application",

View File

@ -212,6 +212,7 @@
"setting_basic_theme_auto_theme": "跟随系统亮、暗模式切换主题",
"setting_basic_theme_hide_bg_dark": "隐藏黑色主题背景",
"setting_basic_theme_more_btn_show": "更多主题",
"setting_dislike_list_tips": "1. 每条一行,若歌曲或者歌手名字中存在“@”符号,需要将其替换成“#”\n2. 指定某歌手的某首歌:<歌曲名>@<歌手名>\n3. 指定某首歌:<歌曲名>\n4. 指定某歌手:@<歌手名>",
"setting_list": "列表设置",
"setting_list_add_music_location_type": "添加歌曲到列表时的位置",
"setting_list_add_music_location_type_bottom": "底部",
@ -238,7 +239,6 @@
"setting_lyric_desktop_theme": "歌词主题色",
"setting_lyric_desktop_toggle_anima": "显示歌词切换动画",
"setting_lyric_desktop_view_width": "窗口百分比宽度",
"setting_dislike_list_tips": "1. 每条一行,若歌曲或者歌手名字中存在“@”符号,需要将其替换成“#”\n2. 指定某歌手的某首歌:<歌曲名>@<歌手名>\n3. 指定某首歌:<歌曲名>\n4. 指定某歌手:@<歌手名>",
"setting_other": "其他",
"setting_other_cache": "缓存管理(包括歌曲、歌词、错误日志等缓存,没有歌曲播放相关的问题不建议清理)",
"setting_other_cache_clear_btn": "清理缓存",
@ -254,6 +254,7 @@
"setting_other_log_tip_clean_success": "日志清理完成",
"setting_other_log_tip_null": "日志是空的哦~",
"setting_play_audio_offload": "启用音频卸载(可节省耗电量,如果可用)",
"setting_play_auto_clean_played_list": "点击与播放列表相同的列表切歌时是否清空已播放列表(随机模式下列表内所有歌曲会重新参与随机)",
"setting_play_cache_size": "最大缓存大小MB",
"setting_play_cache_size_no_cache": "禁用缓存",
"setting_play_cache_size_save_tip": "缓存设置完毕,重启应用后生效",

View File

@ -0,0 +1,31 @@
import { updateSetting } from '@/core/common'
import { useI18n } from '@/lang'
import { createStyle } from '@/utils/tools'
import { memo } from 'react'
import { View } from 'react-native'
import { useSettingValue } from '@/store/setting/hook'
import CheckBoxItem from '../../components/CheckBoxItem'
export default memo(() => {
const t = useI18n()
const isAutoCleanPlayedList = useSettingValue('player.isAutoCleanPlayedList')
const setAutoCleanPlayedList = (isAutoCleanPlayedList: boolean) => {
updateSetting({ 'player.isAutoCleanPlayedList': isAutoCleanPlayedList })
}
return (
<View style={styles.content}>
<CheckBoxItem check={isAutoCleanPlayedList} onChange={setAutoCleanPlayedList} label={t('setting_play_auto_clean_played_list')} />
</View>
)
})
const styles = createStyle({
content: {
marginTop: 5,
},
})

View File

@ -5,6 +5,7 @@ import IsSavePlayTime from './IsSavePlayTime'
import IsPlayHighQuality from './IsPlayHighQuality'
import IsHandleAudioFocus from './IsHandleAudioFocus'
import IsEnableAudioOffload from './IsEnableAudioOffload'
import IsAutoCleanPlayedList from './IsAutoCleanPlayedList'
import IsShowNotificationImage from './IsShowNotificationImage'
import IsShowLyricTranslation from './IsShowLyricTranslation'
import IsShowLyricRoma from './IsShowLyricRoma'
@ -19,6 +20,7 @@ export default memo(() => {
return (
<Section title={t('setting_player')}>
<IsSavePlayTime />
<IsAutoCleanPlayedList />
<IsPlayHighQuality />
<IsHandleAudioFocus />
<IsEnableAudioOffload />

View File

@ -121,6 +121,11 @@ declare global {
*/
'player.timeoutExitPlayed': boolean
/**
*
*/
'player.isAutoCleanPlayedList': boolean
/**
*
*/