Merge pull request #280 from algerkong/fix/day-list

feat: 重构每日推荐数据加载逻辑,提取为独立函数并优化用户状态判断
This commit is contained in:
Alger
2025-05-28 22:04:14 +08:00
committed by GitHub
+24 -13
View File
@@ -128,7 +128,7 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { onMounted, ref, watchEffect } from 'vue'; import { onMounted, ref, watchEffect, computed } from 'vue';
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
import { useRouter } from 'vue-router'; import { useRouter } from 'vue-router';
@@ -247,22 +247,31 @@ const loadArtistData = async () => {
} }
} }
// 提取每日推荐加载逻辑到单独的函数
const loadDayRecommendData = async () => {
try {
const {
data: { data: dayRecommend }
} = await getDayRecommend();
const dayRecommendSource = dayRecommend as unknown as IDayRecommend;
dayRecommendData.value = {
...dayRecommendSource,
dailySongs: dayRecommendSource.dailySongs.filter((song: any) => !playerStore.dislikeList.includes(song.id))
};
} catch (error) {
console.error('获取每日推荐失败:', error);
}
};
// 加载不需要登录的数据 // 加载不需要登录的数据
const loadNonUserData = async () => { const loadNonUserData = async () => {
try { try {
// 获取每日推荐 // 获取每日推荐(仅在用户未登录时加载,已登录用户会通过watchEffect触发loadDayRecommendData
try { if (!userStore.user) {
const { await loadDayRecommendData();
data: { data: dayRecommend }
} = await getDayRecommend();
const dayRecommendSource = dayRecommend as unknown as IDayRecommend;
dayRecommendData.value = {
...dayRecommendSource,
dailySongs: dayRecommendSource.dailySongs.filter((song: any) =>!playerStore.dislikeList.includes(song.id))
};
} catch (error) {
console.error('获取每日推荐失败:', error);
} }
// 获取热门歌手 // 获取热门歌手
const { data: singerData } = await getHotSinger({ offset: 0, limit: 5 }); const { data: singerData } = await getHotSinger({ offset: 0, limit: 5 });
hotSingerData.value = singerData; hotSingerData.value = singerData;
@@ -419,9 +428,11 @@ const loadFullPlaylist = async (trackIds: { id: number }[], initialSongs: SongRe
watchEffect(() => { watchEffect(() => {
if (userStore.user) { if (userStore.user) {
loadUserData(); loadUserData();
loadDayRecommendData();
} }
}); });
const getPlaylistGridClass = (length: number) => { const getPlaylistGridClass = (length: number) => {
switch (length) { switch (length) {
case 1: case 1: