mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-09-05 15:36:49 +08:00
fix(music): label subscription entity types
This commit is contained in:
@@ -136,10 +136,23 @@ const subscribeProgressText = computed(() => {
|
||||
return `${downloadedEpisode.value} / ${total}`
|
||||
})
|
||||
|
||||
// 专辑订阅按整包完成,不伪造分集进度;这里只展示整专规模,提醒用户该目标包含多首曲目。
|
||||
const musicAlbumTrackText = computed(() => {
|
||||
if (props.media?.type !== '音乐' || props.media?.music_type !== 'album' || !props.media?.total_tracks) return ''
|
||||
return `${t('music.entityAlbum')} · ${t('music.trackCount', { count: props.media.total_tracks })}`
|
||||
// 音乐订阅始终展示实体类型;旧数据缺少 music_type 时按既有单曲语义兼容。
|
||||
const musicSubscribeMeta = computed(() => {
|
||||
if (props.media?.type !== '音乐') return null
|
||||
if (props.media.music_type === 'album') {
|
||||
const trackCount = props.media.total_tracks
|
||||
return {
|
||||
icon: 'mdi-album',
|
||||
text: trackCount
|
||||
? `${t('music.entityAlbum')} · ${t('music.trackCount', { count: trackCount })}`
|
||||
: t('music.entityAlbum'),
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
icon: 'mdi-music-note',
|
||||
text: t('music.entityRecording'),
|
||||
}
|
||||
})
|
||||
|
||||
// 订阅卡片 hover 文案:
|
||||
@@ -641,10 +654,10 @@ function handleCardClick() {
|
||||
size="16"
|
||||
/>
|
||||
<span
|
||||
v-if="subscribeProgressText || musicAlbumTrackText"
|
||||
v-if="subscribeProgressText || musicSubscribeMeta"
|
||||
class="subscribe-card-mobile-progress-text"
|
||||
>
|
||||
{{ subscribeProgressText || musicAlbumTrackText }}
|
||||
{{ subscribeProgressText || musicSubscribeMeta?.text }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@@ -734,11 +747,11 @@ function handleCardClick() {
|
||||
</VTooltip>
|
||||
</div>
|
||||
<div
|
||||
v-else-if="musicAlbumTrackText"
|
||||
v-else-if="musicSubscribeMeta"
|
||||
class="flex flex-shrink-0 align-center text-subtitle-2 me-2 text-white"
|
||||
>
|
||||
<VIcon icon="mdi-album" size="small" class="me-1" />
|
||||
{{ musicAlbumTrackText }}
|
||||
<VIcon :icon="musicSubscribeMeta.icon" size="small" class="me-1" />
|
||||
{{ musicSubscribeMeta.text }}
|
||||
</div>
|
||||
<VIcon
|
||||
v-if="props.media?.username && props.sortable"
|
||||
|
||||
@@ -194,6 +194,20 @@ describe('SubscribeCard display and progress', () => {
|
||||
expect(screen.queryByText(/^\d{1,4} \/ \d{1,4}$/)).not.toBeInTheDocument()
|
||||
})
|
||||
|
||||
it.each([480, 1024])('identifies recording subscriptions at %ipx', async width => {
|
||||
setViewport(width)
|
||||
await renderCard({ music_type: 'recording', name: '晴天', total_tracks: undefined, type: '音乐' })
|
||||
|
||||
expect(screen.getByText('单曲')).toBeInTheDocument()
|
||||
expect(screen.queryByText(/首$/)).not.toBeInTheDocument()
|
||||
})
|
||||
|
||||
it('keeps the album identity visible when a legacy subscription has no track count', async () => {
|
||||
await renderCard({ music_type: 'album', name: '旧专辑', total_tracks: undefined, type: '音乐' })
|
||||
|
||||
expect(screen.getByText('专辑')).toBeInTheDocument()
|
||||
})
|
||||
|
||||
it.each([
|
||||
['regular progress', 10, 4, '6 / 10', '60'],
|
||||
['negative missing episodes', 10, -2, '10 / 10', '100'],
|
||||
|
||||
Reference in New Issue
Block a user