From bd511584e712d03b2dd862d9657ef95f1357bf55 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Mon, 22 Jul 2024 09:46:04 +0600 Subject: [PATCH] fix: local track metadata timeout --- lib/provider/local_tracks/local_tracks_provider.dart | 8 +++++--- lib/services/audio_services/audio_services.dart | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/provider/local_tracks/local_tracks_provider.dart b/lib/provider/local_tracks/local_tracks_provider.dart index 6d2da59c..c739722b 100644 --- a/lib/provider/local_tracks/local_tracks_provider.dart +++ b/lib/provider/local_tracks/local_tracks_provider.dart @@ -1,3 +1,4 @@ +import 'dart:async'; import 'dart:io'; import 'package:spotube/services/logger/logger.dart'; @@ -49,7 +50,7 @@ final localTracksProvider = userPreferencesProvider.select((s) => s.localLibraryLocation), ); - for (var location in [downloadLocation, ...localLibraryLocations]) { + for (final location in [downloadLocation, ...localLibraryLocations]) { if (location.isEmpty) continue; final entities = []; if (await Directory(location).exists()) { @@ -67,7 +68,8 @@ final localTracksProvider = }).map( (file) async { try { - final metadata = await MetadataGod.readMetadata(file: file.path); + final metadata = await MetadataGod.readMetadata(file: file.path) + .timeout(const Duration(seconds: 10)); final imageFile = File(join( (await getTemporaryDirectory()).path, @@ -89,7 +91,7 @@ final localTracksProvider = "art": imageFile.path }; } catch (e, stack) { - if (e is FfiException) { + if (e case FfiException() || TimeoutException()) { return {"file": file}; } AppLogger.reportError(e, stack); diff --git a/lib/services/audio_services/audio_services.dart b/lib/services/audio_services/audio_services.dart index dbddba8b..d1820a00 100644 --- a/lib/services/audio_services/audio_services.dart +++ b/lib/services/audio_services/audio_services.dart @@ -29,7 +29,7 @@ class AudioServices with WidgetsBindingObserver { androidNotificationChannelId: kIsLinux ? 'spotube' : 'com.krtirtho.Spotube', androidNotificationChannelName: 'Spotube', - androidNotificationOngoing: true, + androidNotificationOngoing: false, androidNotificationIcon: "drawable/ic_launcher_monochrome", androidStopForegroundOnPause: false, androidNotificationChannelDescription: "Spotube Media Controls",