From 4d59401549b40c6d46908f2e1cd81447d35b611f Mon Sep 17 00:00:00 2001 From: memorydream <34763046+memorydream@users.noreply.github.com> Date: Sat, 30 Apr 2022 02:08:25 +0800 Subject: [PATCH] fix: bugs (#1579) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: 让从本地缓存获取的音乐可以拖动进度条 * fix: 登陆二维码使用SVG & 二维码支持强调色 * fix: 搜索页面在没有取得结果不再白屏 * fix: 避免私人FM出现相同的歌曲连着出现 * fix: 给部分api添加时间戳参数 因为发现无法获取个性化推荐歌单,添加时间戳后成功获取 * 改用`Date.now()` * 将个性化推荐放在推荐歌单的前面 --- src/main/cache.ts | 7 ++++++- src/renderer/api/personalFM.ts | 4 ++++ src/renderer/api/playlist.ts | 3 +++ src/renderer/pages/Home.tsx | 1 - src/renderer/pages/Login.tsx | 25 +++++++++++++++++++------ src/renderer/pages/Search/Search.tsx | 10 +++++----- src/renderer/utils/player.ts | 5 ++++- 7 files changed, 41 insertions(+), 14 deletions(-) diff --git a/src/main/cache.ts b/src/main/cache.ts index b719be8..9f29386 100644 --- a/src/main/cache.ts +++ b/src/main/cache.ts @@ -275,7 +275,12 @@ class Cache { fs.unlinkSync(path) return res.status(404).send({ error: 'Audio not found' }) } - res.send(audio) + res + .status(206) + .setHeader('Accept-Ranges', 'bytes') + .setHeader('Connection', 'keep-alive') + .setHeader('Content-Range', `bytes 0-${audio.byteLength - 1}/${audio.byteLength}`) + .send(audio) } catch (error) { res.status(500).send({ error }) } diff --git a/src/renderer/api/personalFM.ts b/src/renderer/api/personalFM.ts index f4614bf..a627db4 100644 --- a/src/renderer/api/personalFM.ts +++ b/src/renderer/api/personalFM.ts @@ -95,6 +95,9 @@ export function fetchPersonalFM(): Promise { return request({ url: '/personal/fm', method: 'get', + params: { + timestamp: Date.now(), + }, }) } @@ -110,6 +113,7 @@ export function fmTrash(id: number): Promise { method: 'post', params: { id, + timestamp: Date.now(), }, }) } diff --git a/src/renderer/api/playlist.ts b/src/renderer/api/playlist.ts index ad634d2..c079bea 100644 --- a/src/renderer/api/playlist.ts +++ b/src/renderer/api/playlist.ts @@ -44,6 +44,9 @@ export function fetchDailyRecommendPlaylists(): Promise diff --git a/src/renderer/pages/Login.tsx b/src/renderer/pages/Login.tsx index 8764762..60afb0e 100644 --- a/src/renderer/pages/Login.tsx +++ b/src/renderer/pages/Login.tsx @@ -17,6 +17,8 @@ enum Method { Phone = 'phone', } +const domParser = new DOMParser() + // Shared components and methods const EmailInput = ({ email, @@ -367,23 +369,34 @@ const LoginWithQRCode = () => { useEffect(() => { const updateImage = async () => { - const image = await QRCode.toDataURL(qrCodeUrl, { - width: 1024, + const svg = await QRCode.toString(qrCodeUrl, { margin: 0, color: { - dark: '#335eea', // TODO: change brand color light: '#ffffff00', }, + type: 'svg', }) - setQrCodeImage(image) + const path = domParser + .parseFromString(svg, 'text/xml') + .getElementsByTagName('path')[0] + + setQrCodeImage(path?.getAttribute('d') ?? '') } updateImage() }, [qrCodeUrl]) return (
-
- QR Code +
+ + +
{qrCodeMessage} diff --git a/src/renderer/pages/Search/Search.tsx b/src/renderer/pages/Search/Search.tsx index b21951b..7f04140 100644 --- a/src/renderer/pages/Search/Search.tsx +++ b/src/renderer/pages/Search/Search.tsx @@ -98,7 +98,7 @@ const Search = () => { const handlePlayTracks = useCallback( (trackID: number | null = null) => { - const tracks = searchResult?.result.song.songs + const tracks = searchResult?.result?.song?.songs if (!tracks?.length) { toast('无法播放歌单') return @@ -108,7 +108,7 @@ const Search = () => { trackID ) }, - [searchResult?.result.song.songs] + [searchResult?.result?.song?.songs] ) const navigate = useNavigate() @@ -163,21 +163,21 @@ const Search = () => { {/* Search result */}
- {searchResult?.result.artist.artists && ( + {searchResult?.result?.artist?.artists && (
艺人
)} - {searchResult?.result.album.albums && ( + {searchResult?.result?.album?.albums && (
专辑
)} - {searchResult?.result.song.songs && ( + {searchResult?.result?.song?.songs && (
歌曲
r.id) ?? [])) + const ids = (response?.data?.map(r => r.id) ?? []).filter( + r => !this.fmTrackList.includes(r) + ) + this.fmTrackList.push(...ids) } }