diff --git a/lib/services/database_manager.dart b/lib/services/database_manager.dart index 2234e9a3..65684f11 100644 --- a/lib/services/database_manager.dart +++ b/lib/services/database_manager.dart @@ -336,18 +336,13 @@ Future addToWatchHistory( List> oldEntry = await _database.query("watch_history", columns: ["addedOn"], where: "videoID = ?", whereArgs: [result.videoID]); if (["homepage", "results", "favorites"].contains(sourceScreenType)) { - Uint8List thumbnailBinary = Uint8List(0); - try { - thumbnailBinary = - await result.plugin!.downloadThumbnail(Uri.parse(result.thumbnail!)); - } catch (e, stacktrace) { - logger.e("Error downloading thumbnail: $e\n$stacktrace"); - } Map newEntryData = { "videoID": result.videoID, "title": result.title, "plugin": result.plugin?.codeName ?? "null", - "thumbnailBinary": thumbnailBinary, + "thumbnailBinary": await result.plugin + ?.downloadThumbnail(Uri.parse(result.thumbnail ?? "")) ?? + Uint8List(0), "durationInSeconds": result.duration?.inSeconds ?? -1, "maxQuality": result.maxQuality ?? -1, "virtualReality": result.virtualReality ? 1 : 0, @@ -395,18 +390,13 @@ Future addToWatchHistory( Future addToFavorites(UniversalVideoPreview result) async { logger.d("Adding to favorites: "); result.printAllAttributes(); - Uint8List thumbnailBinary = Uint8List(0); - try { - thumbnailBinary = - await result.plugin!.downloadThumbnail(Uri.parse(result.thumbnail!)); - } catch (e, stacktrace) { - logger.e("Error downloading thumbnail: $e\n$stacktrace"); - } await _database.insert("favorites", { "videoID": result.videoID, "title": result.title, "plugin": result.plugin?.codeName ?? "null", - "thumbnailBinary": thumbnailBinary, + "thumbnailBinary": await result.plugin + ?.downloadThumbnail(Uri.parse(result.thumbnail ?? "")) ?? + Uint8List(0), "durationInSeconds": result.duration?.inSeconds ?? -1, "maxQuality": result.maxQuality ?? -1, "virtualReality": result.virtualReality ? 1 : 0, diff --git a/lib/utils/official_plugin.dart b/lib/utils/official_plugin.dart index a3c55d0d..f7c50487 100644 --- a/lib/utils/official_plugin.dart +++ b/lib/utils/official_plugin.dart @@ -111,18 +111,19 @@ abstract class OfficialPlugin { /// This is the actual function for getting thumbnails that is specific to each official plugin Future isolateGetProgressThumbnails(SendPort sendPort); - // This function is used by isolateGetProgressThumbnails and therefore cant contain logger calls Future downloadThumbnail(Uri uri) async { try { var response = await client.get(uri); if (response.statusCode == 200) { return response.bodyBytes; } else { - throw Exception("Error downloading preview: ${response.statusCode} - " - "${response.reasonPhrase}"); + logger.e( + "Error downloading preview: ${response.statusCode} - ${response.reasonPhrase}"); + return Uint8List(0); } } catch (e, stacktrace) { - throw Exception("Error downloading preview: $e\n$stacktrace"); + logger.e("Error downloading preview: $e\n$stacktrace"); + return Uint8List(0); } }