feat: mac添加音乐控制图标 , 托盘菜单项,更新播放状态和当前歌曲信息的逻辑

feat #105
This commit is contained in:
alger
2025-03-31 23:05:19 +08:00
parent e0d13057c3
commit 374a7a837d
13 changed files with 416 additions and 53 deletions
+2
View File
@@ -11,6 +11,7 @@
</template>
<script setup lang="ts">
import { cloneDeep } from 'lodash';
import { darkTheme, lightTheme } from 'naive-ui';
import { computed, nextTick, watch } from 'vue';
import { useI18n } from 'vue-i18n';
@@ -90,6 +91,7 @@ onMounted(async () => {
// 使用 nextTick 确保 DOM 更新后再初始化
await nextTick();
initAudioListeners();
window.api.sendSong(cloneDeep(playerStore.playMusic));
}
});
</script>
+2
View File
@@ -1,3 +1,4 @@
import { cloneDeep } from 'lodash';
import { createDiscreteApi } from 'naive-ui';
import { computed, nextTick, onUnmounted, ref, watch } from 'vue';
@@ -394,6 +395,7 @@ const setupAudioListeners = () => {
// 监听播放
audioService.on('play', () => {
playerStore.setPlayMusic(true);
window.api.sendSong(cloneDeep(playerStore.playMusic));
clearInterval();
interval = window.setInterval(() => {
try {
+4 -3
View File
@@ -353,14 +353,15 @@ export const usePlayerStore = defineStore('player', () => {
const setIsPlay = (value: boolean) => {
isPlay.value = value;
play.value = value;
localStorage.setItem('isPlaying', value.toString());
// 通知主进程播放状态变化
window.electron?.ipcRenderer.send('update-play-state', value);
};
const setPlayMusic = async (value: boolean | SongResult) => {
if (typeof value === 'boolean') {
play.value = value;
isPlay.value = value;
localStorage.setItem('isPlaying', value.toString());
setIsPlay(value);
} else {
await handlePlayMusic(value);
play.value = true;