feat: 实现托盘菜单 (#1538)

* 从 v1 添加托盘相关图标

* feat: ipcRenderer事件

* feat: 托盘菜单实现

* 修复合并后的错误

* fix: 托盘图标的like

* 将 tray 相关的 ipc 放入ipcMain.ts

* update

* update

* feat: 设置托盘Tooltip

* fix

* fix: tray play/pause fade

* fix: 暂时将tray like与tooltip的设置移入Player组件中

useUserLikedTracksIDs 会在重新聚焦而不是切换track时触发,导致托盘无法实时更新数据

基于以上一点,在Player组件中有了一个用于设置tray数据的useEffect,故将tray tooltip的设置也放入其中,使tray的数据尽可能简单的和player数据保持一致

* 将部分ipcRenderer调用挪到单独的IpcRendererReact组件

* 移除SetTrayPlayState,复用已有channel

* update
This commit is contained in:
memorydream 2022-04-20 20:25:20 +08:00 committed by GitHub
parent b1fd51233a
commit ffdf66b57e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
24 changed files with 392 additions and 19 deletions

View file

@ -10,8 +10,8 @@ import { resizeImage } from '@/renderer/utils/common'
import {
State as PlayerState,
Mode as PlayerMode,
RepeatMode as PlayerRepeatMode,
} from '@/renderer/utils/player'
import { RepeatMode as PlayerRepeatMode } from '@/shared/playerDataTypes'
const PlayingTrack = () => {
const navigate = useNavigate()
@ -26,13 +26,16 @@ const PlayingTrack = () => {
const { data: userLikedSongs } = useUserLikedTracksIDs()
const mutationLikeATrack = useMutationLikeATrack()
const hasTrackListSource =
snappedPlayer.mode !== PlayerMode.FM && trackListSource?.type
const toAlbum = () => {
const id = track?.al?.id
if (id) navigate(`/album/${id}`)
}
const toTrackListSource = () => {
if (trackListSource?.type)
if (hasTrackListSource)
navigate(`/${trackListSource.type}/${trackListSource.id}`)
}
@ -59,7 +62,10 @@ const PlayingTrack = () => {
<div className='flex flex-col justify-center leading-tight'>
<div
onClick={toTrackListSource}
className='line-clamp-1 font-semibold text-black decoration-gray-600 decoration-2 hover:underline dark:text-white dark:decoration-gray-300'
className={classNames(
'line-clamp-1 font-semibold text-black decoration-gray-600 decoration-2 dark:text-white dark:decoration-gray-300',
hasTrackListSource && 'hover:underline'
)}
>
{track?.name}
</div>