feat: rename files to snake_case and reorganize folder structure

This commit is contained in:
Kingkor Roy Tirtho 2022-12-08 11:43:31 +06:00
parent 3925f74395
commit 7c25e1cc8a
115 changed files with 505 additions and 502 deletions

View File

@ -4,10 +4,10 @@ import 'package:flutter/services.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:spotube/components/Player/PlayerControls.dart'; import 'package:spotube/components/player/player_controls.dart';
import 'package:spotube/models/GoRouteDeclarations.dart'; import 'package:spotube/collections/routes.dart';
import 'package:spotube/models/Logger.dart'; import 'package:spotube/models/logger.dart';
import 'package:spotube/provider/Playback.dart'; import 'package:spotube/provider/playback_provider.dart';
import 'package:spotube/utils/platform.dart'; import 'package:spotube/utils/platform.dart';
class PlayPauseIntent extends Intent { class PlayPauseIntent extends Intent {

View File

@ -1,21 +1,21 @@
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
import 'package:spotify/spotify.dart' hide Search; import 'package:spotify/spotify.dart' hide Search;
import 'package:spotube/components/Album/AlbumView.dart'; import 'package:spotube/pages/album/album.dart';
import 'package:spotube/components/Artist/ArtistProfile.dart'; import 'package:spotube/pages/artist/artist.dart';
import 'package:spotube/components/Home/Genres.dart'; import 'package:spotube/pages/genre/genres.dart';
import 'package:spotube/components/Home/Shell.dart'; import 'package:spotube/pages/library/library.dart';
import 'package:spotube/components/Library/UserLibrary.dart'; import 'package:spotube/pages/desktop_login/login_tutorial.dart';
import 'package:spotube/components/Login/LoginTutorial.dart'; import 'package:spotube/pages/desktop_login/desktop_login.dart';
import 'package:spotube/components/Login/TokenLogin.dart'; import 'package:spotube/pages/lyrics/lyrics.dart';
import 'package:spotube/components/Lyrics/Lyrics.dart'; import 'package:spotube/pages/player/player.dart';
import 'package:spotube/components/Player/PlayerView.dart'; import 'package:spotube/pages/playlist/playlist.dart';
import 'package:spotube/components/Playlist/PlaylistView.dart'; import 'package:spotube/pages/root/root_app.dart';
import 'package:spotube/components/Search/Search.dart'; import 'package:spotube/pages/search/search.dart';
import 'package:spotube/components/Settings/Settings.dart'; import 'package:spotube/components/shared/spotube_page_route.dart';
import 'package:spotube/components/Shared/SpotubePageRoute.dart'; import 'package:spotube/pages/settings/settings.dart';
import 'package:spotube/utils/platform.dart'; import 'package:spotube/utils/platform.dart';
import 'package:spotube/components/Login/WebViewLogin.dart'; import 'package:spotube/pages/mobile_login/mobile_login.dart';
final rootNavigatorKey = GlobalKey<NavigatorState>(); final rootNavigatorKey = GlobalKey<NavigatorState>();
final shellRouteNavigatorKey = GlobalKey<NavigatorState>(); final shellRouteNavigatorKey = GlobalKey<NavigatorState>();
@ -24,46 +24,49 @@ final router = GoRouter(
routes: [ routes: [
ShellRoute( ShellRoute(
navigatorKey: shellRouteNavigatorKey, navigatorKey: shellRouteNavigatorKey,
builder: (context, state, child) => Shell(child: child), builder: (context, state, child) => RootApp(child: child),
routes: [ routes: [
GoRoute( GoRoute(
path: "/", path: "/",
pageBuilder: (context, state) => SpotubePage(child: const Genres()), pageBuilder: (context, state) =>
SpotubePage(child: const GenrePage()),
), ),
GoRoute( GoRoute(
path: "/search", path: "/search",
name: "Search", name: "Search",
pageBuilder: (context, state) => SpotubePage(child: const Search()), pageBuilder: (context, state) =>
SpotubePage(child: const SearchPage()),
), ),
GoRoute( GoRoute(
path: "/library", path: "/library",
name: "Library", name: "Library",
pageBuilder: (context, state) => pageBuilder: (context, state) =>
SpotubePage(child: const UserLibrary()), SpotubePage(child: const LibraryPage()),
), ),
GoRoute( GoRoute(
path: "/lyrics", path: "/lyrics",
name: "Lyrics", name: "Lyrics",
pageBuilder: (context, state) => SpotubePage(child: const Lyrics()), pageBuilder: (context, state) =>
SpotubePage(child: const LyricsPage()),
), ),
GoRoute( GoRoute(
path: "/settings", path: "/settings",
pageBuilder: (context, state) => SpotubePage( pageBuilder: (context, state) => SpotubePage(
child: const Settings(), child: const SettingsPage(),
), ),
), ),
GoRoute( GoRoute(
path: "/album/:id", path: "/album/:id",
pageBuilder: (context, state) { pageBuilder: (context, state) {
assert(state.extra is AlbumSimple); assert(state.extra is AlbumSimple);
return SpotubePage(child: AlbumView(state.extra as AlbumSimple)); return SpotubePage(child: AlbumPage(state.extra as AlbumSimple));
}, },
), ),
GoRoute( GoRoute(
path: "/artist/:id", path: "/artist/:id",
pageBuilder: (context, state) { pageBuilder: (context, state) {
assert(state.params["id"] != null); assert(state.params["id"] != null);
return SpotubePage(child: ArtistProfile(state.params["id"]!)); return SpotubePage(child: ArtistPage(state.params["id"]!));
}, },
), ),
GoRoute( GoRoute(
@ -81,7 +84,7 @@ final router = GoRouter(
path: "/login", path: "/login",
parentNavigatorKey: rootNavigatorKey, parentNavigatorKey: rootNavigatorKey,
pageBuilder: (context, state) => SpotubePage( pageBuilder: (context, state) => SpotubePage(
child: kIsMobile ? const WebViewLogin() : const TokenLogin(), child: kIsMobile ? const WebViewLogin() : const DesktopLoginPage(),
), ),
), ),
GoRoute( GoRoute(

View File

@ -1,11 +1,11 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:spotube/components/Shared/PlaybuttonCard.dart'; import 'package:spotube/components/shared/playbutton_card.dart';
import 'package:spotube/hooks/useBreakpointValue.dart'; import 'package:spotube/hooks/use_breakpoint_value.dart';
import 'package:spotube/models/CurrentPlaylist.dart'; import 'package:spotube/models/current_playlist.dart';
import 'package:spotube/provider/Playback.dart'; import 'package:spotube/provider/playback_provider.dart';
import 'package:spotube/provider/SpotifyDI.dart'; import 'package:spotube/provider/spotify_provider.dart';
import 'package:spotube/utils/service_utils.dart'; import 'package:spotube/utils/service_utils.dart';
import 'package:spotube/utils/type_conversion_utils.dart'; import 'package:spotube/utils/type_conversion_utils.dart';

View File

@ -4,11 +4,11 @@ import 'package:flutter/material.dart' hide Page;
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:spotube/components/Album/AlbumCard.dart'; import 'package:spotube/components/album/album_card.dart';
import 'package:spotube/components/LoaderShimmers/ShimmerPlaybuttonCard.dart'; import 'package:spotube/components/shared/shimmers/shimmer_playbutton_card.dart';
import 'package:spotube/components/Shared/Waypoint.dart'; import 'package:spotube/components/shared/waypoint.dart';
import 'package:spotube/models/Logger.dart'; import 'package:spotube/models/logger.dart';
import 'package:spotube/provider/SpotifyDI.dart'; import 'package:spotube/provider/spotify_provider.dart';
import 'package:spotube/provider/SpotifyRequests.dart'; import 'package:spotube/provider/SpotifyRequests.dart';
class ArtistAlbumList extends HookConsumerWidget { class ArtistAlbumList extends HookConsumerWidget {

View File

@ -4,9 +4,9 @@ import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:spotube/components/Shared/HoverBuilder.dart'; import 'package:spotube/components/shared/hover_builder.dart';
import 'package:spotube/components/Shared/UniversalImage.dart'; import 'package:spotube/components/shared/image/universal_image.dart';
import 'package:spotube/hooks/usePlatformProperty.dart'; import 'package:spotube/hooks/use_platform_property.dart';
import 'package:spotube/utils/service_utils.dart'; import 'package:spotube/utils/service_utils.dart';
import 'package:spotube/utils/type_conversion_utils.dart'; import 'package:spotube/utils/type_conversion_utils.dart';

View File

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/provider/Auth.dart'; import 'package:spotube/provider/auth_provider.dart';
import 'package:spotube/utils/service_utils.dart'; import 'package:spotube/utils/service_utils.dart';
class TokenLoginForm extends HookConsumerWidget { class TokenLoginForm extends HookConsumerWidget {

View File

@ -5,11 +5,11 @@ import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:spotube/components/LoaderShimmers/ShimmerPlaybuttonCard.dart'; import 'package:spotube/components/shared/shimmers/shimmer_playbutton_card.dart';
import 'package:spotube/components/Playlist/PlaylistCard.dart'; import 'package:spotube/components/shared/waypoint.dart';
import 'package:spotube/components/Shared/Waypoint.dart'; import 'package:spotube/components/playlist/playlist_card.dart';
import 'package:spotube/models/Logger.dart'; import 'package:spotube/models/logger.dart';
import 'package:spotube/provider/SpotifyDI.dart'; import 'package:spotube/provider/spotify_provider.dart';
import 'package:spotube/provider/SpotifyRequests.dart'; import 'package:spotube/provider/SpotifyRequests.dart';
class CategoryCard extends HookConsumerWidget { class CategoryCard extends HookConsumerWidget {

View File

@ -2,11 +2,11 @@ import 'package:fl_query_hooks/fl_query_hooks.dart';
import 'package:flutter/material.dart' hide Image; import 'package:flutter/material.dart' hide Image;
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/Album/AlbumCard.dart'; import 'package:spotube/components/album/album_card.dart';
import 'package:spotube/components/LoaderShimmers/ShimmerPlaybuttonCard.dart'; import 'package:spotube/components/shared/shimmers/shimmer_playbutton_card.dart';
import 'package:spotube/components/Shared/AnonymousFallback.dart'; import 'package:spotube/components/shared/fallbacks/anonymous_fallback.dart';
import 'package:spotube/provider/Auth.dart'; import 'package:spotube/provider/auth_provider.dart';
import 'package:spotube/provider/SpotifyDI.dart'; import 'package:spotube/provider/spotify_provider.dart';
import 'package:spotube/provider/SpotifyRequests.dart'; import 'package:spotube/provider/SpotifyRequests.dart';
import 'package:spotube/utils/type_conversion_utils.dart'; import 'package:spotube/utils/type_conversion_utils.dart';

View File

@ -4,11 +4,11 @@ import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:spotube/components/Artist/ArtistCard.dart'; import 'package:spotube/components/shared/fallbacks/anonymous_fallback.dart';
import 'package:spotube/components/Shared/AnonymousFallback.dart'; import 'package:spotube/components/shared/waypoint.dart';
import 'package:spotube/components/Shared/Waypoint.dart'; import 'package:spotube/components/artist/artist_card.dart';
import 'package:spotube/provider/Auth.dart'; import 'package:spotube/provider/auth_provider.dart';
import 'package:spotube/provider/SpotifyDI.dart'; import 'package:spotube/provider/spotify_provider.dart';
import 'package:spotube/provider/SpotifyRequests.dart'; import 'package:spotube/provider/SpotifyRequests.dart';
class UserArtists extends HookConsumerWidget { class UserArtists extends HookConsumerWidget {

View File

@ -3,8 +3,8 @@ import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:spotube/components/Shared/UniversalImage.dart'; import 'package:spotube/components/shared/image/universal_image.dart';
import 'package:spotube/provider/Downloader.dart'; import 'package:spotube/provider/downloader_provider.dart';
import 'package:spotube/utils/type_conversion_utils.dart'; import 'package:spotube/utils/type_conversion_utils.dart';
class UserDownloads extends HookConsumerWidget { class UserDownloads extends HookConsumerWidget {

View File

@ -11,14 +11,14 @@ import 'package:path_provider/path_provider.dart';
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:spotube/components/LoaderShimmers/ShimmerTrackTile.dart'; import 'package:spotube/components/shared/shimmers/shimmer_track_tile.dart';
import 'package:spotube/components/Shared/SortTracksDropdown.dart'; import 'package:spotube/components/shared/sort_tracks_dropdown.dart';
import 'package:spotube/components/Shared/TrackTile.dart'; import 'package:spotube/components/shared/track_table/track_tile.dart';
import 'package:spotube/hooks/useAsyncEffect.dart'; import 'package:spotube/hooks/use_async_effect.dart';
import 'package:spotube/models/CurrentPlaylist.dart'; import 'package:spotube/models/current_playlist.dart';
import 'package:spotube/models/Logger.dart'; import 'package:spotube/models/logger.dart';
import 'package:spotube/provider/Playback.dart'; import 'package:spotube/provider/playback_provider.dart';
import 'package:spotube/provider/UserPreferences.dart'; import 'package:spotube/provider/user_preferences_provider.dart';
import 'package:spotube/utils/platform.dart'; import 'package:spotube/utils/platform.dart';
import 'package:spotube/utils/primitive_utils.dart'; import 'package:spotube/utils/primitive_utils.dart';
import 'package:spotube/utils/service_utils.dart'; import 'package:spotube/utils/service_utils.dart';

View File

@ -3,12 +3,12 @@ import 'package:flutter/material.dart' hide Image;
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:spotube/components/LoaderShimmers/ShimmerPlaybuttonCard.dart'; import 'package:spotube/components/shared/shimmers/shimmer_playbutton_card.dart';
import 'package:spotube/components/Playlist/PlaylistCard.dart'; import 'package:spotube/components/shared/fallbacks/anonymous_fallback.dart';
import 'package:spotube/components/Playlist/PlaylistCreateDialog.dart'; import 'package:spotube/components/playlist/playlist_card.dart';
import 'package:spotube/components/Shared/AnonymousFallback.dart'; import 'package:spotube/components/playlist/playlist_create_dialog.dart';
import 'package:spotube/provider/Auth.dart'; import 'package:spotube/provider/auth_provider.dart';
import 'package:spotube/provider/SpotifyDI.dart'; import 'package:spotube/provider/spotify_provider.dart';
import 'package:spotube/provider/SpotifyRequests.dart'; import 'package:spotube/provider/SpotifyRequests.dart';
class UserPlaylists extends HookConsumerWidget { class UserPlaylists extends HookConsumerWidget {

View File

@ -2,8 +2,8 @@ import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/Home/Sidebar.dart'; import 'package:spotube/components/root/sidebar.dart';
import 'package:spotube/components/Lyrics/SyncedLyrics.dart'; import 'package:spotube/pages/lyrics/synced_lyrics.dart';
class LyricDelayAdjustDialog extends HookConsumerWidget { class LyricDelayAdjustDialog extends HookConsumerWidget {
const LyricDelayAdjustDialog({Key? key}) : super(key: key); const LyricDelayAdjustDialog({Key? key}) : super(key: key);

View File

@ -4,13 +4,13 @@ import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:spotube/components/Library/UserLocalTracks.dart'; import 'package:spotube/components/library/user_local_tracks.dart';
import 'package:spotube/components/Player/PlayerQueue.dart'; import 'package:spotube/components/player/player_queue.dart';
import 'package:spotube/components/Player/SiblingTracksSheet.dart'; import 'package:spotube/components/player/sibling_tracks_sheet.dart';
import 'package:spotube/components/Shared/HeartButton.dart'; import 'package:spotube/components/shared/heart_button.dart';
import 'package:spotube/models/Logger.dart'; import 'package:spotube/models/logger.dart';
import 'package:spotube/provider/Downloader.dart'; import 'package:spotube/provider/downloader_provider.dart';
import 'package:spotube/provider/Playback.dart'; import 'package:spotube/provider/playback_provider.dart';
import 'package:spotube/utils/type_conversion_utils.dart'; import 'package:spotube/utils/type_conversion_utils.dart';
class PlayerActions extends HookConsumerWidget { class PlayerActions extends HookConsumerWidget {

View File

@ -3,10 +3,10 @@ import 'package:flutter/services.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/hooks/playback.dart'; import 'package:spotube/hooks/playback_hooks.dart';
import 'package:spotube/models/Intents.dart'; import 'package:spotube/collections/intents.dart';
import 'package:spotube/models/Logger.dart'; import 'package:spotube/models/logger.dart';
import 'package:spotube/provider/Playback.dart'; import 'package:spotube/provider/playback_provider.dart';
import 'package:spotube/utils/primitive_utils.dart'; import 'package:spotube/utils/primitive_utils.dart';
class PlayerControls extends HookConsumerWidget { class PlayerControls extends HookConsumerWidget {

View File

@ -4,11 +4,11 @@ import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/Player/PlayerTrackDetails.dart'; import 'package:spotube/components/player/player_track_details.dart';
import 'package:spotube/hooks/playback.dart'; import 'package:spotube/hooks/playback_hooks.dart';
import 'package:spotube/hooks/usePaletteColor.dart'; import 'package:spotube/hooks/use_palette_color.dart';
import 'package:spotube/models/Intents.dart'; import 'package:spotube/collections/intents.dart';
import 'package:spotube/provider/Playback.dart'; import 'package:spotube/provider/playback_provider.dart';
import 'package:spotube/utils/service_utils.dart'; import 'package:spotube/utils/service_utils.dart';
class PlayerOverlay extends HookConsumerWidget { class PlayerOverlay extends HookConsumerWidget {

View File

@ -5,10 +5,10 @@ import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:scroll_to_index/scroll_to_index.dart'; import 'package:scroll_to_index/scroll_to_index.dart';
import 'package:spotube/components/Shared/NotFound.dart'; import 'package:spotube/components/shared/fallbacks/not_found.dart';
import 'package:spotube/components/Shared/TrackTile.dart'; import 'package:spotube/components/shared/track_table/track_tile.dart';
import 'package:spotube/hooks/useAutoScrollController.dart'; import 'package:spotube/hooks/use_auto_scroll_controller.dart';
import 'package:spotube/provider/Playback.dart'; import 'package:spotube/provider/playback_provider.dart';
import 'package:spotube/utils/primitive_utils.dart'; import 'package:spotube/utils/primitive_utils.dart';
class PlayerQueue extends HookConsumerWidget { class PlayerQueue extends HookConsumerWidget {

View File

@ -1,9 +1,9 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/Shared/UniversalImage.dart'; import 'package:spotube/components/shared/image/universal_image.dart';
import 'package:spotube/hooks/useBreakpoints.dart'; import 'package:spotube/hooks/use_breakpoints.dart';
import 'package:spotube/provider/Playback.dart'; import 'package:spotube/provider/playback_provider.dart';
import 'package:spotube/utils/type_conversion_utils.dart'; import 'package:spotube/utils/type_conversion_utils.dart';
class PlayerTrackDetails extends HookConsumerWidget { class PlayerTrackDetails extends HookConsumerWidget {

View File

@ -4,8 +4,8 @@ import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/Shared/UniversalImage.dart'; import 'package:spotube/components/shared/image/universal_image.dart';
import 'package:spotube/provider/Playback.dart'; import 'package:spotube/provider/playback_provider.dart';
import 'package:spotube/utils/primitive_utils.dart'; import 'package:spotube/utils/primitive_utils.dart';
class SiblingTracksSheet extends HookConsumerWidget { class SiblingTracksSheet extends HookConsumerWidget {

View File

@ -1,11 +1,11 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:spotube/components/Shared/PlaybuttonCard.dart'; import 'package:spotube/components/shared/playbutton_card.dart';
import 'package:spotube/hooks/useBreakpointValue.dart'; import 'package:spotube/hooks/use_breakpoint_value.dart';
import 'package:spotube/models/CurrentPlaylist.dart'; import 'package:spotube/models/current_playlist.dart';
import 'package:spotube/provider/Playback.dart'; import 'package:spotube/provider/playback_provider.dart';
import 'package:spotube/provider/SpotifyDI.dart'; import 'package:spotube/provider/spotify_provider.dart';
import 'package:spotube/utils/service_utils.dart'; import 'package:spotube/utils/service_utils.dart';
import 'package:spotube/utils/type_conversion_utils.dart'; import 'package:spotube/utils/type_conversion_utils.dart';

View File

@ -3,8 +3,8 @@ import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/Home/Sidebar.dart'; import 'package:spotube/components/root/sidebar.dart';
import 'package:spotube/provider/SpotifyDI.dart'; import 'package:spotube/provider/spotify_provider.dart';
import 'package:spotube/provider/SpotifyRequests.dart'; import 'package:spotube/provider/SpotifyRequests.dart';
class PlaylistCreateDialog extends HookConsumerWidget { class PlaylistCreateDialog extends HookConsumerWidget {

View File

@ -2,9 +2,9 @@ import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:spotube/components/Playlist/PlaylistCard.dart'; import 'package:spotube/components/shared/page_window_title_bar.dart';
import 'package:spotube/components/Shared/PageWindowTitleBar.dart'; import 'package:spotube/components/playlist/playlist_card.dart';
import 'package:spotube/provider/SpotifyDI.dart'; import 'package:spotube/provider/spotify_provider.dart';
class PlaylistGenreView extends ConsumerWidget { class PlaylistGenreView extends ConsumerWidget {
final String genreId; final String genreId;

View File

@ -5,16 +5,16 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:macos_ui/macos_ui.dart'; import 'package:macos_ui/macos_ui.dart';
import 'package:fluent_ui/fluent_ui.dart' as FluentUI; import 'package:fluent_ui/fluent_ui.dart' as FluentUI;
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/Player/PlayerActions.dart'; import 'package:spotube/components/player/player_actions.dart';
import 'package:spotube/components/Player/PlayerOverlay.dart'; import 'package:spotube/components/player/player_overlay.dart';
import 'package:spotube/components/Player/PlayerTrackDetails.dart'; import 'package:spotube/components/player/player_track_details.dart';
import 'package:spotube/components/Player/PlayerControls.dart'; import 'package:spotube/components/player/player_controls.dart';
import 'package:spotube/hooks/useBreakpoints.dart'; import 'package:spotube/hooks/use_breakpoints.dart';
import 'package:spotube/hooks/usePlatformProperty.dart'; import 'package:spotube/hooks/use_platform_property.dart';
import 'package:spotube/models/Logger.dart'; import 'package:spotube/models/logger.dart';
import 'package:spotube/provider/Playback.dart'; import 'package:spotube/provider/playback_provider.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:spotube/provider/UserPreferences.dart'; import 'package:spotube/provider/user_preferences_provider.dart';
import 'package:spotube/utils/type_conversion_utils.dart'; import 'package:spotube/utils/type_conversion_utils.dart';
class Player extends HookConsumerWidget { class Player extends HookConsumerWidget {

View File

@ -6,14 +6,14 @@ import 'package:go_router/go_router.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/Shared/UniversalImage.dart'; import 'package:spotube/collections/side_bar_tiles.dart';
import 'package:spotube/hooks/useBreakpoints.dart'; import 'package:spotube/components/shared/image/universal_image.dart';
import 'package:spotube/models/sideBarTiles.dart'; import 'package:spotube/hooks/use_breakpoints.dart';
import 'package:spotube/provider/Auth.dart'; import 'package:spotube/provider/auth_provider.dart';
import 'package:spotube/provider/Downloader.dart'; import 'package:spotube/provider/downloader_provider.dart';
import 'package:spotube/provider/SpotifyDI.dart'; import 'package:spotube/provider/spotify_provider.dart';
import 'package:spotube/provider/SpotifyRequests.dart'; import 'package:spotube/provider/SpotifyRequests.dart';
import 'package:spotube/provider/UserPreferences.dart'; import 'package:spotube/provider/user_preferences_provider.dart';
import 'package:spotube/utils/platform.dart'; import 'package:spotube/utils/platform.dart';
import 'package:spotube/utils/type_conversion_utils.dart'; import 'package:spotube/utils/type_conversion_utils.dart';
import 'package:fluent_ui/fluent_ui.dart' as FluentUI; import 'package:fluent_ui/fluent_ui.dart' as FluentUI;

View File

@ -2,11 +2,11 @@ import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/Home/Sidebar.dart'; import 'package:spotube/collections/side_bar_tiles.dart';
import 'package:spotube/hooks/useBreakpoints.dart'; import 'package:spotube/components/root/sidebar.dart';
import 'package:spotube/models/sideBarTiles.dart'; import 'package:spotube/hooks/use_breakpoints.dart';
import 'package:spotube/provider/Downloader.dart'; import 'package:spotube/provider/downloader_provider.dart';
import 'package:spotube/provider/UserPreferences.dart'; import 'package:spotube/provider/user_preferences_provider.dart';
class SpotubeNavigationBar extends HookConsumerWidget { class SpotubeNavigationBar extends HookConsumerWidget {
final int selectedIndex; final int selectedIndex;

View File

@ -2,8 +2,8 @@ import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/Home/Sidebar.dart'; import 'package:spotube/components/root/sidebar.dart';
import 'package:spotube/provider/UserPreferences.dart'; import 'package:spotube/provider/user_preferences_provider.dart';
final highContrast = MaterialColor( final highContrast = MaterialColor(
const Color.fromARGB(255, 104, 104, 104).value, const Color.fromARGB(255, 104, 104, 104).value,

View File

@ -1,8 +1,8 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/Home/Sidebar.dart'; import 'package:spotube/components/root/sidebar.dart';
import 'package:spotube/hooks/useBreakpoints.dart'; import 'package:spotube/hooks/use_breakpoints.dart';
class AdaptiveListTile extends HookWidget { class AdaptiveListTile extends HookWidget {
final Widget Function(BuildContext, StateSetter?)? trailing; final Widget Function(BuildContext, StateSetter?)? trailing;

View File

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:popover/popover.dart'; import 'package:popover/popover.dart';
import 'package:spotube/hooks/useBreakpoints.dart'; import 'package:spotube/hooks/use_breakpoints.dart';
class Action extends StatelessWidget { class Action extends StatelessWidget {
final Widget text; final Widget text;

View File

@ -1,10 +1,10 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/Home/Sidebar.dart'; import 'package:spotube/components/shared/image/universal_image.dart';
import 'package:spotube/components/Shared/UniversalImage.dart'; import 'package:spotube/components/root/sidebar.dart';
class DownloadConfirmationDialog extends StatelessWidget { class ConfirmDownloadDialog extends StatelessWidget {
const DownloadConfirmationDialog({Key? key}) : super(key: key); const ConfirmDownloadDialog({Key? key}) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {

View File

@ -4,12 +4,12 @@ import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:spotube/provider/SpotifyDI.dart'; import 'package:spotube/provider/spotify_provider.dart';
import 'package:spotube/provider/SpotifyRequests.dart'; import 'package:spotube/provider/SpotifyRequests.dart';
class AddTracksToPlaylistDialog extends HookConsumerWidget { class PlaylistAddTrackDialog extends HookConsumerWidget {
final List<Track> tracks; final List<Track> tracks;
const AddTracksToPlaylistDialog({ const PlaylistAddTrackDialog({
required this.tracks, required this.tracks,
Key? key, Key? key,
}) : super(key: key); }) : super(key: key);

View File

@ -2,13 +2,13 @@ import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:spotube/components/Home/Sidebar.dart'; import 'package:spotube/components/root/sidebar.dart';
final replaceDownloadedFileState = StateProvider<bool?>((ref) => null); final replaceDownloadedFileState = StateProvider<bool?>((ref) => null);
class ReplaceDownloadedFileDialog extends ConsumerWidget { class ReplaceDownloadedDialog extends ConsumerWidget {
final Track track; final Track track;
const ReplaceDownloadedFileDialog({required this.track, Key? key}) const ReplaceDownloadedDialog({required this.track, Key? key})
: super(key: key); : super(key: key);
@override @override

View File

@ -1,7 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/provider/Auth.dart'; import 'package:spotube/provider/auth_provider.dart';
import 'package:spotube/utils/service_utils.dart'; import 'package:spotube/utils/service_utils.dart';
class AnonymousFallback extends ConsumerWidget { class AnonymousFallback extends ConsumerWidget {

View File

@ -5,9 +5,9 @@ import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:spotube/hooks/usePaletteColor.dart'; import 'package:spotube/hooks/use_palette_color.dart';
import 'package:spotube/provider/Auth.dart'; import 'package:spotube/provider/auth_provider.dart';
import 'package:spotube/provider/SpotifyDI.dart'; import 'package:spotube/provider/spotify_provider.dart';
import 'package:spotube/provider/SpotifyRequests.dart'; import 'package:spotube/provider/SpotifyRequests.dart';
import 'package:spotube/utils/type_conversion_utils.dart'; import 'package:spotube/utils/type_conversion_utils.dart';
import 'package:tuple/tuple.dart'; import 'package:tuple/tuple.dart';

View File

@ -1,5 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:spotube/components/Shared/AnchorButton.dart'; import 'package:spotube/components/shared/links/anchor_button.dart';
import 'package:url_launcher/url_launcher_string.dart'; import 'package:url_launcher/url_launcher_string.dart';
class Hyperlink extends StatelessWidget { class Hyperlink extends StatelessWidget {

View File

@ -1,5 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:spotube/components/Shared/AnchorButton.dart'; import 'package:spotube/components/shared/links/anchor_button.dart';
import 'package:spotube/utils/service_utils.dart'; import 'package:spotube/utils/service_utils.dart';
class LinkText<T> extends StatelessWidget { class LinkText<T> extends StatelessWidget {

View File

@ -1,10 +1,10 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/Shared/HoverBuilder.dart'; import 'package:spotube/components/shared/hover_builder.dart';
import 'package:spotube/components/Shared/SpotubeMarqueeText.dart'; import 'package:spotube/components/shared/spotube_marquee_text.dart';
import 'package:spotube/components/Shared/UniversalImage.dart'; import 'package:spotube/components/shared/image/universal_image.dart';
import 'package:spotube/hooks/usePlatformProperty.dart'; import 'package:spotube/hooks/use_platform_property.dart';
class PlaybuttonCard extends HookWidget { class PlaybuttonCard extends HookWidget {
final void Function()? onTap; final void Function()? onTap;

View File

@ -1,9 +1,9 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:skeleton_text/skeleton_text.dart'; import 'package:skeleton_text/skeleton_text.dart';
import 'package:spotube/components/LoaderShimmers/ShimmerTrackTile.dart'; import 'package:spotube/components/shared/shimmers/shimmer_track_tile.dart';
import 'package:spotube/extensions/ShimmerColorTheme.dart'; import 'package:spotube/extensions/theme.dart';
import 'package:spotube/hooks/useBreakpointValue.dart'; import 'package:spotube/hooks/use_breakpoint_value.dart';
class ShimmerArtistProfile extends HookWidget { class ShimmerArtistProfile extends HookWidget {
const ShimmerArtistProfile({Key? key}) : super(key: key); const ShimmerArtistProfile({Key? key}) : super(key: key);

View File

@ -1,7 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:skeleton_text/skeleton_text.dart'; import 'package:spotube/components/shared/shimmers/shimmer_playbutton_card.dart';
import 'package:spotube/components/LoaderShimmers/ShimmerPlaybuttonCard.dart'; import 'package:spotube/extensions/theme.dart';
import 'package:spotube/extensions/ShimmerColorTheme.dart';
class ShimmerCategories extends StatelessWidget { class ShimmerCategories extends StatelessWidget {
const ShimmerCategories({Key? key}) : super(key: key); const ShimmerCategories({Key? key}) : super(key: key);

View File

@ -1,8 +1,8 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:skeleton_text/skeleton_text.dart'; import 'package:skeleton_text/skeleton_text.dart';
import 'package:spotube/extensions/ShimmerColorTheme.dart'; import 'package:spotube/extensions/theme.dart';
import 'package:spotube/hooks/useBreakpoints.dart'; import 'package:spotube/hooks/use_breakpoints.dart';
const widths = [20, 56, 89, 60, 25, 69]; const widths = [20, 56, 89, 60, 25, 69];

View File

@ -1,5 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:spotube/extensions/ShimmerColorTheme.dart'; import 'package:spotube/extensions/theme.dart';
class ShimmerPlaybuttonCardPainter extends CustomPainter { class ShimmerPlaybuttonCardPainter extends CustomPainter {
final Color background; final Color background;

View File

@ -1,5 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:spotube/extensions/ShimmerColorTheme.dart'; import 'package:spotube/extensions/theme.dart';
class ShimmerTrackTilePainter extends CustomPainter { class ShimmerTrackTilePainter extends CustomPainter {
final Color background; final Color background;

View File

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/Library/UserLocalTracks.dart'; import 'package:spotube/components/library/user_local_tracks.dart';
class SortTracksDropdown extends StatelessWidget { class SortTracksDropdown extends StatelessWidget {
final SortBy? value; final SortBy? value;

View File

@ -3,14 +3,14 @@ import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/LoaderShimmers/ShimmerTrackTile.dart'; import 'package:spotube/components/shared/shimmers/shimmer_track_tile.dart';
import 'package:spotube/components/Shared/PageWindowTitleBar.dart'; import 'package:spotube/components/shared/page_window_title_bar.dart';
import 'package:spotube/components/Shared/TracksTableView.dart'; import 'package:spotube/components/shared/image/universal_image.dart';
import 'package:spotube/components/Shared/UniversalImage.dart'; import 'package:spotube/components/shared/track_table/tracks_table_view.dart';
import 'package:spotube/utils/type_conversion_utils.dart'; import 'package:spotube/utils/type_conversion_utils.dart';
import 'package:spotube/hooks/useCustomStatusBarColor.dart'; import 'package:spotube/hooks/use_custom_status_bar_color.dart';
import 'package:spotube/hooks/usePaletteColor.dart'; import 'package:spotube/hooks/use_palette_color.dart';
import 'package:spotube/models/Logger.dart'; import 'package:spotube/models/logger.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:spotube/utils/platform.dart'; import 'package:spotube/utils/platform.dart';

View File

@ -6,16 +6,16 @@ import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotify/spotify.dart' hide Image; import 'package:spotify/spotify.dart' hide Image;
import 'package:spotube/components/Home/Sidebar.dart'; import 'package:spotube/components/shared/adaptive/adaptive_popup_menu_button.dart';
import 'package:spotube/components/Shared/AdaptivePopupMenuButton.dart'; import 'package:spotube/components/shared/heart_button.dart';
import 'package:spotube/components/Shared/HeartButton.dart'; import 'package:spotube/components/shared/links/link_text.dart';
import 'package:spotube/components/Shared/LinkText.dart'; import 'package:spotube/components/shared/image/universal_image.dart';
import 'package:spotube/components/Shared/UniversalImage.dart'; import 'package:spotube/components/root/sidebar.dart';
import 'package:spotube/hooks/useBreakpoints.dart'; import 'package:spotube/hooks/use_breakpoints.dart';
import 'package:spotube/models/Logger.dart'; import 'package:spotube/models/logger.dart';
import 'package:spotube/provider/Auth.dart'; import 'package:spotube/provider/auth_provider.dart';
import 'package:spotube/provider/Playback.dart'; import 'package:spotube/provider/playback_provider.dart';
import 'package:spotube/provider/SpotifyDI.dart'; import 'package:spotube/provider/spotify_provider.dart';
import 'package:spotube/provider/SpotifyRequests.dart'; import 'package:spotube/provider/SpotifyRequests.dart';
import 'package:spotube/utils/type_conversion_utils.dart'; import 'package:spotube/utils/type_conversion_utils.dart';
import 'package:tuple/tuple.dart'; import 'package:tuple/tuple.dart';

View File

@ -3,15 +3,15 @@ import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:spotube/components/Library/UserLocalTracks.dart'; import 'package:spotube/components/shared/dialogs/confirm_download_dialog.dart';
import 'package:spotube/components/Shared/AddTracksToPlaylistDialog.dart'; import 'package:spotube/components/shared/dialogs/playlist_add_track_dialog.dart';
import 'package:spotube/components/Shared/DownloadConfirmationDialog.dart'; import 'package:spotube/components/shared/fallbacks/not_found.dart';
import 'package:spotube/components/Shared/NotFound.dart'; import 'package:spotube/components/shared/sort_tracks_dropdown.dart';
import 'package:spotube/components/Shared/SortTracksDropdown.dart'; import 'package:spotube/components/shared/track_table/track_tile.dart';
import 'package:spotube/components/Shared/TrackTile.dart'; import 'package:spotube/components/library/user_local_tracks.dart';
import 'package:spotube/hooks/useBreakpoints.dart'; import 'package:spotube/hooks/use_breakpoints.dart';
import 'package:spotube/provider/Downloader.dart'; import 'package:spotube/provider/downloader_provider.dart';
import 'package:spotube/provider/Playback.dart'; import 'package:spotube/provider/playback_provider.dart';
import 'package:spotube/utils/primitive_utils.dart'; import 'package:spotube/utils/primitive_utils.dart';
import 'package:spotube/utils/service_utils.dart'; import 'package:spotube/utils/service_utils.dart';
@ -165,7 +165,7 @@ class TracksTableView extends HookConsumerWidget {
final confirmed = await showPlatformAlertDialog( final confirmed = await showPlatformAlertDialog(
context, context,
builder: (context) { builder: (context) {
return const DownloadConfirmationDialog(); return const ConfirmDownloadDialog();
}, },
); );
if (confirmed != true) return; if (confirmed != true) return;
@ -181,7 +181,7 @@ class TracksTableView extends HookConsumerWidget {
await showPlatformAlertDialog( await showPlatformAlertDialog(
context, context,
builder: (context) { builder: (context) {
return AddTracksToPlaylistDialog( return PlaylistAddTrackDialog(
tracks: selectedTracks.toList(), tracks: selectedTracks.toList(),
); );
}, },

View File

@ -0,0 +1,18 @@
import 'package:spotify/spotify.dart';
extension AlbumJson on AlbumSimple {
Map<String, dynamic> toJson() {
return {
"albumType": albumType,
"id": id,
"name": name,
"images": images
?.map((image) => {
"height": image.height,
"url": image.url,
"width": image.width,
})
.toList(),
};
}
}

View File

@ -0,0 +1,13 @@
import 'package:spotify/spotify.dart';
extension ArtistJson on ArtistSimple {
Map<String, dynamic> toJson() {
return {
"href": href,
"id": id,
"name": name,
"type": type,
"uri": uri,
};
}
}

29
lib/extensions/track.dart Normal file
View File

@ -0,0 +1,29 @@
import 'package:spotify/spotify.dart';
import 'package:spotube/extensions/album_simple.dart';
import 'package:spotube/extensions/artist_simple.dart';
extension TrackJson on Track {
Map<String, dynamic> toJson() {
return {
"album": album?.toJson(),
"artists": artists?.map((artist) => artist.toJson()).toList(),
"availableMarkets": availableMarkets,
"discNumber": discNumber,
"duration": duration.toString(),
"durationMs": durationMs,
"explicit": explicit,
// "externalIds": externalIds,
// "externalUrls": externalUrls,
"href": href,
"id": id,
"isPlayable": isPlayable,
// "linkedFrom": linkedFrom,
"name": name,
"popularity": popularity,
"previewUrl": previewUrl,
"trackNumber": trackNumber,
"type": type,
"uri": uri,
};
}
}

View File

@ -1,6 +1,6 @@
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:spotube/models/Logger.dart'; import 'package:spotube/models/logger.dart';
import 'package:spotube/provider/Playback.dart'; import 'package:spotube/provider/playback_provider.dart';
final logger = getLogger("PlaybackHook"); final logger = getLogger("PlaybackHook");

View File

@ -1,4 +1,4 @@
import 'package:spotube/hooks/useBreakpoints.dart'; import 'package:spotube/hooks/use_breakpoints.dart';
useBreakpointValue({sm, md, lg, xl, xxl}) { useBreakpointValue({sm, md, lg, xl, xxl}) {
final breakpoint = useBreakpoints(); final breakpoint = useBreakpoints();

View File

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:palette_generator/palette_generator.dart'; import 'package:palette_generator/palette_generator.dart';
import 'package:spotube/components/Shared/UniversalImage.dart'; import 'package:spotube/components/shared/image/universal_image.dart';
final _paletteColorState = StateProvider<PaletteColor>( final _paletteColorState = StateProvider<PaletteColor>(
(ref) { (ref) {

View File

@ -1,6 +1,6 @@
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:spotube/provider/Playback.dart'; import 'package:spotube/provider/playback_provider.dart';
int useSyncedLyrics( int useSyncedLyrics(
WidgetRef ref, WidgetRef ref,

View File

@ -6,10 +6,10 @@ import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/Home/Sidebar.dart'; import 'package:spotube/components/root/sidebar.dart';
import 'package:spotube/components/Shared/AnchorButton.dart'; import 'package:spotube/components/shared/links/anchor_button.dart';
import 'package:spotube/hooks/usePackageInfo.dart'; import 'package:spotube/hooks/use_package_info.dart';
import 'package:spotube/provider/UserPreferences.dart'; import 'package:spotube/provider/user_preferences_provider.dart';
import 'package:url_launcher/url_launcher_string.dart'; import 'package:url_launcher/url_launcher_string.dart';
import 'package:version/version.dart'; import 'package:version/version.dart';

View File

@ -10,20 +10,20 @@ import 'package:hive_flutter/hive_flutter.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';
import 'package:spotube/components/Shared/ReplaceDownloadedFileDialog.dart'; import 'package:spotube/collections/cache_keys.dart';
import 'package:spotube/components/shared/dialogs/replace_downloaded_dialog.dart';
import 'package:spotube/entities/CacheTrack.dart'; import 'package:spotube/entities/CacheTrack.dart';
import 'package:spotube/models/GoRouteDeclarations.dart'; import 'package:spotube/collections/routes.dart';
import 'package:spotube/models/Intents.dart'; import 'package:spotube/collections/intents.dart';
import 'package:spotube/models/LocalStorageKeys.dart'; import 'package:spotube/models/logger.dart';
import 'package:spotube/models/Logger.dart'; import 'package:spotube/provider/audio_player_provider.dart';
import 'package:spotube/provider/AudioPlayer.dart'; import 'package:spotube/provider/downloader_provider.dart';
import 'package:spotube/provider/Downloader.dart'; import 'package:spotube/provider/playback_provider.dart';
import 'package:spotube/provider/Playback.dart'; import 'package:spotube/provider/user_preferences_provider.dart';
import 'package:spotube/provider/UserPreferences.dart'; import 'package:spotube/provider/youtube_provider.dart';
import 'package:spotube/provider/YouTube.dart'; import 'package:spotube/services/mobile_audio_service.dart';
import 'package:spotube/services/MobileAudioService.dart'; import 'package:spotube/themes/dark_theme.dart';
import 'package:spotube/themes/dark-theme.dart'; import 'package:spotube/themes/light_theme.dart';
import 'package:spotube/themes/light-theme.dart';
import 'package:spotube/utils/platform.dart'; import 'package:spotube/utils/platform.dart';
final bowl = QueryBowl(refetchOnExternalDataChange: true); final bowl = QueryBowl(refetchOnExternalDataChange: true);
@ -57,73 +57,68 @@ void main() async {
builder: (context) { builder: (context) {
return ProviderScope( return ProviderScope(
overrides: [ overrides: [
playbackProvider.overrideWithProvider( playbackProvider.overrideWith(
ChangeNotifierProvider( (ref) {
(ref) { final youtube = ref.watch(youtubeProvider);
final youtube = ref.watch(youtubeProvider); final player = ref.watch(audioPlayerProvider);
final player = ref.watch(audioPlayerProvider);
final playback = Playback( final playback = Playback(
player: player, player: player,
youtube: youtube, youtube: youtube,
ref: ref, ref: ref,
); );
if (audioServiceHandler == null) { if (audioServiceHandler == null) {
AudioService.init( AudioService.init(
builder: () => MobileAudioService(playback), builder: () => MobileAudioService(playback),
config: const AudioServiceConfig( config: const AudioServiceConfig(
androidNotificationChannelId: 'com.krtirtho.Spotube', androidNotificationChannelId: 'com.krtirtho.Spotube',
androidNotificationChannelName: 'Spotube', androidNotificationChannelName: 'Spotube',
androidNotificationOngoing: true, androidNotificationOngoing: true,
),
).then(
(value) {
playback.mobileAudioService = value;
audioServiceHandler = value;
},
);
}
return playback;
},
),
),
downloaderProvider.overrideWithProvider(
ChangeNotifierProvider(
(ref) {
return Downloader(
ref,
queueInstance,
yt: ref.watch(youtubeProvider),
downloadPath: ref.watch(
userPreferencesProvider.select(
(s) => s.downloadLocation,
),
), ),
onFileExists: (track) { ).then(
final logger = getLogger(Downloader); (value) {
try { playback.mobileAudioService = value;
logger.v( audioServiceHandler = value;
"[onFileExists] download confirmation for ${track.name}",
);
return showPlatformAlertDialog<bool>(
context,
builder: (_) =>
ReplaceDownloadedFileDialog(track: track),
).then((s) => s ?? false);
} catch (e, stack) {
logger.e(
"onFileExists",
e,
stack,
);
return false;
}
}, },
); );
}, }
),
return playback;
},
),
downloaderProvider.overrideWith(
(ref) {
return Downloader(
ref,
queueInstance,
yt: ref.watch(youtubeProvider),
downloadPath: ref.watch(
userPreferencesProvider.select(
(s) => s.downloadLocation,
),
),
onFileExists: (track) {
final logger = getLogger(Downloader);
try {
logger.v(
"[onFileExists] download confirmation for ${track.name}",
);
return showPlatformAlertDialog<bool>(
context,
builder: (_) => ReplaceDownloadedDialog(track: track),
).then((s) => s ?? false);
} catch (e, stack) {
logger.e(
"onFileExists",
e,
stack,
);
return false;
}
},
);
},
) )
], ],
child: QueryBowlScope( child: QueryBowlScope(

View File

@ -1,60 +1,6 @@
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:spotube/models/SpotubeTrack.dart'; import 'package:spotube/models/spotube_track.dart';
import 'package:spotube/extensions/track.dart';
extension AlbumJson on AlbumSimple {
Map<String, dynamic> toJson() {
return {
"albumType": albumType,
"id": id,
"name": name,
"images": images
?.map((image) => {
"height": image.height,
"url": image.url,
"width": image.width,
})
.toList(),
};
}
}
extension ArtistJson on ArtistSimple {
Map<String, dynamic> toJson() {
return {
"href": href,
"id": id,
"name": name,
"type": type,
"uri": uri,
};
}
}
extension TrackJson on Track {
Map<String, dynamic> toJson() {
return {
"album": album?.toJson(),
"artists": artists?.map((artist) => artist.toJson()).toList(),
"availableMarkets": availableMarkets,
"discNumber": discNumber,
"duration": duration.toString(),
"durationMs": durationMs,
"explicit": explicit,
// "externalIds": externalIds,
// "externalUrls": externalUrls,
"href": href,
"id": id,
"isPlayable": isPlayable,
// "linkedFrom": linkedFrom,
"name": name,
"popularity": popularity,
"previewUrl": previewUrl,
"trackNumber": trackNumber,
"type": type,
"uri": uri,
};
}
}
class CurrentPlaylist { class CurrentPlaylist {
List<Track>? _tempTrack; List<Track>? _tempTrack;

View File

@ -1,6 +1,7 @@
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:spotube/models/CurrentPlaylist.dart'; import 'package:spotube/extensions/video.dart';
import 'package:spotube/extensions/yt-video-from-cache-track.dart'; import 'package:spotube/extensions/album_simple.dart';
import 'package:spotube/extensions/artist_simple.dart';
import 'package:youtube_explode_dart/youtube_explode_dart.dart'; import 'package:youtube_explode_dart/youtube_explode_dart.dart';
enum SpotubeTrackMatchAlgorithm { enum SpotubeTrackMatchAlgorithm {

View File

@ -4,20 +4,20 @@ import 'package:flutter/services.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:spotube/components/Shared/HeartButton.dart'; import 'package:spotube/components/shared/heart_button.dart';
import 'package:spotube/components/Shared/TrackCollectionView.dart'; import 'package:spotube/components/shared/track_table/track_collection_view.dart';
import 'package:spotube/components/Shared/TracksTableView.dart'; import 'package:spotube/components/shared/track_table/tracks_table_view.dart';
import 'package:spotube/hooks/useBreakpoints.dart'; import 'package:spotube/hooks/use_breakpoints.dart';
import 'package:spotube/utils/service_utils.dart'; import 'package:spotube/utils/service_utils.dart';
import 'package:spotube/utils/type_conversion_utils.dart'; import 'package:spotube/utils/type_conversion_utils.dart';
import 'package:spotube/models/CurrentPlaylist.dart'; import 'package:spotube/models/current_playlist.dart';
import 'package:spotube/provider/Playback.dart'; import 'package:spotube/provider/playback_provider.dart';
import 'package:spotube/provider/SpotifyDI.dart'; import 'package:spotube/provider/spotify_provider.dart';
import 'package:spotube/provider/SpotifyRequests.dart'; import 'package:spotube/provider/SpotifyRequests.dart';
class AlbumView extends HookConsumerWidget { class AlbumPage extends HookConsumerWidget {
final AlbumSimple album; final AlbumSimple album;
const AlbumView(this.album, {Key? key}) : super(key: key); const AlbumPage(this.album, {Key? key}) : super(key: key);
Future<void> playPlaylist( Future<void> playPlaylist(
Playback playback, Playback playback,

View File

@ -6,26 +6,26 @@ import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:spotube/components/Artist/ArtistAlbumList.dart'; import 'package:spotube/components/shared/shimmers/shimmer_artist_profile.dart';
import 'package:spotube/components/Artist/ArtistCard.dart'; import 'package:spotube/components/shared/page_window_title_bar.dart';
import 'package:spotube/components/LoaderShimmers/ShimmerArtistProfile.dart'; import 'package:spotube/components/shared/track_table/track_tile.dart';
import 'package:spotube/components/Shared/PageWindowTitleBar.dart'; import 'package:spotube/components/shared/image/universal_image.dart';
import 'package:spotube/components/Shared/TrackTile.dart'; import 'package:spotube/components/artist/artist_album_list.dart';
import 'package:spotube/components/Shared/UniversalImage.dart'; import 'package:spotube/components/artist/artist_card.dart';
import 'package:spotube/hooks/useBreakpointValue.dart'; import 'package:spotube/hooks/use_breakpoint_value.dart';
import 'package:spotube/hooks/useBreakpoints.dart'; import 'package:spotube/hooks/use_breakpoints.dart';
import 'package:spotube/models/CurrentPlaylist.dart'; import 'package:spotube/models/current_playlist.dart';
import 'package:spotube/models/Logger.dart'; import 'package:spotube/models/logger.dart';
import 'package:spotube/provider/Playback.dart'; import 'package:spotube/provider/playback_provider.dart';
import 'package:spotube/provider/SpotifyDI.dart'; import 'package:spotube/provider/spotify_provider.dart';
import 'package:spotube/provider/SpotifyRequests.dart'; import 'package:spotube/provider/SpotifyRequests.dart';
import 'package:spotube/utils/primitive_utils.dart'; import 'package:spotube/utils/primitive_utils.dart';
import 'package:spotube/utils/type_conversion_utils.dart'; import 'package:spotube/utils/type_conversion_utils.dart';
class ArtistProfile extends HookConsumerWidget { class ArtistPage extends HookConsumerWidget {
final String artistId; final String artistId;
final logger = getLogger(ArtistProfile); final logger = getLogger(ArtistPage);
ArtistProfile(this.artistId, {Key? key}) : super(key: key); ArtistPage(this.artistId, {Key? key}) : super(key: key);
@override @override
Widget build(BuildContext context, ref) { Widget build(BuildContext context, ref) {

View File

@ -2,12 +2,12 @@ import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/Login/TokenLoginForms.dart'; import 'package:spotube/components/desktop_login/login_form.dart';
import 'package:spotube/components/Shared/PageWindowTitleBar.dart'; import 'package:spotube/components/shared/page_window_title_bar.dart';
import 'package:spotube/hooks/useBreakpoints.dart'; import 'package:spotube/hooks/use_breakpoints.dart';
class TokenLogin extends HookConsumerWidget { class DesktopLoginPage extends HookConsumerWidget {
const TokenLogin({Key? key}) : super(key: key); const DesktopLoginPage({Key? key}) : super(key: key);
@override @override
Widget build(BuildContext context, ref) { Widget build(BuildContext context, ref) {

View File

@ -2,10 +2,10 @@ import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:introduction_screen/introduction_screen.dart'; import 'package:introduction_screen/introduction_screen.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/Login/TokenLoginForms.dart'; import 'package:spotube/components/desktop_login/login_form.dart';
import 'package:spotube/components/Shared/Hyperlink.dart'; import 'package:spotube/components/shared/links/hyper_link.dart';
import 'package:spotube/components/Shared/PageWindowTitleBar.dart'; import 'package:spotube/components/shared/page_window_title_bar.dart';
import 'package:spotube/provider/Auth.dart'; import 'package:spotube/provider/auth_provider.dart';
import 'package:spotube/utils/service_utils.dart'; import 'package:spotube/utils/service_utils.dart';
class LoginTutorial extends ConsumerWidget { class LoginTutorial extends ConsumerWidget {

View File

@ -4,17 +4,17 @@ import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:spotube/components/Category/CategoryCard.dart'; import 'package:spotube/components/genre/category_card.dart';
import 'package:spotube/components/LoaderShimmers/ShimmerCategories.dart'; import 'package:spotube/components/shared/shimmers/shimmer_categories.dart';
import 'package:spotube/components/Shared/PageWindowTitleBar.dart'; import 'package:spotube/components/shared/page_window_title_bar.dart';
import 'package:spotube/components/Shared/Waypoint.dart'; import 'package:spotube/components/shared/waypoint.dart';
import 'package:spotube/provider/SpotifyDI.dart'; import 'package:spotube/provider/spotify_provider.dart';
import 'package:spotube/provider/SpotifyRequests.dart'; import 'package:spotube/provider/SpotifyRequests.dart';
import 'package:spotube/provider/UserPreferences.dart'; import 'package:spotube/provider/user_preferences_provider.dart';
import 'package:spotube/utils/platform.dart'; import 'package:spotube/utils/platform.dart';
class Genres extends HookConsumerWidget { class GenrePage extends HookConsumerWidget {
const Genres({Key? key}) : super(key: key); const GenrePage({Key? key}) : super(key: key);
@override @override
Widget build(BuildContext context, ref) { Widget build(BuildContext context, ref) {

View File

@ -2,15 +2,15 @@ import 'package:flutter/material.dart' hide Image;
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/Library/UserAlbums.dart'; import 'package:spotube/components/shared/page_window_title_bar.dart';
import 'package:spotube/components/Library/UserArtists.dart'; import 'package:spotube/components/library/user_albums.dart';
import 'package:spotube/components/Library/UserDownloads.dart'; import 'package:spotube/components/library/user_artists.dart';
import 'package:spotube/components/Library/UserLocalTracks.dart'; import 'package:spotube/components/library/user_downloads.dart';
import 'package:spotube/components/Library/UserPlaylists.dart'; import 'package:spotube/components/library/user_local_tracks.dart';
import 'package:spotube/components/Shared/PageWindowTitleBar.dart'; import 'package:spotube/components/library/user_playlists.dart';
class UserLibrary extends HookConsumerWidget { class LibraryPage extends HookConsumerWidget {
const UserLibrary({Key? key}) : super(key: key); const LibraryPage({Key? key}) : super(key: key);
@override @override
Widget build(BuildContext context, ref) { Widget build(BuildContext context, ref) {
final index = useState(0); final index = useState(0);

View File

@ -4,11 +4,11 @@ import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:palette_generator/palette_generator.dart'; import 'package:palette_generator/palette_generator.dart';
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:spotube/components/LoaderShimmers/ShimmerLyrics.dart'; import 'package:spotube/components/shared/shimmers/shimmer_lyrics.dart';
import 'package:spotube/hooks/useBreakpoints.dart'; import 'package:spotube/hooks/use_breakpoints.dart';
import 'package:spotube/provider/Playback.dart'; import 'package:spotube/provider/playback_provider.dart';
import 'package:spotube/provider/SpotifyRequests.dart'; import 'package:spotube/provider/SpotifyRequests.dart';
import 'package:spotube/provider/UserPreferences.dart'; import 'package:spotube/provider/user_preferences_provider.dart';
import 'package:spotube/utils/type_conversion_utils.dart'; import 'package:spotube/utils/type_conversion_utils.dart';
import 'package:tuple/tuple.dart'; import 'package:tuple/tuple.dart';

View File

@ -4,18 +4,18 @@ import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/Lyrics/GeniusLyrics.dart'; import 'package:spotube/components/shared/page_window_title_bar.dart';
import 'package:spotube/components/Lyrics/SyncedLyrics.dart'; import 'package:spotube/components/shared/image/universal_image.dart';
import 'package:spotube/components/Shared/PageWindowTitleBar.dart'; import 'package:spotube/hooks/use_custom_status_bar_color.dart';
import 'package:spotube/components/Shared/UniversalImage.dart'; import 'package:spotube/hooks/use_palette_color.dart';
import 'package:spotube/hooks/useCustomStatusBarColor.dart'; import 'package:spotube/pages/lyrics/genius_lyrics.dart';
import 'package:spotube/hooks/usePaletteColor.dart'; import 'package:spotube/pages/lyrics/synced_lyrics.dart';
import 'package:spotube/provider/Playback.dart'; import 'package:spotube/provider/playback_provider.dart';
import 'package:spotube/utils/platform.dart'; import 'package:spotube/utils/platform.dart';
import 'package:spotube/utils/type_conversion_utils.dart'; import 'package:spotube/utils/type_conversion_utils.dart';
class Lyrics extends HookConsumerWidget { class LyricsPage extends HookConsumerWidget {
const Lyrics({Key? key}) : super(key: key); const LyricsPage({Key? key}) : super(key: key);
@override @override
Widget build(BuildContext context, ref) { Widget build(BuildContext context, ref) {

View File

@ -5,13 +5,13 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:palette_generator/palette_generator.dart'; import 'package:palette_generator/palette_generator.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:spotube/components/LoaderShimmers/ShimmerLyrics.dart'; import 'package:spotube/components/shared/shimmers/shimmer_lyrics.dart';
import 'package:spotube/components/Lyrics/LyricDelayAdjustDialog.dart'; import 'package:spotube/components/shared/spotube_marquee_text.dart';
import 'package:spotube/components/Shared/SpotubeMarqueeText.dart'; import 'package:spotube/components/lyrics/lyric_delay_adjust_dialog.dart';
import 'package:spotube/hooks/useAutoScrollController.dart'; import 'package:spotube/hooks/use_auto_scroll_controller.dart';
import 'package:spotube/hooks/useBreakpoints.dart'; import 'package:spotube/hooks/use_breakpoints.dart';
import 'package:spotube/hooks/useSyncedLyrics.dart'; import 'package:spotube/hooks/use_synced_lyrics.dart';
import 'package:spotube/provider/Playback.dart'; import 'package:spotube/provider/playback_provider.dart';
import 'package:scroll_to_index/scroll_to_index.dart'; import 'package:scroll_to_index/scroll_to_index.dart';
import 'package:spotube/provider/SpotifyRequests.dart'; import 'package:spotube/provider/SpotifyRequests.dart';
import 'package:spotube/utils/type_conversion_utils.dart'; import 'package:spotube/utils/type_conversion_utils.dart';

View File

@ -4,7 +4,7 @@ import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/provider/Auth.dart'; import 'package:spotube/provider/auth_provider.dart';
import 'package:spotube/utils/platform.dart'; import 'package:spotube/utils/platform.dart';
import 'package:spotube/utils/service_utils.dart'; import 'package:spotube/utils/service_utils.dart';

View File

@ -7,16 +7,16 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:palette_generator/palette_generator.dart'; import 'package:palette_generator/palette_generator.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:spotube/components/Player/PlayerActions.dart'; import 'package:spotube/components/player/player_actions.dart';
import 'package:spotube/components/Player/PlayerControls.dart'; import 'package:spotube/components/player/player_controls.dart';
import 'package:spotube/components/Shared/PageWindowTitleBar.dart'; import 'package:spotube/components/shared/page_window_title_bar.dart';
import 'package:spotube/components/Shared/SpotubeMarqueeText.dart'; import 'package:spotube/components/shared/spotube_marquee_text.dart';
import 'package:spotube/components/Shared/UniversalImage.dart'; import 'package:spotube/components/shared/image/universal_image.dart';
import 'package:spotube/hooks/useBreakpoints.dart'; import 'package:spotube/hooks/use_breakpoints.dart';
import 'package:spotube/hooks/useCustomStatusBarColor.dart'; import 'package:spotube/hooks/use_custom_status_bar_color.dart';
import 'package:spotube/hooks/usePaletteColor.dart'; import 'package:spotube/hooks/use_palette_color.dart';
import 'package:spotube/provider/Playback.dart'; import 'package:spotube/provider/playback_provider.dart';
import 'package:spotube/provider/UserPreferences.dart'; import 'package:spotube/provider/user_preferences_provider.dart';
import 'package:spotube/utils/type_conversion_utils.dart'; import 'package:spotube/utils/type_conversion_utils.dart';
class PlayerView extends HookConsumerWidget { class PlayerView extends HookConsumerWidget {

View File

@ -2,16 +2,16 @@ import 'package:fl_query_hooks/fl_query_hooks.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:spotube/components/Shared/HeartButton.dart'; import 'package:spotube/components/shared/heart_button.dart';
import 'package:spotube/components/Shared/TrackCollectionView.dart'; import 'package:spotube/components/shared/track_table/track_collection_view.dart';
import 'package:spotube/components/Shared/TracksTableView.dart'; import 'package:spotube/components/shared/track_table/tracks_table_view.dart';
import 'package:spotube/hooks/useBreakpoints.dart'; import 'package:spotube/hooks/use_breakpoints.dart';
import 'package:spotube/models/CurrentPlaylist.dart'; import 'package:spotube/models/current_playlist.dart';
import 'package:spotube/models/Logger.dart'; import 'package:spotube/models/logger.dart';
import 'package:spotube/provider/Playback.dart'; import 'package:spotube/provider/playback_provider.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:spotube/provider/SpotifyDI.dart'; import 'package:spotube/provider/spotify_provider.dart';
import 'package:spotube/provider/SpotifyRequests.dart'; import 'package:spotube/provider/SpotifyRequests.dart';
import 'package:spotube/utils/service_utils.dart'; import 'package:spotube/utils/service_utils.dart';
import 'package:spotube/utils/type_conversion_utils.dart'; import 'package:spotube/utils/type_conversion_utils.dart';

View File

@ -4,14 +4,12 @@ import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/Home/Sidebar.dart'; import 'package:spotube/components/shared/dialogs/replace_downloaded_dialog.dart';
import 'package:spotube/components/Home/SpotubeNavigationBar.dart'; import 'package:spotube/components/root/bottom_player.dart';
import 'package:spotube/components/Player/Player.dart'; import 'package:spotube/components/root/sidebar.dart';
import 'package:spotube/components/Shared/PageWindowTitleBar.dart'; import 'package:spotube/components/root/spotube_navigation_bar.dart';
import 'package:spotube/components/Shared/ReplaceDownloadedFileDialog.dart'; import 'package:spotube/hooks/use_update_checker.dart';
import 'package:spotube/hooks/useUpdateChecker.dart'; import 'package:spotube/provider/downloader_provider.dart';
import 'package:spotube/provider/Downloader.dart';
import 'package:spotube/utils/platform.dart';
const rootPaths = { const rootPaths = {
0: "/", 0: "/",
@ -20,9 +18,9 @@ const rootPaths = {
3: "/lyrics", 3: "/lyrics",
}; };
class Shell extends HookConsumerWidget { class RootApp extends HookConsumerWidget {
final Widget child; final Widget child;
const Shell({ const RootApp({
required this.child, required this.child,
Key? key, Key? key,
}) : super(key: key); }) : super(key: key);
@ -38,7 +36,7 @@ class Shell extends HookConsumerWidget {
if (!isMounted()) return false; if (!isMounted()) return false;
return await showPlatformAlertDialog<bool>( return await showPlatformAlertDialog<bool>(
context, context,
builder: (context) => ReplaceDownloadedFileDialog( builder: (context) => ReplaceDownloadedDialog(
track: track, track: track,
), ),
) ?? ) ??

View File

@ -5,19 +5,19 @@ import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:spotube/components/Album/AlbumCard.dart'; import 'package:spotube/components/album/album_card.dart';
import 'package:spotube/components/Artist/ArtistCard.dart'; import 'package:spotube/components/shared/shimmers/shimmer_playbutton_card.dart';
import 'package:spotube/components/LoaderShimmers/ShimmerPlaybuttonCard.dart'; import 'package:spotube/components/shared/fallbacks/anonymous_fallback.dart';
import 'package:spotube/components/Playlist/PlaylistCard.dart'; import 'package:spotube/components/shared/page_window_title_bar.dart';
import 'package:spotube/components/Shared/AnonymousFallback.dart'; import 'package:spotube/components/shared/track_table/track_tile.dart';
import 'package:spotube/components/Shared/PageWindowTitleBar.dart'; import 'package:spotube/components/shared/waypoint.dart';
import 'package:spotube/components/Shared/TrackTile.dart'; import 'package:spotube/components/artist/artist_card.dart';
import 'package:spotube/components/Shared/Waypoint.dart'; import 'package:spotube/components/playlist/playlist_card.dart';
import 'package:spotube/hooks/useBreakpoints.dart'; import 'package:spotube/hooks/use_breakpoints.dart';
import 'package:spotube/models/CurrentPlaylist.dart'; import 'package:spotube/models/current_playlist.dart';
import 'package:spotube/provider/Auth.dart'; import 'package:spotube/provider/auth_provider.dart';
import 'package:spotube/provider/Playback.dart'; import 'package:spotube/provider/playback_provider.dart';
import 'package:spotube/provider/SpotifyDI.dart'; import 'package:spotube/provider/spotify_provider.dart';
import 'package:spotube/provider/SpotifyRequests.dart'; import 'package:spotube/provider/SpotifyRequests.dart';
import 'package:spotube/utils/platform.dart'; import 'package:spotube/utils/platform.dart';
import 'package:spotube/utils/primitive_utils.dart'; import 'package:spotube/utils/primitive_utils.dart';
@ -27,8 +27,8 @@ import 'package:collection/collection.dart';
final searchTermStateProvider = StateProvider<String>((ref) => ""); final searchTermStateProvider = StateProvider<String>((ref) => "");
class Search extends HookConsumerWidget { class SearchPage extends HookConsumerWidget {
const Search({Key? key}) : super(key: key); const SearchPage({Key? key}) : super(key: key);
@override @override
Widget build(BuildContext context, ref) { Widget build(BuildContext context, ref) {

View File

@ -1,8 +1,8 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/Shared/Hyperlink.dart'; import 'package:spotube/components/shared/links/hyper_link.dart';
import 'package:spotube/hooks/usePackageInfo.dart'; import 'package:spotube/hooks/use_package_info.dart';
const licenseText = """ const licenseText = """
BSD-4-Clause License BSD-4-Clause License

View File

@ -5,22 +5,22 @@ import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart'; import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/Settings/About.dart'; import 'package:spotube/components/settings/color_scheme_picker_dialog.dart';
import 'package:spotube/components/Settings/ColorSchemePickerDialog.dart'; import 'package:spotube/components/shared/adaptive/adaptive_list_tile.dart';
import 'package:spotube/components/Shared/AdaptiveListTile.dart'; import 'package:spotube/components/shared/page_window_title_bar.dart';
import 'package:spotube/components/Shared/PageWindowTitleBar.dart'; import 'package:spotube/hooks/use_breakpoints.dart';
import 'package:spotube/hooks/useBreakpoints.dart';
import 'package:spotube/main.dart'; import 'package:spotube/main.dart';
import 'package:spotube/models/SpotifyMarkets.dart'; import 'package:spotube/collections/spotify_markets.dart';
import 'package:spotube/models/SpotubeTrack.dart'; import 'package:spotube/models/spotube_track.dart';
import 'package:spotube/provider/Auth.dart'; import 'package:spotube/pages/settings/about.dart';
import 'package:spotube/provider/Playback.dart'; import 'package:spotube/provider/auth_provider.dart';
import 'package:spotube/provider/UserPreferences.dart'; import 'package:spotube/provider/playback_provider.dart';
import 'package:spotube/provider/user_preferences_provider.dart';
import 'package:spotube/utils/platform.dart'; import 'package:spotube/utils/platform.dart';
import 'package:url_launcher/url_launcher_string.dart'; import 'package:url_launcher/url_launcher_string.dart';
class Settings extends HookConsumerWidget { class SettingsPage extends HookConsumerWidget {
const Settings({Key? key}) : super(key: key); const SettingsPage({Key? key}) : super(key: key);
@override @override
Widget build(BuildContext context, ref) { Widget build(BuildContext context, ref) {

View File

@ -1,6 +1,6 @@
import 'package:fl_query/fl_query.dart'; import 'package:fl_query/fl_query.dart';
import 'package:spotube/models/LyricsModels.dart'; import 'package:spotube/models/lyrics.dart';
import 'package:spotube/models/SpotubeTrack.dart'; import 'package:spotube/models/spotube_track.dart';
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:spotube/utils/service_utils.dart'; import 'package:spotube/utils/service_utils.dart';

Some files were not shown because too many files have changed in this diff Show More