新增所选音频输出设备被移除时是否暂停播放
This commit is contained in:
@@ -184,7 +184,7 @@ export const objectDeepMerge = (target, source) => {
|
||||
* @param {*} setting
|
||||
*/
|
||||
export const updateSetting = (setting, version) => {
|
||||
const defaultVersion = '1.0.23'
|
||||
const defaultVersion = '1.0.24'
|
||||
if (!version) {
|
||||
if (setting) {
|
||||
version = setting.version
|
||||
@@ -198,6 +198,7 @@ export const updateSetting = (setting, version) => {
|
||||
isShowTaskProgess: true,
|
||||
volume: 1,
|
||||
mediaDeviceId: 'default',
|
||||
isMediaDeviceRemovedStopPlay: false,
|
||||
},
|
||||
list: {
|
||||
isShowAlbumName: true,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
export const requestMsg = {
|
||||
fail: '请求异常😮,可以多试几次,若还是不行就换一首吧。。。',
|
||||
unachievable: '哦No😱...接口无法访问了!',
|
||||
timeout: '请求超时',
|
||||
// unachievable: '哦No😱...接口无法访问了!已帮你切换到临时接口,重试下看能不能播放吧~',
|
||||
notConnectNetwork: '无法连接到服务器',
|
||||
cancelRequest: '取消http请求',
|
||||
|
||||
@@ -46,44 +46,34 @@ const defaultHeaders = {
|
||||
* @param {*} options
|
||||
*/
|
||||
const buildHttpPromose = (url, options) => {
|
||||
let requestObj
|
||||
let cancelFn
|
||||
let isCancelled = false
|
||||
let p = new Promise((resolve, reject) => {
|
||||
cancelFn = reject
|
||||
let obj = {
|
||||
isCancelled: false,
|
||||
}
|
||||
obj.promise = new Promise((resolve, reject) => {
|
||||
obj.cancelFn = reject
|
||||
debugRequest && console.log(`\n---send request------${url}------------`)
|
||||
fetchData(url, options.method, options, (err, resp, body) => {
|
||||
// options.isShowProgress && window.api.hideProgress()
|
||||
debugRequest && console.log(`\n---response------${url}------------`)
|
||||
debugRequest && console.log(body)
|
||||
requestObj = null
|
||||
cancelFn = null
|
||||
if (err) {
|
||||
// console.log('出错', err.code)
|
||||
if (err.code === 'ETIMEDOUT' || err.code == 'ESOCKETTIMEDOUT') {
|
||||
const { promise, cancelHttp } = httpFetch(url, options)
|
||||
obj.cancelHttp = cancelHttp
|
||||
promise.then(resp => resolve(resp)).catch(err => reject(err))
|
||||
return
|
||||
}
|
||||
return reject(err)
|
||||
}
|
||||
obj.requestObj = null
|
||||
obj.cancelFn = null
|
||||
if (err) return reject(err)
|
||||
resolve(resp)
|
||||
}).then(ro => {
|
||||
requestObj = ro
|
||||
if (isCancelled) obj.cancelHttp()
|
||||
obj.requestObj = ro
|
||||
if (obj.isCancelled) obj.cancelHttp()
|
||||
console.log(obj.requestObj, obj.isCancelled)
|
||||
})
|
||||
})
|
||||
const obj = {
|
||||
promise: p,
|
||||
cancelHttp() {
|
||||
if (!requestObj) return isCancelled = true
|
||||
cancelFn(new Error(requestMsg.cancelRequest))
|
||||
cancelHttp(requestObj)
|
||||
requestObj = null
|
||||
cancelFn = null
|
||||
p = null
|
||||
},
|
||||
obj.cancelHttp = () => {
|
||||
console.log('cancel: ', obj)
|
||||
if (!obj.requestObj) return obj.isCancelled = true
|
||||
obj.cancelFn(new Error(requestMsg.cancelRequest))
|
||||
cancelHttp(obj.requestObj)
|
||||
obj.requestObj = null
|
||||
obj.cancelFn = null
|
||||
obj.promise = obj.cancelHttp = null
|
||||
}
|
||||
return obj
|
||||
}
|
||||
@@ -96,19 +86,22 @@ const buildHttpPromose = (url, options) => {
|
||||
export const httpFetch = (url, options = { method: 'get' }) => {
|
||||
const requestObj = buildHttpPromose(url, options)
|
||||
requestObj.promise = requestObj.promise.catch(err => {
|
||||
if (err.code === 'ETIMEDOUT' || err.code == 'ESOCKETTIMEDOUT') {
|
||||
const { promise, cancelHttp } = httpFetch(url, options)
|
||||
requestObj.cancelHttp()
|
||||
requestObj.cancelHttp = cancelHttp
|
||||
return promise
|
||||
}
|
||||
console.log('出错', err)
|
||||
if (err.message === 'socket hang up') {
|
||||
// window.globalObj.apiSource = 'temp'
|
||||
return Promise.reject(new Error(requestMsg.unachievable))
|
||||
}
|
||||
if (err.code === 'ENOTFOUND') return Promise.reject(new Error(requestMsg.notConnectNetwork))
|
||||
return Promise.reject(err)
|
||||
switch (err.code) {
|
||||
case 'ETIMEDOUT':
|
||||
case 'ESOCKETTIMEDOUT':
|
||||
return Promise.reject(new Error(requestMsg.timeout))
|
||||
case 'ENOTFOUND':
|
||||
return Promise.reject(new Error(requestMsg.notConnectNetwork))
|
||||
default:
|
||||
return Promise.reject(err)
|
||||
}
|
||||
})
|
||||
console.log(requestObj)
|
||||
return requestObj
|
||||
}
|
||||
|
||||
@@ -117,6 +110,7 @@ export const httpFetch = (url, options = { method: 'get' }) => {
|
||||
* @param {*} index
|
||||
*/
|
||||
export const cancelHttp = requestObj => {
|
||||
console.log(requestObj)
|
||||
if (!requestObj) return
|
||||
console.log('cancel:', requestObj.href)
|
||||
requestObj.abort()
|
||||
|
||||
Reference in New Issue
Block a user