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

@ -0,0 +1,35 @@
import { player } from '@/renderer/store'
import { IpcChannels, IpcChannelsReturns, IpcChannelsParams } from '@/shared/IpcChannels'
const on = <T extends keyof IpcChannelsParams>(
channel: T,
listener: (event: any, params: IpcChannelsReturns[T]) => void
) => {
window.ipcRenderer?.on(channel, listener)
}
export function ipcRenderer() {
on(IpcChannels.Play, () => {
player.play(true)
})
on(IpcChannels.Pause, () => {
player.pause(true)
})
on(IpcChannels.PlayOrPause, () => {
player.playOrPause()
})
on(IpcChannels.Next, () => {
player.nextTrack()
})
on(IpcChannels.Previous, () => {
player.prevTrack()
})
on(IpcChannels.Repeat, (e, mode) => {
player.repeatMode = mode
})
}