mirror of
https://github.com/algerkong/AlgerMusicPlayer.git
synced 2026-04-24 08:07:23 +08:00
🦄 refactor: 重构代码将 Vuex替换为 Pinia
集成 Pinia 状态管理
This commit is contained in:
@@ -21,18 +21,18 @@
|
||||
</router-view>
|
||||
</div>
|
||||
<play-bottom height="5rem" />
|
||||
<app-menu v-if="isMobile && !store.state.musicFull" class="menu" :menus="menus" />
|
||||
<app-menu v-if="isMobile && !playerStore.musicFull" class="menu" :menus="menus" />
|
||||
</div>
|
||||
</div>
|
||||
<!-- 底部音乐播放 -->
|
||||
<play-bar v-show="isPlay" :style="isMobile && store.state.musicFull ? 'bottom: 0;' : ''" />
|
||||
<play-bar v-show="isPlay" :style="isMobile && playerStore.musicFull ? 'bottom: 0;' : ''" />
|
||||
<!-- 下载管理抽屉 -->
|
||||
<download-drawer
|
||||
v-if="
|
||||
isElectron &&
|
||||
(store.state.setData?.alwaysShowDownloadButton ||
|
||||
store.state.showDownloadDrawer ||
|
||||
store.state.hasDownloadingTasks)
|
||||
(settingsStore.setData?.alwaysShowDownloadButton ||
|
||||
settingsStore.showDownloadDrawer ||
|
||||
settingsStore.setData?.hasDownloadingTasks)
|
||||
"
|
||||
/>
|
||||
</div>
|
||||
@@ -46,13 +46,15 @@
|
||||
<script lang="ts" setup>
|
||||
import { computed, defineAsyncComponent, nextTick, onMounted, provide, ref, watch } from 'vue';
|
||||
import { useRoute } from 'vue-router';
|
||||
import { useStore } from 'vuex';
|
||||
|
||||
import DownloadDrawer from '@/components/common/DownloadDrawer.vue';
|
||||
import InstallAppModal from '@/components/common/InstallAppModal.vue';
|
||||
import PlayBottom from '@/components/common/PlayBottom.vue';
|
||||
import UpdateModal from '@/components/common/UpdateModal.vue';
|
||||
import homeRouter from '@/router/home';
|
||||
import { useMenuStore } from '@/store/modules/menu';
|
||||
import { usePlayerStore } from '@/store/modules/player';
|
||||
import { useSettingsStore } from '@/store/modules/settings';
|
||||
import { isElectron, isMobile } from '@/utils';
|
||||
|
||||
const keepAliveInclude = computed(() =>
|
||||
@@ -73,26 +75,28 @@ const TitleBar = defineAsyncComponent(() => import('./components/TitleBar.vue'))
|
||||
const ArtistDrawer = defineAsyncComponent(() => import('@/components/common/ArtistDrawer.vue'));
|
||||
const PlaylistDrawer = defineAsyncComponent(() => import('@/components/common/PlaylistDrawer.vue'));
|
||||
|
||||
const store = useStore();
|
||||
const playerStore = usePlayerStore();
|
||||
const settingsStore = useSettingsStore();
|
||||
const menuStore = useMenuStore();
|
||||
|
||||
const isPlay = computed(() => store.state.isPlay as boolean);
|
||||
const { menus } = store.state;
|
||||
const isPlay = computed(() => playerStore.playMusic && playerStore.playMusic.id);
|
||||
const { menus } = menuStore;
|
||||
const route = useRoute();
|
||||
|
||||
onMounted(() => {
|
||||
store.dispatch('initializeSettings');
|
||||
store.dispatch('initializeTheme');
|
||||
settingsStore.initializeSettings();
|
||||
settingsStore.initializeTheme();
|
||||
});
|
||||
|
||||
const artistDrawerRef = ref<InstanceType<typeof ArtistDrawer>>();
|
||||
const artistDrawerShow = computed({
|
||||
get: () => store.state.showArtistDrawer,
|
||||
set: (val) => store.commit('setShowArtistDrawer', val)
|
||||
get: () => settingsStore.showArtistDrawer,
|
||||
set: (val) => settingsStore.setShowArtistDrawer(val)
|
||||
});
|
||||
|
||||
// 监听歌手ID变化
|
||||
watch(
|
||||
() => store.state.currentArtistId,
|
||||
() => settingsStore.currentArtistId,
|
||||
(newId) => {
|
||||
if (newId) {
|
||||
artistDrawerShow.value = true;
|
||||
|
||||
Reference in New Issue
Block a user