@@ -194,7 +194,7 @@ final class YTMusicClient: YTMusicClientProtocol {
194194 " browseId " : " FEmusic_liked_playlists " ,
195195 ]
196196
197- let data = try await request ( " browse " , body: body)
197+ let data = try await request ( " browse " , body: body, ttl : APICache . TTL . library )
198198 let playlists = PlaylistParser . parseLibraryPlaylists ( data)
199199 logger. info ( " Parsed \( playlists. count) library playlists " )
200200 return playlists
@@ -208,7 +208,7 @@ final class YTMusicClient: YTMusicClientProtocol {
208208 " browseId " : " FEmusic_liked_videos " ,
209209 ]
210210
211- let data = try await request ( " browse " , body: body)
211+ let data = try await request ( " browse " , body: body, ttl : APICache . TTL . library )
212212 let detail = PlaylistParser . parsePlaylistDetail ( data, playlistId: " LM " )
213213 logger. info ( " Parsed \( detail. tracks. count) liked songs " )
214214 return detail. tracks
@@ -312,7 +312,7 @@ final class YTMusicClient: YTMusicClientProtocol {
312312 " browseId " : lyricsBrowseId,
313313 ]
314314
315- let browseData = try await request ( " browse " , body: browseBody)
315+ let browseData = try await request ( " browse " , body: browseBody, ttl : APICache . TTL . lyrics )
316316 let lyrics = parseLyrics ( from: browseData)
317317 logger. info ( " Fetched lyrics for \( videoId) : \( lyrics. isAvailable ? " available " : " unavailable " ) " )
318318 return lyrics
@@ -406,7 +406,7 @@ final class YTMusicClient: YTMusicClientProtocol {
406406 " tunerSettingValue " : " AUTOMIX_SETTING_NORMAL " ,
407407 ]
408408
409- let data = try await request ( " next " , body: body)
409+ let data = try await request ( " next " , body: body, ttl : APICache . TTL . songMetadata )
410410 return try parseSongMetadata ( data, videoId: videoId)
411411 }
412412
@@ -637,6 +637,8 @@ final class YTMusicClient: YTMusicClientProtocol {
637637
638638 // Invalidate liked playlist cache so UI updates immediately
639639 APICache . shared. invalidate ( matching: " browse: " )
640+ // Invalidate song metadata cache (next: endpoint)
641+ APICache . shared. invalidate ( matching: " next: " )
640642 }
641643
642644 /// Adds or removes a song from the user's library.
@@ -655,6 +657,10 @@ final class YTMusicClient: YTMusicClientProtocol {
655657
656658 _ = try await request ( " feedback " , body: body)
657659 logger. info ( " Successfully edited library status " )
660+
661+ // Invalidate library and song metadata cache so UI updates
662+ APICache . shared. invalidate ( matching: " browse: " )
663+ APICache . shared. invalidate ( matching: " next: " )
658664 }
659665
660666 /// Adds a playlist to the user's library using the like/like endpoint.
0 commit comments