diff --git a/lib/providers/download_queue_provider_embedding.dart b/lib/providers/download_queue_provider_embedding.dart index e5d70e89..9c6882d0 100644 --- a/lib/providers/download_queue_provider_embedding.dart +++ b/lib/providers/download_queue_provider_embedding.dart @@ -903,22 +903,18 @@ extension _DownloadQueueEmbedding on DownloadQueueNotifier { '${DateTime.now().millisecondsSinceEpoch}_${Random().nextInt(10000)}'; final coverPath = '${tempDir.path}/cover_embed_$uniqueId.jpg'; - final httpClient = HttpClient(); - try { - final request = await httpClient.getUrl(Uri.parse(coverUrl)); - final response = await request.close(); - if (response.statusCode != 200) { - _log.w('Failed to download cover: HTTP ${response.statusCode}'); - return null; - } - final sink = File(coverPath).openWrite(); - await response.pipe(sink); - await sink.close(); - _log.d('Cover downloaded for embedding: $coverPath'); - return coverPath; - } finally { - httpClient.close(); + // Go's cover pipeline: shared cache/singleflight, retries, timeouts. + final result = await PlatformBridge.downloadCoverToFile( + coverUrl, + coverPath, + maxQuality: false, + ); + if (result['error'] != null) { + _log.w('Failed to download cover: ${result['error']}'); + return null; } + _log.d('Cover downloaded for embedding: $coverPath'); + return coverPath; } catch (e) { _log.e('Failed to download cover for embedding: $e'); return null; diff --git a/lib/screens/track_metadata_edit_sheet.dart b/lib/screens/track_metadata_edit_sheet.dart index dad7bdcf..b88a656a 100644 --- a/lib/screens/track_metadata_edit_sheet.dart +++ b/lib/screens/track_metadata_edit_sheet.dart @@ -938,12 +938,12 @@ class _EditMetadataSheetState extends State<_EditMetadataSheet> { ); final coverOutput = '${tempDir.path}${Platform.pathSeparator}cover.jpg'; - final response = await HttpClient() - .getUrl(Uri.parse(coverUrl)) - .then((req) => req.close()); + await PlatformBridge.downloadCoverToFile( + coverUrl, + coverOutput, + maxQuality: false, + ); final file = File(coverOutput); - final sink = file.openWrite(); - await response.pipe(sink); if (await file.exists() && await file.length() > 0) { await _cleanupSelectedCoverTemp(); if (mounted) {