diff --git a/package.json b/package.json
index c6d23c6..0e08fa5 100644
--- a/package.json
+++ b/package.json
@@ -29,6 +29,7 @@
"test:types-renderer": "tsc --noEmit --project src/renderer/tsconfig.json",
"test:types-main": "tsc --noEmit --project src/main/tsconfig.json",
"test:types-shared": "tsc --noEmit --project src/shared/tsconfig.json",
+ "netease": "npx NeteaseCloudMusicApi",
"eslint": "eslint --ext .ts,.js ./",
"prettier": "prettier --write './**/*.{ts,js,tsx,jsx}'"
},
diff --git a/src/renderer/components/FMCard.tsx b/src/renderer/components/FMCard.tsx
index e1ad056..77be999 100644
--- a/src/renderer/components/FMCard.tsx
+++ b/src/renderer/components/FMCard.tsx
@@ -8,6 +8,7 @@ import {
State as PlayerState,
Mode as PlayerMode,
} from '@/renderer/utils/player'
+import useCoverColor from '../hooks/useCoverColor'
const MediaControls = () => {
const classes =
@@ -59,7 +60,6 @@ const MediaControls = () => {
const FMCard = () => {
const navigate = useNavigate()
- const [bgColor, setBgColor] = useState({ from: '#222', to: '#222' })
const playerSnapshot = useSnapshot(player)
const track = useMemo(() => playerSnapshot.fmTrack, [playerSnapshot.fmTrack])
@@ -68,13 +68,7 @@ const FMCard = () => {
[track?.al?.picUrl]
)
- useEffect(() => {
- getCoverColor(track?.al?.picUrl || '').then(color => {
- if (!color) return
- const to = colord(color).darken(0.15).rotate(-5).toHex()
- setBgColor({ from: color, to })
- })
- }, [track?.al?.picUrl])
+ const bgColor = useCoverColor(track?.al?.picUrl ?? '')
return (
{
const stateSnapshot = useSnapshot(state)
const playerSnapshot = useSnapshot(player)
const track = useMemo(() => playerSnapshot.track, [playerSnapshot.track])
- const [bgColor, setBgColor] = useState({ from: '#222', to: '#222' })
- useEffect(() => {
- getCoverColor(track?.al?.picUrl || '').then(color => {
- if (!color) return
- const to = colord(color).darken(0.15).rotate(-5).toHex()
- setBgColor({ from: color, to })
- })
- }, [track?.al?.picUrl])
+ const bgColor = useCoverColor(track?.al?.picUrl ?? '')
return (
diff --git a/src/renderer/hooks/useCoverColor.ts b/src/renderer/hooks/useCoverColor.ts
new file mode 100644
index 0000000..0c61132
--- /dev/null
+++ b/src/renderer/hooks/useCoverColor.ts
@@ -0,0 +1,16 @@
+import { colord } from 'colord'
+import { getCoverColor } from '../utils/common'
+
+export default function useCoverColor(url: string) {
+ const [color, setColor] = useState({ from: '#fff', to: '#fff' })
+
+ useEffect(() => {
+ getCoverColor(url || '').then(color => {
+ if (!color) return
+ const to = colord(color).darken(0.15).rotate(-5).toHex()
+ setColor({ from: color, to })
+ })
+ }, [url])
+
+ return color
+}
diff --git a/src/renderer/pages/Library.tsx b/src/renderer/pages/Library.tsx
index 06d1be6..6633a86 100644
--- a/src/renderer/pages/Library.tsx
+++ b/src/renderer/pages/Library.tsx
@@ -73,7 +73,7 @@ const LikedTracksCard = ({ className }: { className?: string }) => {
navigate(`/playlist/${likedSongsPlaylist.playlist.id}`)
}
className={classNames(
- 'relative flex h-full w-full flex-col justify-between rounded-2xl bg-brand-50 py-5 px-6 text-brand-600 dark:bg-brand-800 dark:text-brand-50',
+ 'relative flex h-full w-full flex-col justify-between rounded-2xl bg-brand-50 py-5 px-6 text-brand-600 dark:bg-brand-600 dark:text-brand-50',
className
)}
>