diff --git a/eslint-suppressions.json b/eslint-suppressions.json index 63536cf1..ad09dea1 100644 --- a/eslint-suppressions.json +++ b/eslint-suppressions.json @@ -162,11 +162,6 @@ "count": 1 } }, - "src/components/cards/__tests__/SubscribeCard.spec.ts": { - "sonarjs/super-linear-regex": { - "count": 2 - } - }, "src/components/dialog/AboutDialog.vue": { "@typescript-eslint/no-explicit-any": { "count": 8 @@ -1056,4 +1051,4 @@ "count": 1 } } -} \ No newline at end of file +} diff --git a/src/api/types.ts b/src/api/types.ts index 09046ae2..c72cadbc 100644 --- a/src/api/types.ts +++ b/src/api/types.ts @@ -18,7 +18,7 @@ export interface Subscribe { name: string // 订阅年份 year: string - // 订阅类型 电影/电视剧 + // 订阅类型 电影/电视剧/音乐 type: string // 搜索关键字 keyword?: string @@ -34,6 +34,10 @@ export interface Subscribe { media_source?: MediaDataSource // 数据源原生ID media_id?: string + // 音乐实体类型:recording 单曲、album 专辑、artist 艺术家 + music_type?: MusicEntityType + // 专辑总曲目数 + total_tracks?: number // 其它媒体ID mediaid?: string // 季号 @@ -140,6 +144,10 @@ export interface SubscribeShare { media_source?: MediaDataSource // 数据源原生ID media_id?: string + // 音乐实体类型:recording 单曲、album 专辑、artist 艺术家 + music_type?: MusicEntityType + // 专辑总曲目数 + total_tracks?: number // 季号 season?: number // 海报 diff --git a/src/components/cards/MusicCard.vue b/src/components/cards/MusicCard.vue index fd29c85f..0084e67b 100644 --- a/src/components/cards/MusicCard.vue +++ b/src/components/cards/MusicCard.vue @@ -25,6 +25,7 @@ const userStore = useUserStore() const userPermissions = computed(() => buildUserPermissionContext(userStore.superUser, userStore.permissions)) const canSearch = computed(() => hasPermission(userPermissions.value, 'search')) const canSubscribe = computed(() => hasPermission(userPermissions.value, 'subscribe')) +const isActionableMedia = computed(() => props.music?.music_type !== 'artist') // 封面加载失败后改用专辑占位图标 const imageLoadError = ref(false) @@ -90,7 +91,7 @@ const { openMusicSiteSearch } = useMusicSiteSearch(sites => /** 查询当前音乐是否已订阅,用于决定心形图标是实心还是空心。 */ async function checkSubscribeStatus() { - if (!canSubscribe.value || !props.music?.media_id) return + if (!isActionableMedia.value || !canSubscribe.value || !props.music?.media_id) return try { isSubscribed.value = await getCachedMediaSubscribeStatus(getSubscribeStatusKey(), () => subscribeActions.checkSubscribe(null), @@ -161,7 +162,7 @@ onMounted(checkSubscribeStatus) -