|
128 | 128 | </template>
|
129 | 129 |
|
130 | 130 | <script lang="ts" setup>
|
131 |
| -import { onMounted, ref, watchEffect } from 'vue'; |
| 131 | +import { onMounted, ref, watchEffect, computed } from 'vue'; |
132 | 132 | import { useI18n } from 'vue-i18n';
|
133 | 133 | import { useRouter } from 'vue-router';
|
134 | 134 |
|
@@ -247,22 +247,31 @@ const loadArtistData = async () => {
|
247 | 247 | }
|
248 | 248 | }
|
249 | 249 |
|
| 250 | +
|
| 251 | +// 提取每日推荐加载逻辑到单独的函数 |
| 252 | +const loadDayRecommendData = async () => { |
| 253 | + try { |
| 254 | + const { |
| 255 | + data: { data: dayRecommend } |
| 256 | + } = await getDayRecommend(); |
| 257 | + const dayRecommendSource = dayRecommend as unknown as IDayRecommend; |
| 258 | + dayRecommendData.value = { |
| 259 | + ...dayRecommendSource, |
| 260 | + dailySongs: dayRecommendSource.dailySongs.filter((song: any) => !playerStore.dislikeList.includes(song.id)) |
| 261 | + }; |
| 262 | + } catch (error) { |
| 263 | + console.error('获取每日推荐失败:', error); |
| 264 | + } |
| 265 | +}; |
| 266 | +
|
250 | 267 | // 加载不需要登录的数据
|
251 | 268 | const loadNonUserData = async () => {
|
252 | 269 | try {
|
253 |
| - // 获取每日推荐 |
254 |
| - try { |
255 |
| - const { |
256 |
| - data: { data: dayRecommend } |
257 |
| - } = await getDayRecommend(); |
258 |
| - const dayRecommendSource = dayRecommend as unknown as IDayRecommend; |
259 |
| - dayRecommendData.value = { |
260 |
| - ...dayRecommendSource, |
261 |
| - dailySongs: dayRecommendSource.dailySongs.filter((song: any) =>!playerStore.dislikeList.includes(song.id)) |
262 |
| - }; |
263 |
| - } catch (error) { |
264 |
| - console.error('获取每日推荐失败:', error); |
| 270 | + // 获取每日推荐(仅在用户未登录时加载,已登录用户会通过watchEffect触发loadDayRecommendData) |
| 271 | + if (!userStore.user) { |
| 272 | + await loadDayRecommendData(); |
265 | 273 | }
|
| 274 | + |
266 | 275 | // 获取热门歌手
|
267 | 276 | const { data: singerData } = await getHotSinger({ offset: 0, limit: 5 });
|
268 | 277 | hotSingerData.value = singerData;
|
@@ -419,9 +428,11 @@ const loadFullPlaylist = async (trackIds: { id: number }[], initialSongs: SongRe
|
419 | 428 | watchEffect(() => {
|
420 | 429 | if (userStore.user) {
|
421 | 430 | loadUserData();
|
| 431 | + loadDayRecommendData(); |
422 | 432 | }
|
423 | 433 | });
|
424 | 434 |
|
| 435 | +
|
425 | 436 | const getPlaylistGridClass = (length: number) => {
|
426 | 437 | switch (length) {
|
427 | 438 | case 1:
|
|
0 commit comments