mirror of
https://github.com/algerkong/AlgerMusicPlayer.git
synced 2026-04-23 23:57:22 +08:00
Merge pull request #280 from algerkong/fix/day-list
feat: 重构每日推荐数据加载逻辑,提取为独立函数并优化用户状态判断
This commit is contained in:
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user