@@ -35,17 +35,28 @@ const mapSongDataToSlots = ({ type = 'current' } = {}) => (ctx) => {
3535 return Promise . reject ( new EmptySongDataError ( ctx , 'there is no song data' ) ) ;
3636 }
3737
38+ // Preserve original coverage and year from user's selection if they exist,
39+ // so the response matches what the user selected rather than what the album has
40+ const originalCoverage = slots . coverage ;
41+ const originalYear = slots . year ;
42+
3843 // we need to escape song data because they could have special symbols
3944 // like < or > but we should do it only for speech because it uses SSML
4045 const slotsWithEscapedSongDetails = {
4146 ...slots ,
4247 ...escapeHTMLObject ( song , { skipFields : [ 'audioURL' , 'imageURL' ] } ) ,
48+ // Preserve user-selected coverage and year
49+ ...( originalCoverage && { coverage : originalCoverage } ) ,
50+ ...( originalYear && { year : originalYear } ) ,
4351 } ;
4452
4553 // in all other cases we could have these special symbols
4654 const slotsWithOriginalSongDetails = {
4755 ...slots ,
4856 ...song ,
57+ // Preserve user-selected coverage and year to ensure response matches user's selection
58+ ...( originalCoverage && { coverage : originalCoverage } ) ,
59+ ...( originalYear && { year : originalYear } ) ,
4960 } ;
5061
5162 const playbackUIScheme = selectors . find ( availableStrings , slotsWithOriginalSongDetails ) ;
0 commit comments