feat: updates

This commit is contained in:
qier222 2022-07-11 11:06:41 +08:00
parent 0b4baa3eff
commit 222fb02355
No known key found for this signature in database
GPG key ID: 9C85007ED905F14D
77 changed files with 654 additions and 551 deletions

View file

@ -7,7 +7,7 @@ import Icon from '@/web/components/Icon'
import TracksAlbum from '@/web/components/TracksAlbum'
import useAlbum from '@/web/api/hooks/useAlbum'
import useArtistAlbums from '@/web/api/hooks/useArtistAlbums'
import { player } from '@/web/store'
import player from '@/web/states/player'
import {
Mode as PlayerMode,
State as PlayerState,

View file

@ -9,7 +9,7 @@ import TracksGrid from '@/web/components/TracksGrid'
import CoverRow, { Subtitle } from '@/web/components/CoverRow'
import Skeleton from '@/web/components/Skeleton'
import useTracks from '@/web/api/hooks/useTracks'
import { player } from '@/web/store'
import player from '@/web/states/player'
import { cx } from '@emotion/css'
import { useCallback, useMemo } from 'react'
import toast from 'react-hot-toast'

View file

@ -5,7 +5,7 @@ import useLyric from '@/web/api/hooks/useLyric'
import usePlaylist from '@/web/api/hooks/usePlaylist'
import useUser from '@/web/api/hooks/useUser'
import useUserPlaylists from '@/web/api/hooks/useUserPlaylists'
import { player } from '@/web/store'
import player from '@/web/states/player'
import { resizeImage } from '@/web/utils/common'
import { sample, chunk } from 'lodash-es'
import useUserArtists from '@/web/api/hooks/useUserArtists'

View file

@ -4,7 +4,7 @@ import useTracks from '@/web/api/hooks/useTracks'
import { NavLink, useParams } from 'react-router-dom'
import PageTransition from '@/web/components/New/PageTransition'
import TrackList from '@/web/components/New/TrackList'
import { player } from '@/web/store'
import player from '@/web/states/player'
import toast from 'react-hot-toast'
import { useSnapshot } from 'valtio'
import useArtistAlbums from '@/web/api/hooks/useArtistAlbums'
@ -113,9 +113,13 @@ const Album = () => {
return (
<PageTransition>
<TrackListHeader album={album?.album} onPlay={onPlay} />
<TrackListHeader
album={album?.album}
onPlay={onPlay}
className='mt-2.5 lg:mt-0'
/>
<TrackList
tracks={tracks?.songs || album?.songs || album?.album.songs}
tracks={tracks?.songs || album?.album.songs || album?.songs}
className='z-10 mx-2.5 mt-3 lg:mx-0 lg:mt-10'
onPlay={onPlay}
/>

View file

@ -7,7 +7,7 @@ const ArtistInfo = ({ artist }: { artist?: Artist }) => {
<div className='text-28 font-semibold text-night-50 lg:text-32'>
{artist?.name}
</div>
<div className='mt-2.5 text-24 font-medium text-night-400 lg:mt-6'>
<div className='text-white-400 mt-2.5 text-24 font-medium lg:mt-6'>
Artist
</div>
<div className='mt-1 text-12 font-medium text-night-400'>

View file

@ -1,26 +0,0 @@
import { resizeImage } from '@/web/utils/common'
import { cx, css } from '@emotion/css'
import useIsMobile from '@/web/hooks/useIsMobile'
const BlurBackground = ({ cover }: { cover?: string }) => {
const isMobile = useIsMobile()
return isMobile || !cover ? (
<></>
) : (
<img
className={cx(
'absolute z-0 object-cover opacity-70',
css`
top: -400px;
left: -370px;
width: 1572px;
height: 528px;
filter: blur(256px) saturate(1.2);
`
)}
src={resizeImage(cover, 'sm')}
/>
)
}
export default BlurBackground

View file

@ -1,9 +1,8 @@
import { resizeImage } from '@/web/utils/common'
import { cx, css } from '@emotion/css'
import Image from '@/web/components/New/Image'
import { useMemo } from 'react'
import { breakpoint as bp } from '@/web/utils/const'
import BlurBackground from './BlurBackground'
import BlurBackground from '@/web/components/New/BlurBackground'
import ArtistInfo from './ArtistInfo'
import Actions from './Actions'
import LatestRelease from './LatestRelease'

View file

@ -37,11 +37,11 @@ const Album = () => {
`
)}
/>
<div className='ml-2 flex-shrink-1'>
<div className='font-medium line-clamp-1 text-16 text-night-100'>
<div className='flex-shrink-1 ml-2'>
<div className='line-clamp-1 text-16 font-medium text-night-100'>
{album.name}
</div>
<div className='mt-1 font-bold text-14 text-night-500'>
<div className='mt-1 text-14 font-bold text-night-500'>
{album.type}
{album.size > 1 ? `· ${album.size} Tracks` : ''}
</div>
@ -69,8 +69,8 @@ const Video = () => {
`
)}
/>
<div className='ml-2 flex-shrink-1'>
<div className='font-medium line-clamp-2 text-16 text-night-100'>
<div className='flex-shrink-1 ml-2'>
<div className='line-clamp-2 text-16 font-medium text-night-100'>
Swedish House Mafia & The Weeknd Live at C...
</div>
<div className='mt-1.5 text-12 font-medium text-night-500'>
@ -84,7 +84,7 @@ const Video = () => {
const LatestRelease = () => {
return (
<div className='mx-2.5 lg:mx-0'>
<div className='mb-3 font-bold mt-7 text-14 text-neutral-300'>
<div className='mb-3 mt-7 text-14 font-bold text-neutral-300'>
Latest Releases
</div>

View file

@ -1,5 +1,5 @@
import { resizeImage } from '@/web/utils/common'
import { player } from '@/web/store'
import player from '@/web/states/player'
import { State as PlayerState } from '@/web/utils/player'
import useTracks from '@/web/api/hooks/useTracks'
import { css, cx } from '@emotion/css'

View file

@ -82,7 +82,7 @@ const Browse = () => {
tabs={categories}
value={active}
onChange={category => setActive(category)}
className='sticky top-0 z-10 px-2.5 lg:px-0'
className='sticky top-0 z-10 mt-2.5 px-2.5 lg:mt-0 lg:px-0'
/>
<div className='relative mx-2.5 mt-5 lg:mx-0'>

View file

@ -106,7 +106,7 @@ const Discover = () => {
return (
<PageTransition disableEnterAnimation={true}>
<div className='mx-2.5 pb-10 lg:mx-0 lg:pb-16'>
<div className='mx-2.5 mt-2.5 pb-10 lg:mx-0 lg:mt-0 lg:pb-16'>
<CoverWall albums={albums || []} />
</div>
</PageTransition>

View file

@ -5,6 +5,8 @@ import { useMemo, useState } from 'react'
import CoverRow from '@/web/components/New/CoverRow'
import useUserPlaylists from '@/web/api/hooks/useUserPlaylists'
import useUserAlbums from '@/web/api/hooks/useUserAlbums'
import { useSnapshot } from 'valtio'
import uiStates from '@/web/states/uiStates'
const tabs = [
{
@ -39,7 +41,12 @@ const Playlists = () => {
const Collections = () => {
// const { data: artists } = useUserArtists()
const [selectedTab, setSelectedTab] = useState(tabs[0].id)
const { librarySelectedTab: selectedTab } = useSnapshot(uiStates)
const setSelectedTab = (
id: 'playlists' | 'albums' | 'artists' | 'videos'
) => {
uiStates.librarySelectedTab = id
}
return (
<div>

View file

@ -1,7 +1,7 @@
import useLyric from '@/web/api/hooks/useLyric'
import usePlaylist from '@/web/api/hooks/usePlaylist'
import useUserPlaylists from '@/web/api/hooks/useUserPlaylists'
import { player } from '@/web/store'
import player from '@/web/states/player'
import { sample, chunk, sampleSize } from 'lodash-es'
import { css, cx } from '@emotion/css'
import { useState, useEffect, useMemo, useCallback, memo } from 'react'

View file

@ -2,13 +2,13 @@ import TrackListHeader from '@/web/components/New/TrackListHeader'
import { NavLink, useParams } from 'react-router-dom'
import PageTransition from '@/web/components/New/PageTransition'
import TrackList from '@/web/components/New/TrackList'
import { player } from '@/web/store'
import player from '@/web/states/player'
import toast from 'react-hot-toast'
import { useSnapshot } from 'valtio'
import { memo, useEffect, useMemo } from 'react'
import usePlaylist from '@/web/api/hooks/usePlaylist'
import useTracksInfinite from '@/web/api/hooks/useTracksInfinite'
import useScroll from '@/web/hooks/useScroll'
const Playlist = () => {
const params = useParams()
const { data: playlist, isLoading } = usePlaylist({
@ -35,7 +35,11 @@ const Playlist = () => {
return (
<PageTransition>
<TrackListHeader playlist={playlist?.playlist} onPlay={onPlay} />
<TrackListHeader
playlist={playlist?.playlist}
onPlay={onPlay}
className='mt-2.5 lg:mt-0'
/>
<TrackList
tracks={playlist?.playlist?.tracks ?? []}
onPlay={onPlay}

View file

@ -6,7 +6,7 @@ import TracksList from '@/web/components/TracksList'
import usePlaylist from '@/web/api/hooks/usePlaylist'
import useScroll from '@/web/hooks/useScroll'
import useTracksInfinite from '@/web/api/hooks/useTracksInfinite'
import { player } from '@/web/store'
import player from '@/web/states/player'
import { formatDate, resizeImage } from '@/web/utils/common'
import useUserPlaylists, {
useMutationLikeAPlaylist,

View file

@ -1,7 +1,7 @@
import { multiMatchSearch, search } from '@/web/api/search'
import Cover from '@/web/components/Cover'
import TrackGrid from '@/web/components/TracksGrid'
import { player } from '@/web/store'
import player from '@/web/states/player'
import { resizeImage } from '@/web/utils/common'
import { SearchTypes, SearchApiNames } from '@/shared/api/Search'
import dayjs from 'dayjs'

View file

@ -1,4 +1,4 @@
import { state } from '@/web/store'
import settings from '@/web/states/settings'
import { changeAccentColor } from '@/web/utils/theme'
import { useSnapshot } from 'valtio'
import { cx } from '@emotion/css'
@ -25,11 +25,11 @@ const AccentColor = () => {
}
const changeColor = (color: string) => {
state.settings.accentColor = color
settings.accentColor = color
changeAccentColor(color)
}
const accentColor = useSnapshot(state).settings.accentColor
const accentColor = useSnapshot(settings).accentColor
return (
<div className='mt-4'>
<div className='mb-2 dark:text-white'></div>