From ac8494291738c84b9833f30212ee41d21290f386 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Sun, 5 Feb 2023 08:39:02 +0600 Subject: [PATCH] refactor: audio player and youtube client in separate files --- lib/collections/intents.dart | 1 + lib/main.dart | 11 +++++------ lib/models/spotube_track.dart | 2 +- lib/provider/audio_player_provider.dart | 6 ------ lib/provider/downloader_provider.dart | 4 ++-- lib/provider/playlist_queue_provider.dart | 4 +--- lib/provider/youtube_provider.dart | 4 ---- lib/services/audio_player.dart | 3 +++ lib/services/linux_audio_service.dart | 1 + lib/services/mobile_audio_service.dart | 4 ++-- lib/services/youtube.dart | 3 +++ 11 files changed, 19 insertions(+), 24 deletions(-) delete mode 100644 lib/provider/audio_player_provider.dart delete mode 100644 lib/provider/youtube_provider.dart create mode 100644 lib/services/audio_player.dart create mode 100644 lib/services/youtube.dart diff --git a/lib/collections/intents.dart b/lib/collections/intents.dart index ad60a7fa..b1c5697d 100644 --- a/lib/collections/intents.dart +++ b/lib/collections/intents.dart @@ -6,6 +6,7 @@ import 'package:spotube/components/player/player_controls.dart'; import 'package:spotube/collections/routes.dart'; import 'package:spotube/models/logger.dart'; import 'package:spotube/provider/playlist_queue_provider.dart'; +import 'package:spotube/services/audio_player.dart'; import 'package:spotube/utils/platform.dart'; import 'package:window_manager/window_manager.dart'; diff --git a/lib/main.dart b/lib/main.dart index 627e1843..674aa6db 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -20,11 +20,11 @@ import 'package:spotube/entities/cache_track.dart'; import 'package:spotube/collections/routes.dart'; import 'package:spotube/collections/intents.dart'; import 'package:spotube/models/logger.dart'; -import 'package:spotube/provider/audio_player_provider.dart'; import 'package:spotube/provider/downloader_provider.dart'; import 'package:spotube/provider/user_preferences_provider.dart'; -import 'package:spotube/provider/youtube_provider.dart'; +import 'package:spotube/services/audio_player.dart'; import 'package:spotube/services/pocketbase.dart'; +import 'package:spotube/services/youtube.dart'; import 'package:spotube/themes/dark_theme.dart'; import 'package:spotube/themes/light_theme.dart'; import 'package:spotube/utils/platform.dart'; @@ -147,7 +147,7 @@ void main(List rawArgs) async { return Downloader( ref, queueInstance, - yt: ref.watch(youtubeProvider), + yt: youtube, downloadPath: ref.watch( userPreferencesProvider.select( (s) => s.downloadLocation, @@ -258,12 +258,11 @@ class SpotubeState extends ConsumerState with WidgetsBindingObserver { ref.watch(userPreferencesProvider.select((s) => s.accentColorScheme)); final backgroundMaterialColor = ref .watch(userPreferencesProvider.select((s) => s.backgroundColorScheme)); - final player = ref.watch(audioPlayerProvider); - final youtube = ref.watch(youtubeProvider); + /// For enabling hot reload for audio player useEffect(() { return () { - player.dispose(); + audioPlayer.dispose(); youtube.close(); }; }, []); diff --git a/lib/models/spotube_track.dart b/lib/models/spotube_track.dart index c6ff1563..ce361b09 100644 --- a/lib/models/spotube_track.dart +++ b/lib/models/spotube_track.dart @@ -7,9 +7,9 @@ import 'package:spotube/extensions/video.dart'; import 'package:spotube/extensions/album_simple.dart'; import 'package:spotube/extensions/artist_simple.dart'; import 'package:spotube/models/track.dart'; -import 'package:spotube/provider/playlist_queue_provider.dart'; import 'package:spotube/provider/user_preferences_provider.dart'; import 'package:spotube/services/pocketbase.dart'; +import 'package:spotube/services/youtube.dart'; import 'package:spotube/utils/platform.dart'; import 'package:spotube/utils/primitive_utils.dart'; import 'package:spotube/utils/service_utils.dart'; diff --git a/lib/provider/audio_player_provider.dart b/lib/provider/audio_player_provider.dart deleted file mode 100644 index 3fd44b98..00000000 --- a/lib/provider/audio_player_provider.dart +++ /dev/null @@ -1,6 +0,0 @@ -import 'package:audioplayers/audioplayers.dart'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; - -final audioPlayerProvider = Provider((ref) { - return AudioPlayer(); -}); diff --git a/lib/provider/downloader_provider.dart b/lib/provider/downloader_provider.dart index 20a8f175..8075c47b 100644 --- a/lib/provider/downloader_provider.dart +++ b/lib/provider/downloader_provider.dart @@ -13,7 +13,7 @@ import 'package:spotube/components/shared/dialogs/replace_downloaded_dialog.dart import 'package:spotube/models/logger.dart'; import 'package:spotube/models/spotube_track.dart'; import 'package:spotube/provider/user_preferences_provider.dart'; -import 'package:spotube/provider/youtube_provider.dart'; +import 'package:spotube/services/youtube.dart'; import 'package:spotube/utils/type_conversion_utils.dart'; import 'package:youtube_explode_dart/youtube_explode_dart.dart' hide Comment; @@ -165,7 +165,7 @@ final downloaderProvider = ChangeNotifierProvider( return Downloader( ref, queueInstance, - yt: ref.watch(youtubeProvider), + yt: youtube, downloadPath: ref.watch( userPreferencesProvider.select( (s) => s.downloadLocation, diff --git a/lib/provider/playlist_queue_provider.dart b/lib/provider/playlist_queue_provider.dart index 12b726b8..c002ff1c 100644 --- a/lib/provider/playlist_queue_provider.dart +++ b/lib/provider/playlist_queue_provider.dart @@ -8,6 +8,7 @@ import 'package:spotube/models/spotube_track.dart'; import 'package:spotube/extensions/track.dart'; import 'package:spotube/provider/blacklist_provider.dart'; import 'package:spotube/provider/user_preferences_provider.dart'; +import 'package:spotube/services/audio_player.dart'; import 'package:spotube/services/linux_audio_service.dart'; import 'package:spotube/services/mobile_audio_service.dart'; import 'package:spotube/utils/persisted_state_notifier.dart'; @@ -16,9 +17,6 @@ import 'package:spotube/utils/type_conversion_utils.dart'; import 'package:youtube_explode_dart/youtube_explode_dart.dart' hide Playlist; import 'package:collection/collection.dart'; -final audioPlayer = AudioPlayer(); -final youtube = YoutubeExplode(); - class PlaylistQueue { final Set tracks; final Set tempTracks; diff --git a/lib/provider/youtube_provider.dart b/lib/provider/youtube_provider.dart deleted file mode 100644 index d96f8c1f..00000000 --- a/lib/provider/youtube_provider.dart +++ /dev/null @@ -1,4 +0,0 @@ -import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:youtube_explode_dart/youtube_explode_dart.dart'; - -final youtubeProvider = Provider((ref) => YoutubeExplode()); diff --git a/lib/services/audio_player.dart b/lib/services/audio_player.dart new file mode 100644 index 00000000..01e33a64 --- /dev/null +++ b/lib/services/audio_player.dart @@ -0,0 +1,3 @@ +import 'package:audioplayers/audioplayers.dart'; + +final audioPlayer = AudioPlayer(); diff --git a/lib/services/linux_audio_service.dart b/lib/services/linux_audio_service.dart index 1bbd3a36..9b30b28e 100644 --- a/lib/services/linux_audio_service.dart +++ b/lib/services/linux_audio_service.dart @@ -6,6 +6,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:spotube/provider/dbus_provider.dart'; import 'package:spotube/models/spotube_track.dart'; import 'package:spotube/provider/playlist_queue_provider.dart'; +import 'package:spotube/services/audio_player.dart'; import 'package:spotube/utils/type_conversion_utils.dart'; import 'package:window_manager/window_manager.dart'; diff --git a/lib/services/mobile_audio_service.dart b/lib/services/mobile_audio_service.dart index 86c0802f..713ddb51 100644 --- a/lib/services/mobile_audio_service.dart +++ b/lib/services/mobile_audio_service.dart @@ -4,12 +4,12 @@ import 'package:audio_service/audio_service.dart'; import 'package:audio_session/audio_session.dart'; import 'package:audioplayers/audioplayers.dart'; import 'package:spotube/provider/playlist_queue_provider.dart'; +import 'package:spotube/services/audio_player.dart'; class MobileAudioService extends BaseAudioHandler { AudioSession? session; - final PlaylistQueueNotifier playlistNotifier; + final PlaylistQueueNotifier playlistNotifier; - PlaylistQueue? get playlist => playlistNotifier.state; MobileAudioService(this.playlistNotifier) { diff --git a/lib/services/youtube.dart b/lib/services/youtube.dart new file mode 100644 index 00000000..c6662ad3 --- /dev/null +++ b/lib/services/youtube.dart @@ -0,0 +1,3 @@ +import 'package:youtube_explode_dart/youtube_explode_dart.dart'; + +final youtube = YoutubeExplode();