From 86ee64c6066b3aa3c5910c89ffff7367826e823c Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Sat, 6 Jul 2024 22:02:31 +0600 Subject: [PATCH] chore: remove old logger --- lib/collections/intents.dart | 3 - lib/extensions/list.dart | 99 ------------------- lib/models/logger.dart | 74 -------------- lib/modules/artist/artist_album_list.dart | 6 +- lib/modules/player/player_actions.dart | 5 +- lib/modules/player/player_controls.dart | 5 +- lib/modules/root/bottom_player.dart | 4 +- lib/pages/artist/artist.dart | 5 +- lib/pages/settings/logs.dart | 4 +- lib/provider/connect/connect.dart | 8 +- lib/provider/server/routes/connect.dart | 8 +- lib/services/cli/cli.dart | 8 -- .../download_manager/chunked_download.dart | 7 -- .../download_manager/download_manager.dart | 13 +-- lib/utils/service_utils.dart | 9 +- 15 files changed, 19 insertions(+), 239 deletions(-) delete mode 100644 lib/extensions/list.dart delete mode 100644 lib/models/logger.dart diff --git a/lib/collections/intents.dart b/lib/collections/intents.dart index ac0451ac..4f446831 100644 --- a/lib/collections/intents.dart +++ b/lib/collections/intents.dart @@ -6,7 +6,6 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import 'package:spotube/collections/routes.dart'; import 'package:spotube/modules/player/player_controls.dart'; -import 'package:spotube/models/logger.dart'; import 'package:spotube/pages/home/home.dart'; import 'package:spotube/pages/library/library.dart'; import 'package:spotube/pages/lyrics/lyrics.dart'; @@ -21,8 +20,6 @@ class PlayPauseIntent extends Intent { } class PlayPauseAction extends Action { - final logger = getLogger(PlayPauseAction); - @override invoke(intent) async { if (PlayerControls.focusNode.canRequestFocus) { diff --git a/lib/extensions/list.dart b/lib/extensions/list.dart deleted file mode 100644 index 6ecf6cf6..00000000 --- a/lib/extensions/list.dart +++ /dev/null @@ -1,99 +0,0 @@ -import 'package:collection/collection.dart'; -import 'package:spotube/models/logger.dart'; - -final logger = getLogger("List"); - -extension MultiSortListMap on List { - /// [preference] - List of properties in which you want to sort the list - /// i.e. - /// ``` - /// List preference = ['property1','property2']; - /// ``` - /// This will first sort the list by property1 then by property2 - /// - /// [criteria] - List of booleans that specifies the criteria of sort - /// i.e., For ascending order `true` and for descending order `false`. - /// ``` - /// List criteria = [true. false]; - /// ``` - List sortByProperties(List criteria, List preference) { - if (preference.isEmpty || criteria.isEmpty || isEmpty) { - return this; - } - if (preference.length != criteria.length) { - logger.d('Criteria length is not equal to preference'); - return this; - } - - int compare(int i, Map a, Map b) { - if (a[preference[i]] == b[preference[i]]) { - return 0; - } else if (a[preference[i]] > b[preference[i]]) { - return criteria[i] ? 1 : -1; - } else { - return criteria[i] ? -1 : 1; - } - } - - int sortAll(Map a, Map b) { - int i = 0; - int result = 0; - while (i < preference.length) { - result = compare(i, a, b); - if (result != 0) break; - i++; - } - return result; - } - - return sorted((a, b) => sortAll(a, b)); - } -} - -extension MultiSortListTupleMap on List<(Map, V)> { - /// [preference] - List of properties in which you want to sort the list - /// i.e. - /// ``` - /// List preference = ['property1','property2']; - /// ``` - /// This will first sort the list by property1 then by property2 - /// - /// [criteria] - List of booleans that specifies the criteria of sort - /// i.e., For ascending order `true` and for descending order `false`. - /// ``` - /// List criteria = [true. false]; - /// ``` - List<(Map, V)> sortByProperties( - List criteria, List preference) { - if (preference.isEmpty || criteria.isEmpty || isEmpty) { - return this; - } - if (preference.length != criteria.length) { - logger.d('Criteria length is not equal to preference'); - return this; - } - - int compare(int i, (Map, V) a, (Map, V) b) { - if (a.$1[preference[i]] == b.$1[preference[i]]) { - return 0; - } else if (a.$1[preference[i]] > b.$1[preference[i]]) { - return criteria[i] ? 1 : -1; - } else { - return criteria[i] ? -1 : 1; - } - } - - int sortAll((Map, V) a, (Map, V) b) { - int i = 0; - int result = 0; - while (i < preference.length) { - result = compare(i, a, b); - if (result != 0) break; - i++; - } - return result; - } - - return sorted((a, b) => sortAll(a, b)); - } -} diff --git a/lib/models/logger.dart b/lib/models/logger.dart deleted file mode 100644 index 3236028d..00000000 --- a/lib/models/logger.dart +++ /dev/null @@ -1,74 +0,0 @@ -import 'dart:io'; - -import 'package:flutter/foundation.dart'; -import 'package:logger/logger.dart'; -import 'package:path_provider/path_provider.dart'; -import 'package:path/path.dart' as path; -import 'package:spotube/utils/platform.dart'; - -final _loggerFactory = SpotubeLogger(); -final logEnv = { - if (!kIsWeb) ...Platform.environment, -}; - -SpotubeLogger getLogger(T owner) { - _loggerFactory.owner = owner is String ? owner : owner.toString(); - return _loggerFactory; -} - -Future getLogsPath() async { - String dir = (await getApplicationDocumentsDirectory()).path; - if (kIsAndroid) { - dir = (await getExternalStorageDirectory())?.path ?? ""; - } - - if (kIsMacOS) { - dir = path.join((await getLibraryDirectory()).path, "Logs"); - } - final file = File(path.join(dir, ".spotube_logs")); - if (!await file.exists()) { - await file.create(recursive: true); - } - return file; -} - -class SpotubeLogger extends Logger { - String? owner; - SpotubeLogger([this.owner]) : super(filter: _SpotubeLogFilter()); - - @override - void log(Level level, dynamic message, - {Object? error, StackTrace? stackTrace, DateTime? time}) async { - if (!kIsWeb) { - if (level == Level.error) { - String dir = (await getApplicationDocumentsDirectory()).path; - - if (kIsAndroid) { - dir = (await getExternalStorageDirectory())?.path ?? ""; - } - - if (kIsMacOS) { - dir = path.join((await getLibraryDirectory()).path, "Logs"); - } - - await File(path.join(dir, ".spotube_logs")).writeAsString( - "[${DateTime.now()}]\n$message\n$stackTrace", - mode: FileMode.writeOnlyAppend); - } - } - - super.log(level, "[$owner] $message", error: error, stackTrace: stackTrace); - } -} - -class _SpotubeLogFilter extends DevelopmentFilter { - @override - bool shouldLog(LogEvent event) { - if ((logEnv["DEBUG"] == "true" && event.level == Level.debug) || - (logEnv["VERBOSE"] == "true" && event.level == Level.trace) || - (logEnv["ERROR"] == "true" && event.level == Level.error)) { - return true; - } - return super.shouldLog(event); - } -} diff --git a/lib/modules/artist/artist_album_list.dart b/lib/modules/artist/artist_album_list.dart index 9bb65804..a2dd8006 100644 --- a/lib/modules/artist/artist_album_list.dart +++ b/lib/modules/artist/artist_album_list.dart @@ -3,18 +3,16 @@ import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:spotify/spotify.dart'; import 'package:spotube/components/horizontal_playbutton_card_view/horizontal_playbutton_card_view.dart'; import 'package:spotube/extensions/context.dart'; -import 'package:spotube/models/logger.dart'; import 'package:spotube/provider/spotify/spotify.dart'; class ArtistAlbumList extends HookConsumerWidget { final String artistId; - ArtistAlbumList( + + const ArtistAlbumList( this.artistId, { super.key, }); - final logger = getLogger(ArtistAlbumList); - @override Widget build(BuildContext context, ref) { final albumsQuery = ref.watch(artistAlbumsProvider(artistId)); diff --git a/lib/modules/player/player_actions.dart b/lib/modules/player/player_actions.dart index 8a7b3e83..a47c992d 100644 --- a/lib/modules/player/player_actions.dart +++ b/lib/modules/player/player_actions.dart @@ -11,7 +11,6 @@ import 'package:spotube/extensions/artist_simple.dart'; import 'package:spotube/extensions/context.dart'; import 'package:spotube/extensions/duration.dart'; import 'package:spotube/models/local_track.dart'; -import 'package:spotube/models/logger.dart'; import 'package:spotube/provider/download_manager_provider.dart'; import 'package:spotube/provider/authentication/authentication.dart'; import 'package:spotube/provider/audio_player/audio_player.dart'; @@ -22,14 +21,14 @@ class PlayerActions extends HookConsumerWidget { final bool floatingQueue; final bool showQueue; final List? extraActions; - PlayerActions({ + + const PlayerActions({ this.mainAxisAlignment = MainAxisAlignment.center, this.floatingQueue = true, this.showQueue = true, this.extraActions, super.key, }); - final logger = getLogger(PlayerActions); @override Widget build(BuildContext context, ref) { diff --git a/lib/modules/player/player_controls.dart b/lib/modules/player/player_controls.dart index 1b9d9f86..c88f6258 100644 --- a/lib/modules/player/player_controls.dart +++ b/lib/modules/player/player_controls.dart @@ -10,7 +10,6 @@ import 'package:spotube/collections/intents.dart'; import 'package:spotube/extensions/context.dart'; import 'package:spotube/extensions/duration.dart'; import 'package:spotube/modules/player/use_progress.dart'; -import 'package:spotube/models/logger.dart'; import 'package:spotube/provider/audio_player/audio_player.dart'; import 'package:spotube/provider/audio_player/querying_track_info.dart'; import 'package:spotube/services/audio_player/audio_player.dart'; @@ -19,14 +18,12 @@ class PlayerControls extends HookConsumerWidget { final PaletteGenerator? palette; final bool compact; - PlayerControls({ + const PlayerControls({ this.palette, this.compact = false, super.key, }); - final logger = getLogger(PlayerControls); - static FocusNode focusNode = FocusNode(); @override diff --git a/lib/modules/root/bottom_player.dart b/lib/modules/root/bottom_player.dart index e7dbacd2..23904aef 100644 --- a/lib/modules/root/bottom_player.dart +++ b/lib/modules/root/bottom_player.dart @@ -16,7 +16,6 @@ import 'package:spotube/extensions/constrains.dart'; import 'package:spotube/extensions/context.dart'; import 'package:spotube/extensions/image.dart'; import 'package:spotube/hooks/utils/use_brightness_value.dart'; -import 'package:spotube/models/logger.dart'; import 'package:flutter/material.dart'; import 'package:spotube/provider/authentication/authentication.dart'; import 'package:spotube/provider/audio_player/audio_player.dart'; @@ -27,9 +26,8 @@ import 'package:spotube/utils/platform.dart'; import 'package:window_manager/window_manager.dart'; class BottomPlayer extends HookConsumerWidget { - BottomPlayer({super.key}); + const BottomPlayer({super.key}); - final logger = getLogger(BottomPlayer); @override Widget build(BuildContext context, ref) { final auth = ref.watch(authenticationProvider); diff --git a/lib/pages/artist/artist.dart b/lib/pages/artist/artist.dart index 04389ffc..70ad72de 100644 --- a/lib/pages/artist/artist.dart +++ b/lib/pages/artist/artist.dart @@ -7,7 +7,7 @@ import 'package:skeletonizer/skeletonizer.dart'; import 'package:spotube/components/titlebar/titlebar.dart'; import 'package:spotube/modules/artist/artist_album_list.dart'; import 'package:spotube/extensions/context.dart'; -import 'package:spotube/models/logger.dart'; + import 'package:spotube/pages/artist/section/footer.dart'; import 'package:spotube/pages/artist/section/header.dart'; import 'package:spotube/pages/artist/section/related_artists.dart'; @@ -18,8 +18,7 @@ class ArtistPage extends HookConsumerWidget { static const name = "artist"; final String artistId; - final logger = getLogger(ArtistPage); - ArtistPage(this.artistId, {super.key}); + const ArtistPage(this.artistId, {super.key}); @override Widget build(BuildContext context, ref) { diff --git a/lib/pages/settings/logs.dart b/lib/pages/settings/logs.dart index 65e4c82e..a49050ad 100644 --- a/lib/pages/settings/logs.dart +++ b/lib/pages/settings/logs.dart @@ -8,7 +8,7 @@ import 'package:spotube/modules/settings/section_card_with_heading.dart'; import 'package:spotube/components/inter_scrollbar/inter_scrollbar.dart'; import 'package:spotube/components/titlebar/titlebar.dart'; import 'package:spotube/extensions/context.dart'; -import 'package:spotube/models/logger.dart'; +import 'package:spotube/services/logger/logger.dart'; class LogsPage extends HookWidget { static const name = "logs"; @@ -61,7 +61,7 @@ class LogsPage extends HookWidget { useEffect(() { final timer = Timer.periodic(const Duration(seconds: 5), (t) async { - path.value ??= await getLogsPath(); + path.value ??= await AppLogger.getLogsPath(); final raw = await path.value!.readAsString(); final hasChanged = rawLogs.value != raw; rawLogs.value = raw; diff --git a/lib/provider/connect/connect.dart b/lib/provider/connect/connect.dart index 28eb131b..000a28af 100644 --- a/lib/provider/connect/connect.dart +++ b/lib/provider/connect/connect.dart @@ -7,7 +7,7 @@ import 'package:spotube/services/logger/logger.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:spotify/spotify.dart' hide Playlist; import 'package:spotube/models/connect/connect.dart'; -import 'package:spotube/models/logger.dart'; + import 'package:spotube/provider/connect/clients.dart'; import 'package:web_socket_channel/web_socket_channel.dart'; import 'package:web_socket_channel/status.dart' as status; @@ -46,8 +46,6 @@ final volumeProvider = StateProvider( (ref) => 1.0, ); -final logger = getLogger('ConnectNotifier'); - class ConnectNotifier extends AsyncNotifier { @override build() async { @@ -58,7 +56,7 @@ class ConnectNotifier extends AsyncNotifier { final service = connectClients.asData!.value.resolvedService!; - logger.t( + AppLogger.log.t( '♾️ Connecting to ${service.name}: ws://${service.host}:${service.port}/ws', ); @@ -68,7 +66,7 @@ class ConnectNotifier extends AsyncNotifier { await channel.ready; - logger.t( + AppLogger.log.t( '✅ Connected to ${service.name}: ws://${service.host}:${service.port}/ws', ); diff --git a/lib/provider/server/routes/connect.dart b/lib/provider/server/routes/connect.dart index 8e75a87e..0d35b473 100644 --- a/lib/provider/server/routes/connect.dart +++ b/lib/provider/server/routes/connect.dart @@ -7,7 +7,7 @@ import 'package:shelf/shelf.dart'; import 'package:shelf_web_socket/shelf_web_socket.dart'; import 'package:spotify/spotify.dart'; import 'package:spotube/models/connect/connect.dart'; -import 'package:spotube/models/logger.dart'; + import 'package:spotube/provider/history/history.dart'; import 'package:spotube/provider/audio_player/audio_player.dart'; import 'package:spotube/provider/volume_provider.dart'; @@ -25,11 +25,9 @@ class ServerConnectRoutes { final Ref ref; final StreamController _connectClientStreamController; final List subscriptions; - final SpotubeLogger logger; ServerConnectRoutes(this.ref) : _connectClientStreamController = StreamController.broadcast(), - subscriptions = [], - logger = getLogger('ConnectServer') { + subscriptions = [] { ref.onDispose(() { _connectClientStreamController.close(); for (final subscription in subscriptions) { @@ -193,7 +191,7 @@ class ServerConnectRoutes { } }, onDone: () { - logger.i('Connection closed'); + AppLogger.log.i('Connection closed'); }, ), ]); diff --git a/lib/services/cli/cli.dart b/lib/services/cli/cli.dart index 720216c7..985c0e72 100644 --- a/lib/services/cli/cli.dart +++ b/lib/services/cli/cli.dart @@ -5,7 +5,6 @@ import 'dart:io'; import 'package:args/args.dart'; import 'package:flutter/foundation.dart'; import 'package:package_info_plus/package_info_plus.dart'; -import 'package:spotube/models/logger.dart'; Future startCLI(List args) async { final parser = ArgParser(); @@ -15,13 +14,6 @@ Future startCLI(List args) async { abbr: 'v', help: 'Verbose mode', defaultsTo: !kReleaseMode, - callback: (verbose) { - if (verbose) { - logEnv['VERBOSE'] = 'true'; - logEnv['DEBUG'] = 'true'; - logEnv['ERROR'] = 'true'; - } - }, ); parser.addFlag( "version", diff --git a/lib/services/download_manager/chunked_download.dart b/lib/services/download_manager/chunked_download.dart index 9e5e0a98..80a3e78f 100644 --- a/lib/services/download_manager/chunked_download.dart +++ b/lib/services/download_manager/chunked_download.dart @@ -2,9 +2,6 @@ import 'dart:async'; import 'dart:io'; import 'package:dio/dio.dart'; -import 'package:spotube/models/logger.dart'; - -final logger = getLogger("ChunkedDownload"); /// Downloading by spiting as file in chunks extension ChunkDownload on Dio { @@ -69,11 +66,7 @@ extension ChunkDownload on Dio { } await raf.close(); - logger.d("Downloaded file path: ${headFile.path}"); - headFile = await headFile.rename(savePath); - - logger.d("Renamed file path: ${headFile.path}"); } final firstResponse = await downloadChunk( diff --git a/lib/services/download_manager/download_manager.dart b/lib/services/download_manager/download_manager.dart index afbee88c..d2072bd7 100644 --- a/lib/services/download_manager/download_manager.dart +++ b/lib/services/download_manager/download_manager.dart @@ -1,18 +1,18 @@ import 'dart:async'; import 'dart:collection'; import 'dart:io'; -import 'package:spotube/services/logger/logger.dart'; import 'package:collection/collection.dart'; import 'package:dio/dio.dart'; import 'package:flutter/foundation.dart'; import 'package:path/path.dart' as path; import 'package:path_provider/path_provider.dart'; -import 'package:spotube/models/logger.dart'; + import 'package:spotube/services/download_manager/chunked_download.dart'; import 'package:spotube/services/download_manager/download_request.dart'; import 'package:spotube/services/download_manager/download_status.dart'; import 'package:spotube/services/download_manager/download_task.dart'; +import 'package:spotube/services/logger/logger.dart'; import 'package:spotube/utils/primitive_utils.dart'; export './download_request.dart'; @@ -25,7 +25,6 @@ typedef DownloadStatusEvent = ({ }); class DownloadManager { - final logger = getLogger("DownloadManager"); final Map _cache = {}; final Queue _queue = Queue(); var dio = Dio(); @@ -77,7 +76,6 @@ class DownloadManager { } setStatus(task, DownloadStatus.downloading); - logger.d("[DownloadManager] $url"); final file = File(savePath.toString()); await Directory(path.dirname(savePath)).create(recursive: true); @@ -99,11 +97,8 @@ class DownloadManager { final partialFileExist = await partialFile.exists(); if (fileExist) { - logger.d("[DownloadManager] File Exists"); setStatus(task, DownloadStatus.completed); } else if (partialFileExist) { - logger.d("[DownloadManager] Partial File Exists"); - final partialFileLength = await partialFile.length(); final response = await dio.download( @@ -225,7 +220,6 @@ class DownloadManager { } Future pauseDownload(String url) async { - logger.d("[DownloadManager] Pause Download"); var task = getDownload(url)!; setStatus(task, DownloadStatus.paused); task.request.cancelToken.cancel(); @@ -234,7 +228,6 @@ class DownloadManager { } Future cancelDownload(String url) async { - logger.d("[DownloadManager] Cancel Download"); var task = getDownload(url)!; setStatus(task, DownloadStatus.canceled); _queue.remove(task.request); @@ -242,7 +235,6 @@ class DownloadManager { } Future resumeDownload(String url) async { - logger.d("[DownloadManager] Resume Download"); var task = getDownload(url)!; setStatus(task, DownloadStatus.downloading); task.request.cancelToken = CancelToken(); @@ -405,7 +397,6 @@ class DownloadManager { while (_queue.isNotEmpty && runningTasks < maxConcurrentTasks) { runningTasks++; - logger.d('Concurrent workers: $runningTasks'); var currentRequest = _queue.removeFirst(); await download( diff --git a/lib/utils/service_utils.dart b/lib/utils/service_utils.dart index 5950bc8c..c00f07ab 100644 --- a/lib/utils/service_utils.dart +++ b/lib/utils/service_utils.dart @@ -4,7 +4,7 @@ import 'package:html/dom.dart' hide Text; import 'package:spotify/spotify.dart'; import 'package:spotube/modules/library/user_local_tracks.dart'; import 'package:spotube/modules/root/update_dialog.dart'; -import 'package:spotube/models/logger.dart'; + import 'package:spotube/models/lyrics.dart'; import 'package:spotube/provider/database/database.dart'; import 'package:spotube/services/dio/dio.dart'; @@ -24,8 +24,6 @@ import 'package:spotube/collections/env.dart'; import 'package:version/version.dart'; abstract class ServiceUtils { - static final logger = getLogger("ServiceUtils"); - static final _englishMatcherRegex = RegExp( "^[a-zA-Z0-9\\s!\"#\$%&\\'()*+,-.\\/:;<=>?@\\[\\]^_`{|}~]*\$", ); @@ -194,8 +192,6 @@ abstract class ServiceUtils { artists: artistNames, ); - logger.v("[Searching Subtitle] $query"); - final searchUri = Uri.parse("$baseUri/subtitles4songs.aspx").replace( queryParameters: {"q": query}, ); @@ -227,7 +223,6 @@ abstract class ServiceUtils { // not result was found at all if (rateSortedResults.first["points"] == 0) { - logger.e("[Subtitle not found] ${track.name}"); return Future.error("Subtitle lookup failed", StackTrace.current); } @@ -235,8 +230,6 @@ abstract class ServiceUtils { final subtitleUri = Uri.parse("$baseUri/${topResult.attributes["href"]}&type=lrc"); - logger.v("[Selected subtitle] ${topResult.text} | $subtitleUri"); - final lrcDocument = parser.parse((await globalDio.getUri( subtitleUri, options: Options(responseType: ResponseType.plain),