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

View File

@@ -128,7 +128,7 @@
</template>
<script lang="ts" setup>
import { onMounted, ref, watchEffect } from 'vue';
import { onMounted, ref, watchEffect, computed } from 'vue';
import { useI18n } from 'vue-i18n';
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 () => {
try {
// 获取每日推荐
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);
// 获取每日推荐仅在用户未登录时加载已登录用户会通过watchEffect触发loadDayRecommendData
if (!userStore.user) {
await loadDayRecommendData();
}
// 获取热门歌手
const { data: singerData } = await getHotSinger({ offset: 0, limit: 5 });
hotSingerData.value = singerData;
@@ -419,9 +428,11 @@ const loadFullPlaylist = async (trackIds: { id: number }[], initialSongs: SongRe
watchEffect(() => {
if (userStore.user) {
loadUserData();
loadDayRecommendData();
}
});
const getPlaylistGridClass = (length: number) => {
switch (length) {
case 1: