From 08d1c98674e12c6e319dff72e6b35be94ecdea77 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Tue, 19 Aug 2025 20:22:48 +0600 Subject: [PATCH] refactor: move scrobbler to their own place --- lib/collections/routes.dart | 4 + lib/collections/routes.gr.dart | 400 +++++++++--------- lib/pages/settings/scrobbling/scrobbling.dart | 67 +++ lib/pages/settings/sections/accounts.dart | 16 +- 4 files changed, 287 insertions(+), 200 deletions(-) create mode 100644 lib/pages/settings/scrobbling/scrobbling.dart diff --git a/lib/collections/routes.dart b/lib/collections/routes.dart index d38303a7..4dcd9657 100644 --- a/lib/collections/routes.dart +++ b/lib/collections/routes.dart @@ -108,6 +108,10 @@ class AppRouter extends RootStackRouter { path: "settings/about", page: AboutSpotubeRoute.page, ), + AutoRoute( + path: "settings/scrobbling", + page: SettingsScrobblingRoute.page, + ), AutoRoute( path: "album/:id", page: AlbumRoute.page, diff --git a/lib/collections/routes.gr.dart b/lib/collections/routes.gr.dart index a5138c2f..e039abb9 100644 --- a/lib/collections/routes.gr.dart +++ b/lib/collections/routes.gr.dart @@ -8,10 +8,10 @@ // coverage:ignore-file // ignore_for_file: no_leading_underscores_for_library_prefixes -import 'package:auto_route/auto_route.dart' as _i40; -import 'package:flutter/material.dart' as _i41; -import 'package:shadcn_flutter/shadcn_flutter.dart' as _i43; -import 'package:spotube/models/metadata/metadata.dart' as _i42; +import 'package:auto_route/auto_route.dart' as _i41; +import 'package:flutter/material.dart' as _i42; +import 'package:shadcn_flutter/shadcn_flutter.dart' as _i44; +import 'package:spotube/models/metadata/metadata.dart' as _i43; import 'package:spotube/pages/album/album.dart' as _i2; import 'package:spotube/pages/artist/artist.dart' as _i3; import 'package:spotube/pages/connect/connect.dart' as _i6; @@ -21,14 +21,14 @@ import 'package:spotube/pages/home/home.dart' as _i9; import 'package:spotube/pages/home/sections/section_items.dart' as _i8; import 'package:spotube/pages/lastfm_login/lastfm_login.dart' as _i10; import 'package:spotube/pages/library/library.dart' as _i11; -import 'package:spotube/pages/library/user_albums.dart' as _i35; -import 'package:spotube/pages/library/user_artists.dart' as _i36; -import 'package:spotube/pages/library/user_downloads.dart' as _i37; +import 'package:spotube/pages/library/user_albums.dart' as _i36; +import 'package:spotube/pages/library/user_artists.dart' as _i37; +import 'package:spotube/pages/library/user_downloads.dart' as _i38; import 'package:spotube/pages/library/user_local_tracks/local_folder.dart' as _i13; import 'package:spotube/pages/library/user_local_tracks/user_local_tracks.dart' - as _i38; -import 'package:spotube/pages/library/user_playlists.dart' as _i39; + as _i39; +import 'package:spotube/pages/library/user_playlists.dart' as _i40; import 'package:spotube/pages/lyrics/lyrics.dart' as _i15; import 'package:spotube/pages/lyrics/mini_lyrics.dart' as _i16; import 'package:spotube/pages/player/lyrics.dart' as _i17; @@ -44,20 +44,21 @@ import 'package:spotube/pages/settings/blacklist.dart' as _i4; import 'package:spotube/pages/settings/logs.dart' as _i14; import 'package:spotube/pages/settings/metadata/metadata_form.dart' as _i24; import 'package:spotube/pages/settings/metadata_plugins.dart' as _i25; +import 'package:spotube/pages/settings/scrobbling/scrobbling.dart' as _i27; import 'package:spotube/pages/settings/settings.dart' as _i26; -import 'package:spotube/pages/stats/albums/albums.dart' as _i27; -import 'package:spotube/pages/stats/artists/artists.dart' as _i28; -import 'package:spotube/pages/stats/fees/fees.dart' as _i32; -import 'package:spotube/pages/stats/minutes/minutes.dart' as _i29; -import 'package:spotube/pages/stats/playlists/playlists.dart' as _i31; -import 'package:spotube/pages/stats/stats.dart' as _i30; -import 'package:spotube/pages/stats/streams/streams.dart' as _i33; -import 'package:spotube/pages/track/track.dart' as _i34; +import 'package:spotube/pages/stats/albums/albums.dart' as _i28; +import 'package:spotube/pages/stats/artists/artists.dart' as _i29; +import 'package:spotube/pages/stats/fees/fees.dart' as _i33; +import 'package:spotube/pages/stats/minutes/minutes.dart' as _i30; +import 'package:spotube/pages/stats/playlists/playlists.dart' as _i32; +import 'package:spotube/pages/stats/stats.dart' as _i31; +import 'package:spotube/pages/stats/streams/streams.dart' as _i34; +import 'package:spotube/pages/track/track.dart' as _i35; /// generated route for /// [_i1.AboutSpotubePage] -class AboutSpotubeRoute extends _i40.PageRouteInfo { - const AboutSpotubeRoute({List<_i40.PageRouteInfo>? children}) +class AboutSpotubeRoute extends _i41.PageRouteInfo { + const AboutSpotubeRoute({List<_i41.PageRouteInfo>? children}) : super( AboutSpotubeRoute.name, initialChildren: children, @@ -65,7 +66,7 @@ class AboutSpotubeRoute extends _i40.PageRouteInfo { static const String name = 'AboutSpotubeRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { return const _i1.AboutSpotubePage(); @@ -75,12 +76,12 @@ class AboutSpotubeRoute extends _i40.PageRouteInfo { /// generated route for /// [_i2.AlbumPage] -class AlbumRoute extends _i40.PageRouteInfo { +class AlbumRoute extends _i41.PageRouteInfo { AlbumRoute({ - _i41.Key? key, + _i42.Key? key, required String id, - required _i42.SpotubeSimpleAlbumObject album, - List<_i40.PageRouteInfo>? children, + required _i43.SpotubeSimpleAlbumObject album, + List<_i41.PageRouteInfo>? children, }) : super( AlbumRoute.name, args: AlbumRouteArgs( @@ -94,7 +95,7 @@ class AlbumRoute extends _i40.PageRouteInfo { static const String name = 'AlbumRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { final args = data.argsAs(); @@ -114,11 +115,11 @@ class AlbumRouteArgs { required this.album, }); - final _i41.Key? key; + final _i42.Key? key; final String id; - final _i42.SpotubeSimpleAlbumObject album; + final _i43.SpotubeSimpleAlbumObject album; @override String toString() { @@ -128,11 +129,11 @@ class AlbumRouteArgs { /// generated route for /// [_i3.ArtistPage] -class ArtistRoute extends _i40.PageRouteInfo { +class ArtistRoute extends _i41.PageRouteInfo { ArtistRoute({ required String artistId, - _i41.Key? key, - List<_i40.PageRouteInfo>? children, + _i42.Key? key, + List<_i41.PageRouteInfo>? children, }) : super( ArtistRoute.name, args: ArtistRouteArgs( @@ -145,7 +146,7 @@ class ArtistRoute extends _i40.PageRouteInfo { static const String name = 'ArtistRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { final pathParams = data.inheritedPathParams; @@ -167,7 +168,7 @@ class ArtistRouteArgs { final String artistId; - final _i41.Key? key; + final _i42.Key? key; @override String toString() { @@ -177,8 +178,8 @@ class ArtistRouteArgs { /// generated route for /// [_i4.BlackListPage] -class BlackListRoute extends _i40.PageRouteInfo { - const BlackListRoute({List<_i40.PageRouteInfo>? children}) +class BlackListRoute extends _i41.PageRouteInfo { + const BlackListRoute({List<_i41.PageRouteInfo>? children}) : super( BlackListRoute.name, initialChildren: children, @@ -186,7 +187,7 @@ class BlackListRoute extends _i40.PageRouteInfo { static const String name = 'BlackListRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { return const _i4.BlackListPage(); @@ -196,8 +197,8 @@ class BlackListRoute extends _i40.PageRouteInfo { /// generated route for /// [_i5.ConnectControlPage] -class ConnectControlRoute extends _i40.PageRouteInfo { - const ConnectControlRoute({List<_i40.PageRouteInfo>? children}) +class ConnectControlRoute extends _i41.PageRouteInfo { + const ConnectControlRoute({List<_i41.PageRouteInfo>? children}) : super( ConnectControlRoute.name, initialChildren: children, @@ -205,7 +206,7 @@ class ConnectControlRoute extends _i40.PageRouteInfo { static const String name = 'ConnectControlRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { return const _i5.ConnectControlPage(); @@ -215,8 +216,8 @@ class ConnectControlRoute extends _i40.PageRouteInfo { /// generated route for /// [_i6.ConnectPage] -class ConnectRoute extends _i40.PageRouteInfo { - const ConnectRoute({List<_i40.PageRouteInfo>? children}) +class ConnectRoute extends _i41.PageRouteInfo { + const ConnectRoute({List<_i41.PageRouteInfo>? children}) : super( ConnectRoute.name, initialChildren: children, @@ -224,7 +225,7 @@ class ConnectRoute extends _i40.PageRouteInfo { static const String name = 'ConnectRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { return const _i6.ConnectPage(); @@ -234,8 +235,8 @@ class ConnectRoute extends _i40.PageRouteInfo { /// generated route for /// [_i7.GettingStartedPage] -class GettingStartedRoute extends _i40.PageRouteInfo { - const GettingStartedRoute({List<_i40.PageRouteInfo>? children}) +class GettingStartedRoute extends _i41.PageRouteInfo { + const GettingStartedRoute({List<_i41.PageRouteInfo>? children}) : super( GettingStartedRoute.name, initialChildren: children, @@ -243,7 +244,7 @@ class GettingStartedRoute extends _i40.PageRouteInfo { static const String name = 'GettingStartedRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { return const _i7.GettingStartedPage(); @@ -254,12 +255,12 @@ class GettingStartedRoute extends _i40.PageRouteInfo { /// generated route for /// [_i8.HomeBrowseSectionItemsPage] class HomeBrowseSectionItemsRoute - extends _i40.PageRouteInfo { + extends _i41.PageRouteInfo { HomeBrowseSectionItemsRoute({ - _i43.Key? key, + _i44.Key? key, required String sectionId, - required _i42.SpotubeBrowseSectionObject section, - List<_i40.PageRouteInfo>? children, + required _i43.SpotubeBrowseSectionObject section, + List<_i41.PageRouteInfo>? children, }) : super( HomeBrowseSectionItemsRoute.name, args: HomeBrowseSectionItemsRouteArgs( @@ -273,7 +274,7 @@ class HomeBrowseSectionItemsRoute static const String name = 'HomeBrowseSectionItemsRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { final args = data.argsAs(); @@ -293,11 +294,11 @@ class HomeBrowseSectionItemsRouteArgs { required this.section, }); - final _i43.Key? key; + final _i44.Key? key; final String sectionId; - final _i42.SpotubeBrowseSectionObject section; + final _i43.SpotubeBrowseSectionObject section; @override String toString() { @@ -307,8 +308,8 @@ class HomeBrowseSectionItemsRouteArgs { /// generated route for /// [_i9.HomePage] -class HomeRoute extends _i40.PageRouteInfo { - const HomeRoute({List<_i40.PageRouteInfo>? children}) +class HomeRoute extends _i41.PageRouteInfo { + const HomeRoute({List<_i41.PageRouteInfo>? children}) : super( HomeRoute.name, initialChildren: children, @@ -316,7 +317,7 @@ class HomeRoute extends _i40.PageRouteInfo { static const String name = 'HomeRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { return const _i9.HomePage(); @@ -326,8 +327,8 @@ class HomeRoute extends _i40.PageRouteInfo { /// generated route for /// [_i10.LastFMLoginPage] -class LastFMLoginRoute extends _i40.PageRouteInfo { - const LastFMLoginRoute({List<_i40.PageRouteInfo>? children}) +class LastFMLoginRoute extends _i41.PageRouteInfo { + const LastFMLoginRoute({List<_i41.PageRouteInfo>? children}) : super( LastFMLoginRoute.name, initialChildren: children, @@ -335,7 +336,7 @@ class LastFMLoginRoute extends _i40.PageRouteInfo { static const String name = 'LastFMLoginRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { return const _i10.LastFMLoginPage(); @@ -345,8 +346,8 @@ class LastFMLoginRoute extends _i40.PageRouteInfo { /// generated route for /// [_i11.LibraryPage] -class LibraryRoute extends _i40.PageRouteInfo { - const LibraryRoute({List<_i40.PageRouteInfo>? children}) +class LibraryRoute extends _i41.PageRouteInfo { + const LibraryRoute({List<_i41.PageRouteInfo>? children}) : super( LibraryRoute.name, initialChildren: children, @@ -354,7 +355,7 @@ class LibraryRoute extends _i40.PageRouteInfo { static const String name = 'LibraryRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { return const _i11.LibraryPage(); @@ -364,11 +365,11 @@ class LibraryRoute extends _i40.PageRouteInfo { /// generated route for /// [_i12.LikedPlaylistPage] -class LikedPlaylistRoute extends _i40.PageRouteInfo { +class LikedPlaylistRoute extends _i41.PageRouteInfo { LikedPlaylistRoute({ - _i41.Key? key, - required _i42.SpotubeSimplePlaylistObject playlist, - List<_i40.PageRouteInfo>? children, + _i42.Key? key, + required _i43.SpotubeSimplePlaylistObject playlist, + List<_i41.PageRouteInfo>? children, }) : super( LikedPlaylistRoute.name, args: LikedPlaylistRouteArgs( @@ -380,7 +381,7 @@ class LikedPlaylistRoute extends _i40.PageRouteInfo { static const String name = 'LikedPlaylistRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { final args = data.argsAs(); @@ -398,9 +399,9 @@ class LikedPlaylistRouteArgs { required this.playlist, }); - final _i41.Key? key; + final _i42.Key? key; - final _i42.SpotubeSimplePlaylistObject playlist; + final _i43.SpotubeSimplePlaylistObject playlist; @override String toString() { @@ -410,13 +411,13 @@ class LikedPlaylistRouteArgs { /// generated route for /// [_i13.LocalLibraryPage] -class LocalLibraryRoute extends _i40.PageRouteInfo { +class LocalLibraryRoute extends _i41.PageRouteInfo { LocalLibraryRoute({ required String location, - _i41.Key? key, + _i42.Key? key, bool isDownloads = false, bool isCache = false, - List<_i40.PageRouteInfo>? children, + List<_i41.PageRouteInfo>? children, }) : super( LocalLibraryRoute.name, args: LocalLibraryRouteArgs( @@ -430,7 +431,7 @@ class LocalLibraryRoute extends _i40.PageRouteInfo { static const String name = 'LocalLibraryRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { final args = data.argsAs(); @@ -454,7 +455,7 @@ class LocalLibraryRouteArgs { final String location; - final _i41.Key? key; + final _i42.Key? key; final bool isDownloads; @@ -468,8 +469,8 @@ class LocalLibraryRouteArgs { /// generated route for /// [_i14.LogsPage] -class LogsRoute extends _i40.PageRouteInfo { - const LogsRoute({List<_i40.PageRouteInfo>? children}) +class LogsRoute extends _i41.PageRouteInfo { + const LogsRoute({List<_i41.PageRouteInfo>? children}) : super( LogsRoute.name, initialChildren: children, @@ -477,7 +478,7 @@ class LogsRoute extends _i40.PageRouteInfo { static const String name = 'LogsRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { return const _i14.LogsPage(); @@ -487,8 +488,8 @@ class LogsRoute extends _i40.PageRouteInfo { /// generated route for /// [_i15.LyricsPage] -class LyricsRoute extends _i40.PageRouteInfo { - const LyricsRoute({List<_i40.PageRouteInfo>? children}) +class LyricsRoute extends _i41.PageRouteInfo { + const LyricsRoute({List<_i41.PageRouteInfo>? children}) : super( LyricsRoute.name, initialChildren: children, @@ -496,7 +497,7 @@ class LyricsRoute extends _i40.PageRouteInfo { static const String name = 'LyricsRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { return const _i15.LyricsPage(); @@ -506,11 +507,11 @@ class LyricsRoute extends _i40.PageRouteInfo { /// generated route for /// [_i16.MiniLyricsPage] -class MiniLyricsRoute extends _i40.PageRouteInfo { +class MiniLyricsRoute extends _i41.PageRouteInfo { MiniLyricsRoute({ - _i43.Key? key, - required _i43.Size prevSize, - List<_i40.PageRouteInfo>? children, + _i44.Key? key, + required _i44.Size prevSize, + List<_i41.PageRouteInfo>? children, }) : super( MiniLyricsRoute.name, args: MiniLyricsRouteArgs( @@ -522,7 +523,7 @@ class MiniLyricsRoute extends _i40.PageRouteInfo { static const String name = 'MiniLyricsRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { final args = data.argsAs(); @@ -540,9 +541,9 @@ class MiniLyricsRouteArgs { required this.prevSize, }); - final _i43.Key? key; + final _i44.Key? key; - final _i43.Size prevSize; + final _i44.Size prevSize; @override String toString() { @@ -552,8 +553,8 @@ class MiniLyricsRouteArgs { /// generated route for /// [_i17.PlayerLyricsPage] -class PlayerLyricsRoute extends _i40.PageRouteInfo { - const PlayerLyricsRoute({List<_i40.PageRouteInfo>? children}) +class PlayerLyricsRoute extends _i41.PageRouteInfo { + const PlayerLyricsRoute({List<_i41.PageRouteInfo>? children}) : super( PlayerLyricsRoute.name, initialChildren: children, @@ -561,7 +562,7 @@ class PlayerLyricsRoute extends _i40.PageRouteInfo { static const String name = 'PlayerLyricsRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { return const _i17.PlayerLyricsPage(); @@ -571,8 +572,8 @@ class PlayerLyricsRoute extends _i40.PageRouteInfo { /// generated route for /// [_i18.PlayerQueuePage] -class PlayerQueueRoute extends _i40.PageRouteInfo { - const PlayerQueueRoute({List<_i40.PageRouteInfo>? children}) +class PlayerQueueRoute extends _i41.PageRouteInfo { + const PlayerQueueRoute({List<_i41.PageRouteInfo>? children}) : super( PlayerQueueRoute.name, initialChildren: children, @@ -580,7 +581,7 @@ class PlayerQueueRoute extends _i40.PageRouteInfo { static const String name = 'PlayerQueueRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { return const _i18.PlayerQueuePage(); @@ -590,8 +591,8 @@ class PlayerQueueRoute extends _i40.PageRouteInfo { /// generated route for /// [_i19.PlayerTrackSourcesPage] -class PlayerTrackSourcesRoute extends _i40.PageRouteInfo { - const PlayerTrackSourcesRoute({List<_i40.PageRouteInfo>? children}) +class PlayerTrackSourcesRoute extends _i41.PageRouteInfo { + const PlayerTrackSourcesRoute({List<_i41.PageRouteInfo>? children}) : super( PlayerTrackSourcesRoute.name, initialChildren: children, @@ -599,7 +600,7 @@ class PlayerTrackSourcesRoute extends _i40.PageRouteInfo { static const String name = 'PlayerTrackSourcesRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { return const _i19.PlayerTrackSourcesPage(); @@ -609,12 +610,12 @@ class PlayerTrackSourcesRoute extends _i40.PageRouteInfo { /// generated route for /// [_i20.PlaylistPage] -class PlaylistRoute extends _i40.PageRouteInfo { +class PlaylistRoute extends _i41.PageRouteInfo { PlaylistRoute({ - _i41.Key? key, + _i42.Key? key, required String id, - required _i42.SpotubeSimplePlaylistObject playlist, - List<_i40.PageRouteInfo>? children, + required _i43.SpotubeSimplePlaylistObject playlist, + List<_i41.PageRouteInfo>? children, }) : super( PlaylistRoute.name, args: PlaylistRouteArgs( @@ -628,7 +629,7 @@ class PlaylistRoute extends _i40.PageRouteInfo { static const String name = 'PlaylistRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { final args = data.argsAs(); @@ -648,11 +649,11 @@ class PlaylistRouteArgs { required this.playlist, }); - final _i41.Key? key; + final _i42.Key? key; final String id; - final _i42.SpotubeSimplePlaylistObject playlist; + final _i43.SpotubeSimplePlaylistObject playlist; @override String toString() { @@ -662,8 +663,8 @@ class PlaylistRouteArgs { /// generated route for /// [_i21.ProfilePage] -class ProfileRoute extends _i40.PageRouteInfo { - const ProfileRoute({List<_i40.PageRouteInfo>? children}) +class ProfileRoute extends _i41.PageRouteInfo { + const ProfileRoute({List<_i41.PageRouteInfo>? children}) : super( ProfileRoute.name, initialChildren: children, @@ -671,7 +672,7 @@ class ProfileRoute extends _i40.PageRouteInfo { static const String name = 'ProfileRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { return const _i21.ProfilePage(); @@ -681,8 +682,8 @@ class ProfileRoute extends _i40.PageRouteInfo { /// generated route for /// [_i22.RootAppPage] -class RootAppRoute extends _i40.PageRouteInfo { - const RootAppRoute({List<_i40.PageRouteInfo>? children}) +class RootAppRoute extends _i41.PageRouteInfo { + const RootAppRoute({List<_i41.PageRouteInfo>? children}) : super( RootAppRoute.name, initialChildren: children, @@ -690,7 +691,7 @@ class RootAppRoute extends _i40.PageRouteInfo { static const String name = 'RootAppRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { return const _i22.RootAppPage(); @@ -700,8 +701,8 @@ class RootAppRoute extends _i40.PageRouteInfo { /// generated route for /// [_i23.SearchPage] -class SearchRoute extends _i40.PageRouteInfo { - const SearchRoute({List<_i40.PageRouteInfo>? children}) +class SearchRoute extends _i41.PageRouteInfo { + const SearchRoute({List<_i41.PageRouteInfo>? children}) : super( SearchRoute.name, initialChildren: children, @@ -709,7 +710,7 @@ class SearchRoute extends _i40.PageRouteInfo { static const String name = 'SearchRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { return const _i23.SearchPage(); @@ -720,12 +721,12 @@ class SearchRoute extends _i40.PageRouteInfo { /// generated route for /// [_i24.SettingsMetadataProviderFormPage] class SettingsMetadataProviderFormRoute - extends _i40.PageRouteInfo { + extends _i41.PageRouteInfo { SettingsMetadataProviderFormRoute({ - _i43.Key? key, + _i44.Key? key, required String title, - required List<_i42.MetadataFormFieldObject> fields, - List<_i40.PageRouteInfo>? children, + required List<_i43.MetadataFormFieldObject> fields, + List<_i41.PageRouteInfo>? children, }) : super( SettingsMetadataProviderFormRoute.name, args: SettingsMetadataProviderFormRouteArgs( @@ -738,7 +739,7 @@ class SettingsMetadataProviderFormRoute static const String name = 'SettingsMetadataProviderFormRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { final args = data.argsAs(); @@ -758,11 +759,11 @@ class SettingsMetadataProviderFormRouteArgs { required this.fields, }); - final _i43.Key? key; + final _i44.Key? key; final String title; - final List<_i42.MetadataFormFieldObject> fields; + final List<_i43.MetadataFormFieldObject> fields; @override String toString() { @@ -772,8 +773,8 @@ class SettingsMetadataProviderFormRouteArgs { /// generated route for /// [_i25.SettingsMetadataProviderPage] -class SettingsMetadataProviderRoute extends _i40.PageRouteInfo { - const SettingsMetadataProviderRoute({List<_i40.PageRouteInfo>? children}) +class SettingsMetadataProviderRoute extends _i41.PageRouteInfo { + const SettingsMetadataProviderRoute({List<_i41.PageRouteInfo>? children}) : super( SettingsMetadataProviderRoute.name, initialChildren: children, @@ -781,7 +782,7 @@ class SettingsMetadataProviderRoute extends _i40.PageRouteInfo { static const String name = 'SettingsMetadataProviderRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { return const _i25.SettingsMetadataProviderPage(); @@ -791,8 +792,8 @@ class SettingsMetadataProviderRoute extends _i40.PageRouteInfo { /// generated route for /// [_i26.SettingsPage] -class SettingsRoute extends _i40.PageRouteInfo { - const SettingsRoute({List<_i40.PageRouteInfo>? children}) +class SettingsRoute extends _i41.PageRouteInfo { + const SettingsRoute({List<_i41.PageRouteInfo>? children}) : super( SettingsRoute.name, initialChildren: children, @@ -800,7 +801,7 @@ class SettingsRoute extends _i40.PageRouteInfo { static const String name = 'SettingsRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { return const _i26.SettingsPage(); @@ -809,9 +810,28 @@ class SettingsRoute extends _i40.PageRouteInfo { } /// generated route for -/// [_i27.StatsAlbumsPage] -class StatsAlbumsRoute extends _i40.PageRouteInfo { - const StatsAlbumsRoute({List<_i40.PageRouteInfo>? children}) +/// [_i27.SettingsScrobblingPage] +class SettingsScrobblingRoute extends _i41.PageRouteInfo { + const SettingsScrobblingRoute({List<_i41.PageRouteInfo>? children}) + : super( + SettingsScrobblingRoute.name, + initialChildren: children, + ); + + static const String name = 'SettingsScrobblingRoute'; + + static _i41.PageInfo page = _i41.PageInfo( + name, + builder: (data) { + return const _i27.SettingsScrobblingPage(); + }, + ); +} + +/// generated route for +/// [_i28.StatsAlbumsPage] +class StatsAlbumsRoute extends _i41.PageRouteInfo { + const StatsAlbumsRoute({List<_i41.PageRouteInfo>? children}) : super( StatsAlbumsRoute.name, initialChildren: children, @@ -819,18 +839,18 @@ class StatsAlbumsRoute extends _i40.PageRouteInfo { static const String name = 'StatsAlbumsRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { - return const _i27.StatsAlbumsPage(); + return const _i28.StatsAlbumsPage(); }, ); } /// generated route for -/// [_i28.StatsArtistsPage] -class StatsArtistsRoute extends _i40.PageRouteInfo { - const StatsArtistsRoute({List<_i40.PageRouteInfo>? children}) +/// [_i29.StatsArtistsPage] +class StatsArtistsRoute extends _i41.PageRouteInfo { + const StatsArtistsRoute({List<_i41.PageRouteInfo>? children}) : super( StatsArtistsRoute.name, initialChildren: children, @@ -838,18 +858,18 @@ class StatsArtistsRoute extends _i40.PageRouteInfo { static const String name = 'StatsArtistsRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { - return const _i28.StatsArtistsPage(); + return const _i29.StatsArtistsPage(); }, ); } /// generated route for -/// [_i29.StatsMinutesPage] -class StatsMinutesRoute extends _i40.PageRouteInfo { - const StatsMinutesRoute({List<_i40.PageRouteInfo>? children}) +/// [_i30.StatsMinutesPage] +class StatsMinutesRoute extends _i41.PageRouteInfo { + const StatsMinutesRoute({List<_i41.PageRouteInfo>? children}) : super( StatsMinutesRoute.name, initialChildren: children, @@ -857,18 +877,18 @@ class StatsMinutesRoute extends _i40.PageRouteInfo { static const String name = 'StatsMinutesRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { - return const _i29.StatsMinutesPage(); + return const _i30.StatsMinutesPage(); }, ); } /// generated route for -/// [_i30.StatsPage] -class StatsRoute extends _i40.PageRouteInfo { - const StatsRoute({List<_i40.PageRouteInfo>? children}) +/// [_i31.StatsPage] +class StatsRoute extends _i41.PageRouteInfo { + const StatsRoute({List<_i41.PageRouteInfo>? children}) : super( StatsRoute.name, initialChildren: children, @@ -876,18 +896,18 @@ class StatsRoute extends _i40.PageRouteInfo { static const String name = 'StatsRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { - return const _i30.StatsPage(); + return const _i31.StatsPage(); }, ); } /// generated route for -/// [_i31.StatsPlaylistsPage] -class StatsPlaylistsRoute extends _i40.PageRouteInfo { - const StatsPlaylistsRoute({List<_i40.PageRouteInfo>? children}) +/// [_i32.StatsPlaylistsPage] +class StatsPlaylistsRoute extends _i41.PageRouteInfo { + const StatsPlaylistsRoute({List<_i41.PageRouteInfo>? children}) : super( StatsPlaylistsRoute.name, initialChildren: children, @@ -895,18 +915,18 @@ class StatsPlaylistsRoute extends _i40.PageRouteInfo { static const String name = 'StatsPlaylistsRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { - return const _i31.StatsPlaylistsPage(); + return const _i32.StatsPlaylistsPage(); }, ); } /// generated route for -/// [_i32.StatsStreamFeesPage] -class StatsStreamFeesRoute extends _i40.PageRouteInfo { - const StatsStreamFeesRoute({List<_i40.PageRouteInfo>? children}) +/// [_i33.StatsStreamFeesPage] +class StatsStreamFeesRoute extends _i41.PageRouteInfo { + const StatsStreamFeesRoute({List<_i41.PageRouteInfo>? children}) : super( StatsStreamFeesRoute.name, initialChildren: children, @@ -914,18 +934,18 @@ class StatsStreamFeesRoute extends _i40.PageRouteInfo { static const String name = 'StatsStreamFeesRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { - return const _i32.StatsStreamFeesPage(); + return const _i33.StatsStreamFeesPage(); }, ); } /// generated route for -/// [_i33.StatsStreamsPage] -class StatsStreamsRoute extends _i40.PageRouteInfo { - const StatsStreamsRoute({List<_i40.PageRouteInfo>? children}) +/// [_i34.StatsStreamsPage] +class StatsStreamsRoute extends _i41.PageRouteInfo { + const StatsStreamsRoute({List<_i41.PageRouteInfo>? children}) : super( StatsStreamsRoute.name, initialChildren: children, @@ -933,21 +953,21 @@ class StatsStreamsRoute extends _i40.PageRouteInfo { static const String name = 'StatsStreamsRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { - return const _i33.StatsStreamsPage(); + return const _i34.StatsStreamsPage(); }, ); } /// generated route for -/// [_i34.TrackPage] -class TrackRoute extends _i40.PageRouteInfo { +/// [_i35.TrackPage] +class TrackRoute extends _i41.PageRouteInfo { TrackRoute({ - _i43.Key? key, + _i44.Key? key, required String trackId, - List<_i40.PageRouteInfo>? children, + List<_i41.PageRouteInfo>? children, }) : super( TrackRoute.name, args: TrackRouteArgs( @@ -960,13 +980,13 @@ class TrackRoute extends _i40.PageRouteInfo { static const String name = 'TrackRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { final pathParams = data.inheritedPathParams; final args = data.argsAs( orElse: () => TrackRouteArgs(trackId: pathParams.getString('id'))); - return _i34.TrackPage( + return _i35.TrackPage( key: args.key, trackId: args.trackId, ); @@ -980,7 +1000,7 @@ class TrackRouteArgs { required this.trackId, }); - final _i43.Key? key; + final _i44.Key? key; final String trackId; @@ -991,9 +1011,9 @@ class TrackRouteArgs { } /// generated route for -/// [_i35.UserAlbumsPage] -class UserAlbumsRoute extends _i40.PageRouteInfo { - const UserAlbumsRoute({List<_i40.PageRouteInfo>? children}) +/// [_i36.UserAlbumsPage] +class UserAlbumsRoute extends _i41.PageRouteInfo { + const UserAlbumsRoute({List<_i41.PageRouteInfo>? children}) : super( UserAlbumsRoute.name, initialChildren: children, @@ -1001,18 +1021,18 @@ class UserAlbumsRoute extends _i40.PageRouteInfo { static const String name = 'UserAlbumsRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { - return const _i35.UserAlbumsPage(); + return const _i36.UserAlbumsPage(); }, ); } /// generated route for -/// [_i36.UserArtistsPage] -class UserArtistsRoute extends _i40.PageRouteInfo { - const UserArtistsRoute({List<_i40.PageRouteInfo>? children}) +/// [_i37.UserArtistsPage] +class UserArtistsRoute extends _i41.PageRouteInfo { + const UserArtistsRoute({List<_i41.PageRouteInfo>? children}) : super( UserArtistsRoute.name, initialChildren: children, @@ -1020,18 +1040,18 @@ class UserArtistsRoute extends _i40.PageRouteInfo { static const String name = 'UserArtistsRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { - return const _i36.UserArtistsPage(); + return const _i37.UserArtistsPage(); }, ); } /// generated route for -/// [_i37.UserDownloadsPage] -class UserDownloadsRoute extends _i40.PageRouteInfo { - const UserDownloadsRoute({List<_i40.PageRouteInfo>? children}) +/// [_i38.UserDownloadsPage] +class UserDownloadsRoute extends _i41.PageRouteInfo { + const UserDownloadsRoute({List<_i41.PageRouteInfo>? children}) : super( UserDownloadsRoute.name, initialChildren: children, @@ -1039,18 +1059,18 @@ class UserDownloadsRoute extends _i40.PageRouteInfo { static const String name = 'UserDownloadsRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { - return const _i37.UserDownloadsPage(); + return const _i38.UserDownloadsPage(); }, ); } /// generated route for -/// [_i38.UserLocalLibraryPage] -class UserLocalLibraryRoute extends _i40.PageRouteInfo { - const UserLocalLibraryRoute({List<_i40.PageRouteInfo>? children}) +/// [_i39.UserLocalLibraryPage] +class UserLocalLibraryRoute extends _i41.PageRouteInfo { + const UserLocalLibraryRoute({List<_i41.PageRouteInfo>? children}) : super( UserLocalLibraryRoute.name, initialChildren: children, @@ -1058,18 +1078,18 @@ class UserLocalLibraryRoute extends _i40.PageRouteInfo { static const String name = 'UserLocalLibraryRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { - return const _i38.UserLocalLibraryPage(); + return const _i39.UserLocalLibraryPage(); }, ); } /// generated route for -/// [_i39.UserPlaylistsPage] -class UserPlaylistsRoute extends _i40.PageRouteInfo { - const UserPlaylistsRoute({List<_i40.PageRouteInfo>? children}) +/// [_i40.UserPlaylistsPage] +class UserPlaylistsRoute extends _i41.PageRouteInfo { + const UserPlaylistsRoute({List<_i41.PageRouteInfo>? children}) : super( UserPlaylistsRoute.name, initialChildren: children, @@ -1077,10 +1097,10 @@ class UserPlaylistsRoute extends _i40.PageRouteInfo { static const String name = 'UserPlaylistsRoute'; - static _i40.PageInfo page = _i40.PageInfo( + static _i41.PageInfo page = _i41.PageInfo( name, builder: (data) { - return const _i39.UserPlaylistsPage(); + return const _i40.UserPlaylistsPage(); }, ); } diff --git a/lib/pages/settings/scrobbling/scrobbling.dart b/lib/pages/settings/scrobbling/scrobbling.dart new file mode 100644 index 00000000..2827781b --- /dev/null +++ b/lib/pages/settings/scrobbling/scrobbling.dart @@ -0,0 +1,67 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart' + show ListTile, ListTileTheme, ListTileThemeData, Material, MaterialType; +import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter_extension.dart'; +import 'package:spotube/collections/routes.gr.dart'; +import 'package:spotube/collections/spotube_icons.dart'; +import 'package:spotube/components/titlebar/titlebar.dart'; +import 'package:spotube/extensions/context.dart'; + +@RoutePage() +class SettingsScrobblingPage extends HookConsumerWidget { + static const name = "settings_scrobbling"; + + const SettingsScrobblingPage({super.key}); + + @override + Widget build(BuildContext context, ref) { + return Material( + type: MaterialType.transparency, + child: ListTileTheme( + data: ListTileThemeData( + contentPadding: EdgeInsets.zero, + minVerticalPadding: 0, + shape: RoundedRectangleBorder( + borderRadius: context.theme.borderRadiusLg, + side: BorderSide( + color: context.theme.colorScheme.border, + width: .5, + ), + ), + textColor: context.theme.colorScheme.foreground, + iconColor: context.theme.colorScheme.foreground, + selectedColor: context.theme.colorScheme.accent, + subtitleTextStyle: context.theme.typography.xSmall, + ), + child: SafeArea( + bottom: false, + child: Scaffold( + headers: const [TitleBar(title: Text("Scrobbling"))], + child: ListView( + padding: const EdgeInsets.all(8), + children: [ + Card( + padding: const EdgeInsets.symmetric(horizontal: 16), + child: ListTile( + leading: const Icon(SpotubeIcons.lastFm, color: Colors.red), + title: Text(context.l10n.login_with_lastfm), + subtitle: Text(context.l10n.scrobble_to_lastfm), + trailing: Button.secondary( + leading: const Icon(SpotubeIcons.lastFm), + onPressed: () { + context.navigateTo(const LastFMLoginRoute()); + }, + child: Text(context.l10n.connect), + ), + ), + ), + ], + ), + ), + ), + ), + ); + } +} diff --git a/lib/pages/settings/sections/accounts.dart b/lib/pages/settings/sections/accounts.dart index c9051470..6dd01a2b 100644 --- a/lib/pages/settings/sections/accounts.dart +++ b/lib/pages/settings/sections/accounts.dart @@ -31,16 +31,12 @@ class SettingsAccountSection extends HookConsumerWidget { ), if (scrobbler.asData?.value == null) ListTile( - leading: const Icon(SpotubeIcons.lastFm), - title: Text(context.l10n.login_with_lastfm), - subtitle: Text(context.l10n.scrobble_to_lastfm), - trailing: Button.secondary( - leading: const Icon(SpotubeIcons.lastFm), - onPressed: () { - context.navigateTo(const LastFMLoginRoute()); - }, - child: Text(context.l10n.connect), - ), + leading: const Icon(SpotubeIcons.music), + title: const Text("Audio scrobblers"), + onTap: () { + context.pushRoute(const SettingsScrobblingRoute()); + }, + trailing: const Icon(SpotubeIcons.angleRight), ) else ListTile(