修复声音输出设备更改时后的自动暂停播放设置无效的问题

pull/1155/head
lyswhut 2023-01-18 14:04:04 +08:00
parent 900bdd3afe
commit 4fa88dd7a0
2 changed files with 22 additions and 34 deletions

View File

@ -1,9 +1,4 @@
### 修复
- 修复备份文件导入指引无法识别v2配置的问题
- 修复从搜索界面进入歌单详情后,若启用强迫症设置的清空功能会导致意外清空搜索框、搜索列表的问题
- 修复桌面歌词在启用卡拉OK歌词后字体边缘可能被截断的问题特别是纵向歌词某些字的边角被截断导致后面的阴影露出来或阴影不均匀的问题
- 修复桌面歌词启用歌词缩放后的阴影显示问题
- 修复Linux armv7l系统如树莓派下无法启动的问题与修复Linux arm64的方法一样采用内置预编译模块的方式修复
- 修复备份与恢复的列表导入列表信息设置逻辑问题与潜在导入问题
- 修复声音输出设备更改时后的自动暂停播放设置无效的问题

View File

@ -16,24 +16,22 @@ export default () => {
let prevDeviceLabel: string | null = null
let prevDeviceId = ''
const setMediaDevice = async(mediaDeviceId: string) => {
let label = prevDeviceLabel
const getMediaDevice = async(deviceId: string) => {
const devices = await getDevices()
let device = devices.find(device => device.deviceId === mediaDeviceId)
if (device) {
mediaDeviceId = device.deviceId
label = device.label
} else {
mediaDeviceId = 'default'
device = devices.find(device => device.deviceId === mediaDeviceId)
if (device) label = device.label
let device = devices.find(device => device.deviceId === deviceId)
if (!device) {
deviceId = 'default'
device = devices.find(device => device.deviceId === deviceId)
}
return device ? { label: device.label, deviceId: device.deviceId } : { label: '', deviceId: '' }
}
const setMediaDevice = async(deviceId: string, label: string) => {
prevDeviceLabel = label
// console.log(device)
setMediaDeviceId(mediaDeviceId).then(() => {
prevDeviceId = mediaDeviceId
saveMediaDeviceId(mediaDeviceId)
setMediaDeviceId(deviceId).then(() => {
prevDeviceId = deviceId
saveMediaDeviceId(deviceId)
}).catch((err: any) => {
console.log(err)
setMediaDeviceId('default').finally(() => {
@ -43,13 +41,13 @@ export default () => {
})
}
const handleDeviceChangeStopPlay = (device: MediaDeviceInfo, mediaDeviceId: string) => {
const handleDeviceChangeStopPlay = (label: string) => {
// console.log(device)
// console.log(this.appSetting.player['isMediaDeviceRemovedStopPlay,'] this.isPlay, device.label, this.prevDeviceLabel)
// console.log(appSetting['player.isMediaDeviceRemovedStopPlay'], isPlay.value, label, prevDeviceLabel)
if (
appSetting['player.isMediaDeviceRemovedStopPlay'] &&
isPlay.value &&
device.label != prevDeviceLabel
label != prevDeviceLabel
) {
window.lx.isPlayedStop = true
pause()
@ -57,26 +55,21 @@ export default () => {
}
const handleMediaListChange = async() => {
let mediaDeviceId = appSetting['player.mediaDeviceId']
const devices = await getDevices()
let device = devices.find(device => device.deviceId === mediaDeviceId)
device ??= devices.find(device => device.deviceId === 'default')
// @ts-expect-error
device ??= { label: '', deviceId: '' }
const mediaDeviceId = appSetting['player.mediaDeviceId']
const device = await getMediaDevice(mediaDeviceId)
// @ts-expect-error
handleDeviceChangeStopPlay(device, mediaDeviceId)
handleDeviceChangeStopPlay(device.label)
void setMediaDevice(device!.deviceId)
if (device.deviceId == mediaDeviceId) prevDeviceLabel = device.label
else void setMediaDevice(device.deviceId, device.label)
}
watch(() => appSetting['player.mediaDeviceId'], (id) => {
if (prevDeviceId == id) return
void setMediaDevice(id)
void getMediaDevice(id).then(async({ deviceId, label }) => setMediaDevice(deviceId, label))
})
void setMediaDevice(appSetting['player.mediaDeviceId'])
void getMediaDevice(appSetting['player.mediaDeviceId']).then(async({ deviceId, label }) => setMediaDevice(deviceId, label))
// eslint-disable-next-line @typescript-eslint/no-misused-promises
navigator.mediaDevices.addEventListener('devicechange', handleMediaListChange)