mirror of
https://github.com/algerkong/AlgerMusicPlayer.git
synced 2026-04-23 15:47:23 +08:00
✨ feat: 优化音频监听器初始化和设置保存逻辑
- 在 App.vue 中引入 initAudioListeners 函数,确保在播放音乐时初始化音频监听器。 - 在 MusicHook.ts 中重构音频监听器的初始化逻辑,增加音频加载的超时处理。 - 在设置页面中实现防抖保存功能,避免频繁更新设置,提高性能和用户体验。 这些更改旨在提升音频播放的稳定性和设置管理的效率。
This commit is contained in:
+22
-12
@@ -12,7 +12,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { darkTheme, lightTheme } from 'naive-ui';
|
||||
import { computed, onMounted, watch } from 'vue';
|
||||
import { computed, nextTick, watch } from 'vue';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
import homeRouter from '@/router/home';
|
||||
@@ -21,6 +21,7 @@ import { usePlayerStore } from '@/store/modules/player';
|
||||
import { useSettingsStore } from '@/store/modules/settings';
|
||||
import { isElectron } from '@/utils';
|
||||
|
||||
import { initAudioListeners } from './hooks/MusicHook';
|
||||
import { isMobile } from './utils';
|
||||
|
||||
const { locale } = useI18n();
|
||||
@@ -61,18 +62,27 @@ const handleSetLanguage = (_: any, value: string) => {
|
||||
// settingsStore.setLanguage(value);
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
settingsStore.initializeSettings();
|
||||
handleSetLanguage(null, settingsStore.setData.language);
|
||||
settingsStore.initializeTheme();
|
||||
settingsStore.initializeSystemFonts();
|
||||
playerStore.initializePlayState();
|
||||
if (isMobile.value) {
|
||||
menuStore.setMenus(homeRouter.filter((item) => item.meta.isMobile));
|
||||
}
|
||||
settingsStore.initializeSettings();
|
||||
handleSetLanguage(null, settingsStore.setData.language);
|
||||
settingsStore.initializeTheme();
|
||||
settingsStore.initializeSystemFonts();
|
||||
if (isMobile.value) {
|
||||
menuStore.setMenus(homeRouter.filter((item) => item.meta.isMobile));
|
||||
}
|
||||
|
||||
if (isElectron) {
|
||||
window.electron.ipcRenderer.on('language-changed', handleSetLanguage);
|
||||
if (isElectron) {
|
||||
window.electron.ipcRenderer.on('language-changed', handleSetLanguage);
|
||||
}
|
||||
|
||||
onMounted(async () => {
|
||||
// 先初始化播放状态
|
||||
await playerStore.initializePlayState();
|
||||
|
||||
// 如果有正在播放的音乐,则初始化音频监听器
|
||||
if (playerStore.playMusic && playerStore.playMusic.id) {
|
||||
// 使用 nextTick 确保 DOM 更新后再初始化
|
||||
await nextTick();
|
||||
initAudioListeners();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user