Commit 3765f9b4871cce0918cc0ce4eb1bef2762543f37
1 parent
383d40df
chore: move local play to front of text check
Showing
1 changed file
with
29 additions
and
21 deletions
pages/index/index.js
| ... | ... | @@ -24,12 +24,37 @@ Page({ |
| 24 | 24 | const selectedType = this.data.typeList[this.data.selectedIndex]; |
| 25 | 25 | const url = selectedType.createUrl(text); |
| 26 | 26 | const type = selectedType.desc; |
| 27 | + | |
| 28 | + this.resetAudio(); | |
| 29 | + audio = wx.createInnerAudioContext({useWebAudioImplement: true}); | |
| 30 | + audio.autoplay = true; | |
| 31 | + // 检查是否播放过 | |
| 32 | + const audioList = app.globalData.getAudioList(); | |
| 33 | + const played = audioList.find(v => v.url === url); | |
| 34 | + // 播放失败要移除缓存内容 | |
| 35 | + audio.onError(err => { | |
| 36 | + app.globalData.setAudioList('delete', played.path); | |
| 37 | + wx.showModal({ | |
| 38 | + title: '提示', | |
| 39 | + content: '该语音播放过但缓存失效,点击确定重新播放', | |
| 40 | + showCancel: false, | |
| 41 | + success: res => { | |
| 42 | + this.play(); | |
| 43 | + } | |
| 44 | + }); | |
| 45 | + }); | |
| 46 | + // 播放过,使用本地文件减少请求,且从播放列表中移到最前 | |
| 47 | + if(played){ | |
| 48 | + app.globalData.setAudioList('delete', played.path); | |
| 49 | + app.globalData.setAudioList('add', played); | |
| 50 | + return audio.src = played.path; | |
| 51 | + } | |
| 27 | 52 | |
| 53 | + // 检查文本是否合规 | |
| 28 | 54 | wx.showLoading({ |
| 29 | 55 | title: '正在合成语音...', |
| 30 | 56 | mask: true |
| 31 | 57 | }); |
| 32 | - // 检查文本是否合规 | |
| 33 | 58 | const result = await new Promise((resolve, reject) => { |
| 34 | 59 | app.request({ |
| 35 | 60 | url: `${app.globalData.domain}/open-api/wechat-msg-sec-check`, |
| ... | ... | @@ -46,9 +71,9 @@ Page({ |
| 46 | 71 | } |
| 47 | 72 | }); |
| 48 | 73 | }); |
| 49 | - wx.hideLoading(); | |
| 50 | 74 | // 不合规结束 |
| 51 | 75 | if(result.suggest !== 'pass'){ |
| 76 | + wx.hideLoading(); | |
| 52 | 77 | return wx.showToast({ |
| 53 | 78 | title: '内容不合规', |
| 54 | 79 | icon: 'error', |
| ... | ... | @@ -56,29 +81,12 @@ Page({ |
| 56 | 81 | duration: 2000 |
| 57 | 82 | }); |
| 58 | 83 | } |
| 59 | - | |
| 60 | - this.resetAudio(); | |
| 61 | - audio = wx.createInnerAudioContext({useWebAudioImplement: true}); | |
| 62 | - audio.autoplay = true; | |
| 63 | - // 检查是否播放过 | |
| 64 | - const audioList = app.globalData.getAudioList(); | |
| 65 | - const played = audioList.find(v => v.url === url); | |
| 66 | - // 播放失败要移除缓存内容 | |
| 67 | - audio.onError(err => { | |
| 68 | - if(err.errCode){ | |
| 69 | - app.globalData.setAudioList('delete', played.path); | |
| 70 | - } | |
| 71 | - }); | |
| 72 | - // 播放过,使用本地文件减少请求,且从播放列表中移到最前 | |
| 73 | - if(played){ | |
| 74 | - app.globalData.setAudioList('delete', played.path); | |
| 75 | - app.globalData.setAudioList('add', played); | |
| 76 | - return audio.src = played.path; | |
| 77 | - } | |
| 84 | + | |
| 78 | 85 | // 未播放过,先下载再播放 |
| 79 | 86 | wx.downloadFile({ |
| 80 | 87 | url, |
| 81 | 88 | success (res) { |
| 89 | + wx.hideLoading(); | |
| 82 | 90 | audio.src = res.tempFilePath; |
| 83 | 91 | app.globalData.setAudioList('add', { |
| 84 | 92 | // 音频文本 | ... | ... |