From 1ca39f4e4472418ac8f0a6d22984d58fea11a2db Mon Sep 17 00:00:00 2001 From: Rahul-Sahani04 <110347707+Rahul-Sahani04@users.noreply.github.com> Date: Thu, 6 Nov 2025 17:57:11 +0530 Subject: [PATCH] feat(queue): add multi-select and bulk actions to queue - Add selection mode to PlayerQueue with long-press to select - Disable inner navigation (title/artist) when selecting via TrackTile - Show checkboxes only in selection mode - Add selection AppBar behavior and bottom-sheet menu with: Select all, Add to playlist, Remove selected, Cancel - Reuse existing PlaylistAddTrackDialog for bulk add - Hide drag handle while in selection mode Closes: # (implement multi-select queue feature) --- .vscode/c_cpp_properties.json | 22 -- .vscode/launch.json | 58 --- .vscode/settings.json | 34 -- .vscode/snippets.code-snippets | 170 -------- .vscode/tasks.json | 4 - android/app/build.gradle | 12 +- lib/collections/assets.gen.dart | 22 +- lib/collections/fonts.gen.dart | 3 +- lib/collections/routes.gr.dart | 344 +++++----------- lib/components/track_tile/track_tile.dart | 54 ++- lib/models/connect/connect.freezed.dart | 39 +- lib/models/database/database.g.dart | 72 ---- lib/models/metadata/metadata.freezed.dart | 370 ++++++++++++++---- .../playback/track_sources.freezed.dart | 63 ++- lib/modules/player/player_queue.dart | 224 +++++++++-- lib/pages/settings/blacklist.dart | 2 +- lib/provider/audio_player/state.freezed.dart | 21 +- lib/services/metadata/metadata.dart | 1 + lib/services/song_link/song_link.freezed.dart | 21 +- linux/flutter/generated_plugin_registrant.cc | 8 - linux/flutter/generated_plugins.cmake | 2 - macos/Flutter/GeneratedPluginRegistrant.swift | 4 - pubspec.lock | 284 ++++++-------- .../flutter/generated_plugin_registrant.cc | 6 - windows/flutter/generated_plugins.cmake | 2 - 25 files changed, 882 insertions(+), 960 deletions(-) delete mode 100644 .vscode/c_cpp_properties.json delete mode 100644 .vscode/launch.json delete mode 100644 .vscode/settings.json delete mode 100644 .vscode/snippets.code-snippets delete mode 100644 .vscode/tasks.json diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json deleted file mode 100644 index 6d27ad30..00000000 --- a/.vscode/c_cpp_properties.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "configurations": [ - { - "name": "Win32", - "includePath": [ - "${workspaceFolder}/**" - ], - "defines": [ - "_DEBUG", - "UNICODE", - "_UNICODE" - ], - "windowsSdkVersion": "10.0.19041.0", - "compilerPath": "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.29.30133\\bin\\Hostx64\\x64\\cl.exe", - "cStandard": "c17", - "cppStandard": "c++17", - "intelliSenseMode": "windows-msvc-x64", - "configurationProvider": "ms-vscode.makefile-tools" - } - ], - "version": 4 -} \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index b81e2eee..00000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "version": "0.2.0", - "configurations": [ - { - "name": "spotube", - "type": "dart", - "request": "launch", - "program": "lib/main.dart", - }, - { - "name": "spotube (mobile)", - "type": "dart", - "request": "launch", - "program": "lib/main.dart", - "args": [ - "--flavor", - "dev" - ] - }, - { - "name": "spotube (mobile-skia)", - "type": "dart", - "request": "launch", - "program": "lib/main.dart", - "args": [ - "--flavor", - "dev", - "--no-enable-impeller" - ] - }, - { - "name": "spotube (profile)", - "type": "dart", - "request": "launch", - "program": "lib/main.dart", - "flutterMode": "profile" - }, - { - "name": "spotube (release)", - "type": "dart", - "request": "launch", - "program": "lib/main.dart", - "flutterMode": "release" - }, - { - "name": "spotube (mobile) (release)", - "type": "dart", - "request": "launch", - "program": "lib/main.dart", - "flutterMode": "release", - "args": [ - "--flavor", - "dev" - ] - } - ], - "compounds": [] -} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 69c80bb3..00000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "cmake.configureOnOpen": false, - "cSpell.words": [ - "acousticness", - "ambiguate", - "Amoled", - "Buildless", - "configurators", - "danceability", - "fuzzywuzzy", - "gapless", - "instrumentalness", - "isrc", - "Mpris", - "RGBO", - "riverpod", - "Scrobblenaut", - "shadcn", - "skeletonizer", - "songlink", - "speechiness", - "Spotube", - "titlebar", - "winget" - ], - "editor.formatOnSave": true, - "explorer.fileNesting.enabled": true, - "explorer.fileNesting.patterns": { - "pubspec.yaml": "pubspec.lock,analysis_options.yaml,.packages,.flutter-plugins,.flutter-plugins-dependencies,flutter_launcher_icons*.yaml,flutter_native_splash*.yaml", - "README.md": "LICENSE,CODE_OF_CONDUCT.md,CONTRIBUTING.md,SECURITY.md,CONTRIBUTION.md,CHANGELOG.md,PRIVACY_POLICY.md", - "*.dart": "${capture}.g.dart,${capture}.freezed.dart" - }, - "dart.flutterSdkPath": ".fvm/versions/3.35.2" -} \ No newline at end of file diff --git a/.vscode/snippets.code-snippets b/.vscode/snippets.code-snippets deleted file mode 100644 index 9a18929b..00000000 --- a/.vscode/snippets.code-snippets +++ /dev/null @@ -1,170 +0,0 @@ -{ - "PaginatedState": { - "scope": "dart", - "prefix": "paginatedState", - "description": "Generate a PaginatedState", - "body": [ - "class ${1:Model}State extends PaginatedState<${2:Model}> {", - " ${1:Model}State({", - " required super.items,", - " required super.offset,", - " required super.limit,", - " required super.hasMore,", - " });", - " ", - " @override", - " ${1:Model}State copyWith({", - " List<${2:Model}>? items,", - " int? offset,", - " int? limit,", - " bool? hasMore,", - " }) {", - " return ${1:Model}State(", - " items: items ?? this.items,", - " offset: offset ?? this.offset,", - " limit: limit ?? this.limit,", - " hasMore: hasMore ?? this.hasMore,", - " );", - " }", - "}" - ] - }, - "PaginatedAsyncNotifier": { - "scope": "dart", - "prefix": "paginatedAsyncNotifier", - "description": "Generate a PaginatedAsyncNotifier", - "body": [ - "class ${1:NotifierName}Notifier extends PaginatedAsyncNotifier<${3:Item}, ${2:Model}State> {", - " ${1:NotifierName}Notifier() : super();", - " ", - " @override", - " fetch(int offset, int limit) async {", - " throw UnimplementedError();", - " }", - " ", - " @override", - " build() async {", - " throw UnimplementedError();", - " }", - "}" - ] - }, - "PaginaitedNotifierWithState": { - "scope": "dart", - "prefix": "paginatedNotifierWithState", - "description": "Generate a PaginatedNotifier with PaginatedState", - "body": [ - "class $1State extends PaginatedState<$2> {", - " $1State({", - " required super.items,", - " required super.offset,", - " required super.limit,", - " required super.hasMore,", - " });", - " ", - " @override", - " $1State copyWith({", - " List<$2>? items,", - " int? offset,", - " int? limit,", - " bool? hasMore,", - " }) {", - " return $1State(", - " items: items ?? this.items,", - " offset: offset ?? this.offset,", - " limit: limit ?? this.limit,", - " hasMore: hasMore ?? this.hasMore,", - " );", - " }", - "}", - " ", - "class $1Notifier", - " extends PaginatedAsyncNotifier<$2, $1State> {", - " $1Notifier() : super();", - " ", - " @override", - " fetch(int offset, int limit) async {", - " throw UnimplementedError();", - " }", - " ", - " @override", - " build() async {", - " throw UnimplementedError();", - " }", - "}", - " ", - "final ${1/(.*)/${1:/camelcase}/}Provider = AsyncNotifierProvider<$1Notifier, $1State>(", - " ()=> $1Notifier(),", - ");" - ] - }, - "FamilyPaginatedAsyncNotifier": { - "scope": "dart", - "prefix": "familyPaginatedAsyncNotifier", - "description": "Generate a FamilyPaginatedAsyncNotifier", - "body": [ - "class ${1:NotifierName}Notifier extends FamilyPaginatedAsyncNotifier<${3:Item}, ${2:Model}State, {$4:Arg}> {", - " ${1:NotifierName}Notifier() : super();", - " ", - " @override", - " fetch(arg, offset, limit) async {", - " throw UnimplementedError();", - " }", - " ", - " @override", - " build(arg) async {", - " throw UnimplementedError();", - " }", - "}" - ] - }, - "FamilyPaginaitedNotifierWithState": { - "scope": "dart", - "prefix": "familyPaginatedNotifierWithState", - "description": "Generate a FamilyPaginatedAsyncNotifier with PaginatedState", - "body": [ - "class $1State extends PaginatedState<$2> {", - " $1State({", - " required super.items,", - " required super.offset,", - " required super.limit,", - " required super.hasMore,", - " });", - " ", - " @override", - " $1State copyWith({", - " List<$2>? items,", - " int? offset,", - " int? limit,", - " bool? hasMore,", - " }) {", - " return $1State(", - " items: items ?? this.items,", - " offset: offset ?? this.offset,", - " limit: limit ?? this.limit,", - " hasMore: hasMore ?? this.hasMore,", - " );", - " }", - "}", - " ", - "class $1Notifier", - " extends FamilyPaginatedAsyncNotifier<$2, $1State, $3> {", - " $1Notifier() : super();", - " ", - " @override", - " fetch(arg, offset, limit) async {", - " throw UnimplementedError();", - " }", - " ", - " @override", - " build(arg) async {", - " throw UnimplementedError();", - " }", - "}", - " ", - "final ${1/(.*)/${1:/camelcase}/}Provider = AsyncNotifierProviderFamily<$1Notifier, $1State, $3>(", - " ()=> $1Notifier(),", - ");" - ] - }, -} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json deleted file mode 100644 index f67eb4c6..00000000 --- a/.vscode/tasks.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "version": "2.0.0", - "tasks": [] -} \ No newline at end of file diff --git a/android/app/build.gradle b/android/app/build.gradle index ee481eca..383fb5c1 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -69,6 +69,12 @@ android { } signingConfigs { + debug { + storeFile file("${System.getenv("HOME")}/.android/debug.keystore") + storePassword "android" + keyAlias "androiddebugkey" + keyPassword "android" + } release { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] @@ -82,7 +88,7 @@ android { signingConfig signingConfigs.release } debug { - signingConfig signingConfigs.release + signingConfig signingConfigs.debug } } @@ -94,14 +100,14 @@ android { resValue "string", "app_name_en", "Spotube Nightly" applicationIdSuffix ".nightly" versionNameSuffix "-nightly" - signingConfig signingConfigs.release + signingConfig signingConfigs.debug } dev { dimension "default" resValue "string", "app_name_en", "Spotube Dev" applicationIdSuffix ".dev" versionNameSuffix "-dev" - signingConfig signingConfigs.release + signingConfig signingConfigs.debug } stable { dimension "default" diff --git a/lib/collections/assets.gen.dart b/lib/collections/assets.gen.dart index 31fb54b8..49435523 100644 --- a/lib/collections/assets.gen.dart +++ b/lib/collections/assets.gen.dart @@ -1,3 +1,5 @@ +// dart format width=80 + /// GENERATED CODE - DO NOT MODIFY BY HAND /// ***************************************************** /// FlutterGen @@ -5,7 +7,7 @@ // coverage:ignore-file // ignore_for_file: type=lint -// ignore_for_file: directives_ordering,unnecessary_import,implicit_dynamic_list_literal,deprecated_member_use +// ignore_for_file: deprecated_member_use,directives_ordering,implicit_dynamic_list_literal,unnecessary_import import 'package:flutter/widgets.dart'; @@ -84,7 +86,7 @@ class $AssetsImagesLogosGen { } class Assets { - Assets._(); + const Assets._(); static const String license = 'LICENSE'; static const $AssetsBrandingGen branding = $AssetsBrandingGen(); @@ -99,12 +101,14 @@ class AssetGenImage { this._assetName, { this.size, this.flavors = const {}, + this.animation, }); final String _assetName; final Size? size; final Set flavors; + final AssetGenImageAnimation? animation; Image image({ Key? key, @@ -127,7 +131,7 @@ class AssetGenImage { bool gaplessPlayback = true, bool isAntiAlias = false, String? package, - FilterQuality filterQuality = FilterQuality.low, + FilterQuality filterQuality = FilterQuality.medium, int? cacheWidth, int? cacheHeight, }) { @@ -174,3 +178,15 @@ class AssetGenImage { String get keyName => _assetName; } + +class AssetGenImageAnimation { + const AssetGenImageAnimation({ + required this.isAnimation, + required this.duration, + required this.frames, + }); + + final bool isAnimation; + final Duration duration; + final int frames; +} diff --git a/lib/collections/fonts.gen.dart b/lib/collections/fonts.gen.dart index 16cc6e82..d2c68231 100644 --- a/lib/collections/fonts.gen.dart +++ b/lib/collections/fonts.gen.dart @@ -1,3 +1,4 @@ +// dart format width=80 /// GENERATED CODE - DO NOT MODIFY BY HAND /// ***************************************************** /// FlutterGen @@ -5,7 +6,7 @@ // coverage:ignore-file // ignore_for_file: type=lint -// ignore_for_file: directives_ordering,unnecessary_import,implicit_dynamic_list_literal,deprecated_member_use +// ignore_for_file: deprecated_member_use,directives_ordering,implicit_dynamic_list_literal,unnecessary_import class FontFamily { FontFamily._(); diff --git a/lib/collections/routes.gr.dart b/lib/collections/routes.gr.dart index e039abb9..f5ff24bf 100644 --- a/lib/collections/routes.gr.dart +++ b/lib/collections/routes.gr.dart @@ -1,3 +1,4 @@ +// dart format width=80 // GENERATED CODE - DO NOT MODIFY BY HAND // ************************************************************************** @@ -59,10 +60,7 @@ import 'package:spotube/pages/track/track.dart' as _i35; /// [_i1.AboutSpotubePage] class AboutSpotubeRoute extends _i41.PageRouteInfo { const AboutSpotubeRoute({List<_i41.PageRouteInfo>? children}) - : super( - AboutSpotubeRoute.name, - initialChildren: children, - ); + : super(AboutSpotubeRoute.name, initialChildren: children); static const String name = 'AboutSpotubeRoute'; @@ -83,15 +81,11 @@ class AlbumRoute extends _i41.PageRouteInfo { required _i43.SpotubeSimpleAlbumObject album, List<_i41.PageRouteInfo>? children, }) : super( - AlbumRoute.name, - args: AlbumRouteArgs( - key: key, - id: id, - album: album, - ), - rawPathParams: {'id': id}, - initialChildren: children, - ); + AlbumRoute.name, + args: AlbumRouteArgs(key: key, id: id, album: album), + rawPathParams: {'id': id}, + initialChildren: children, + ); static const String name = 'AlbumRoute'; @@ -99,21 +93,13 @@ class AlbumRoute extends _i41.PageRouteInfo { name, builder: (data) { final args = data.argsAs(); - return _i2.AlbumPage( - key: args.key, - id: args.id, - album: args.album, - ); + return _i2.AlbumPage(key: args.key, id: args.id, album: args.album); }, ); } class AlbumRouteArgs { - const AlbumRouteArgs({ - this.key, - required this.id, - required this.album, - }); + const AlbumRouteArgs({this.key, required this.id, required this.album}); final _i42.Key? key; @@ -135,14 +121,11 @@ class ArtistRoute extends _i41.PageRouteInfo { _i42.Key? key, List<_i41.PageRouteInfo>? children, }) : super( - ArtistRoute.name, - args: ArtistRouteArgs( - artistId: artistId, - key: key, - ), - rawPathParams: {'id': artistId}, - initialChildren: children, - ); + ArtistRoute.name, + args: ArtistRouteArgs(artistId: artistId, key: key), + rawPathParams: {'id': artistId}, + initialChildren: children, + ); static const String name = 'ArtistRoute'; @@ -151,20 +134,15 @@ class ArtistRoute extends _i41.PageRouteInfo { builder: (data) { final pathParams = data.inheritedPathParams; final args = data.argsAs( - orElse: () => ArtistRouteArgs(artistId: pathParams.getString('id'))); - return _i3.ArtistPage( - args.artistId, - key: args.key, + orElse: () => ArtistRouteArgs(artistId: pathParams.getString('id')), ); + return _i3.ArtistPage(args.artistId, key: args.key); }, ); } class ArtistRouteArgs { - const ArtistRouteArgs({ - required this.artistId, - this.key, - }); + const ArtistRouteArgs({required this.artistId, this.key}); final String artistId; @@ -180,10 +158,7 @@ class ArtistRouteArgs { /// [_i4.BlackListPage] class BlackListRoute extends _i41.PageRouteInfo { const BlackListRoute({List<_i41.PageRouteInfo>? children}) - : super( - BlackListRoute.name, - initialChildren: children, - ); + : super(BlackListRoute.name, initialChildren: children); static const String name = 'BlackListRoute'; @@ -199,10 +174,7 @@ class BlackListRoute extends _i41.PageRouteInfo { /// [_i5.ConnectControlPage] class ConnectControlRoute extends _i41.PageRouteInfo { const ConnectControlRoute({List<_i41.PageRouteInfo>? children}) - : super( - ConnectControlRoute.name, - initialChildren: children, - ); + : super(ConnectControlRoute.name, initialChildren: children); static const String name = 'ConnectControlRoute'; @@ -218,10 +190,7 @@ class ConnectControlRoute extends _i41.PageRouteInfo { /// [_i6.ConnectPage] class ConnectRoute extends _i41.PageRouteInfo { const ConnectRoute({List<_i41.PageRouteInfo>? children}) - : super( - ConnectRoute.name, - initialChildren: children, - ); + : super(ConnectRoute.name, initialChildren: children); static const String name = 'ConnectRoute'; @@ -237,10 +206,7 @@ class ConnectRoute extends _i41.PageRouteInfo { /// [_i7.GettingStartedPage] class GettingStartedRoute extends _i41.PageRouteInfo { const GettingStartedRoute({List<_i41.PageRouteInfo>? children}) - : super( - GettingStartedRoute.name, - initialChildren: children, - ); + : super(GettingStartedRoute.name, initialChildren: children); static const String name = 'GettingStartedRoute'; @@ -262,15 +228,15 @@ class HomeBrowseSectionItemsRoute required _i43.SpotubeBrowseSectionObject section, List<_i41.PageRouteInfo>? children, }) : super( - HomeBrowseSectionItemsRoute.name, - args: HomeBrowseSectionItemsRouteArgs( - key: key, - sectionId: sectionId, - section: section, - ), - rawPathParams: {'sectionId': sectionId}, - initialChildren: children, - ); + HomeBrowseSectionItemsRoute.name, + args: HomeBrowseSectionItemsRouteArgs( + key: key, + sectionId: sectionId, + section: section, + ), + rawPathParams: {'sectionId': sectionId}, + initialChildren: children, + ); static const String name = 'HomeBrowseSectionItemsRoute'; @@ -310,10 +276,7 @@ class HomeBrowseSectionItemsRouteArgs { /// [_i9.HomePage] class HomeRoute extends _i41.PageRouteInfo { const HomeRoute({List<_i41.PageRouteInfo>? children}) - : super( - HomeRoute.name, - initialChildren: children, - ); + : super(HomeRoute.name, initialChildren: children); static const String name = 'HomeRoute'; @@ -329,10 +292,7 @@ class HomeRoute extends _i41.PageRouteInfo { /// [_i10.LastFMLoginPage] class LastFMLoginRoute extends _i41.PageRouteInfo { const LastFMLoginRoute({List<_i41.PageRouteInfo>? children}) - : super( - LastFMLoginRoute.name, - initialChildren: children, - ); + : super(LastFMLoginRoute.name, initialChildren: children); static const String name = 'LastFMLoginRoute'; @@ -348,10 +308,7 @@ class LastFMLoginRoute extends _i41.PageRouteInfo { /// [_i11.LibraryPage] class LibraryRoute extends _i41.PageRouteInfo { const LibraryRoute({List<_i41.PageRouteInfo>? children}) - : super( - LibraryRoute.name, - initialChildren: children, - ); + : super(LibraryRoute.name, initialChildren: children); static const String name = 'LibraryRoute'; @@ -371,13 +328,10 @@ class LikedPlaylistRoute extends _i41.PageRouteInfo { required _i43.SpotubeSimplePlaylistObject playlist, List<_i41.PageRouteInfo>? children, }) : super( - LikedPlaylistRoute.name, - args: LikedPlaylistRouteArgs( - key: key, - playlist: playlist, - ), - initialChildren: children, - ); + LikedPlaylistRoute.name, + args: LikedPlaylistRouteArgs(key: key, playlist: playlist), + initialChildren: children, + ); static const String name = 'LikedPlaylistRoute'; @@ -385,19 +339,13 @@ class LikedPlaylistRoute extends _i41.PageRouteInfo { name, builder: (data) { final args = data.argsAs(); - return _i12.LikedPlaylistPage( - key: args.key, - playlist: args.playlist, - ); + return _i12.LikedPlaylistPage(key: args.key, playlist: args.playlist); }, ); } class LikedPlaylistRouteArgs { - const LikedPlaylistRouteArgs({ - this.key, - required this.playlist, - }); + const LikedPlaylistRouteArgs({this.key, required this.playlist}); final _i42.Key? key; @@ -419,15 +367,15 @@ class LocalLibraryRoute extends _i41.PageRouteInfo { bool isCache = false, List<_i41.PageRouteInfo>? children, }) : super( - LocalLibraryRoute.name, - args: LocalLibraryRouteArgs( - location: location, - key: key, - isDownloads: isDownloads, - isCache: isCache, - ), - initialChildren: children, - ); + LocalLibraryRoute.name, + args: LocalLibraryRouteArgs( + location: location, + key: key, + isDownloads: isDownloads, + isCache: isCache, + ), + initialChildren: children, + ); static const String name = 'LocalLibraryRoute'; @@ -471,10 +419,7 @@ class LocalLibraryRouteArgs { /// [_i14.LogsPage] class LogsRoute extends _i41.PageRouteInfo { const LogsRoute({List<_i41.PageRouteInfo>? children}) - : super( - LogsRoute.name, - initialChildren: children, - ); + : super(LogsRoute.name, initialChildren: children); static const String name = 'LogsRoute'; @@ -490,10 +435,7 @@ class LogsRoute extends _i41.PageRouteInfo { /// [_i15.LyricsPage] class LyricsRoute extends _i41.PageRouteInfo { const LyricsRoute({List<_i41.PageRouteInfo>? children}) - : super( - LyricsRoute.name, - initialChildren: children, - ); + : super(LyricsRoute.name, initialChildren: children); static const String name = 'LyricsRoute'; @@ -513,13 +455,10 @@ class MiniLyricsRoute extends _i41.PageRouteInfo { required _i44.Size prevSize, List<_i41.PageRouteInfo>? children, }) : super( - MiniLyricsRoute.name, - args: MiniLyricsRouteArgs( - key: key, - prevSize: prevSize, - ), - initialChildren: children, - ); + MiniLyricsRoute.name, + args: MiniLyricsRouteArgs(key: key, prevSize: prevSize), + initialChildren: children, + ); static const String name = 'MiniLyricsRoute'; @@ -527,19 +466,13 @@ class MiniLyricsRoute extends _i41.PageRouteInfo { name, builder: (data) { final args = data.argsAs(); - return _i16.MiniLyricsPage( - key: args.key, - prevSize: args.prevSize, - ); + return _i16.MiniLyricsPage(key: args.key, prevSize: args.prevSize); }, ); } class MiniLyricsRouteArgs { - const MiniLyricsRouteArgs({ - this.key, - required this.prevSize, - }); + const MiniLyricsRouteArgs({this.key, required this.prevSize}); final _i44.Key? key; @@ -555,10 +488,7 @@ class MiniLyricsRouteArgs { /// [_i17.PlayerLyricsPage] class PlayerLyricsRoute extends _i41.PageRouteInfo { const PlayerLyricsRoute({List<_i41.PageRouteInfo>? children}) - : super( - PlayerLyricsRoute.name, - initialChildren: children, - ); + : super(PlayerLyricsRoute.name, initialChildren: children); static const String name = 'PlayerLyricsRoute'; @@ -574,10 +504,7 @@ class PlayerLyricsRoute extends _i41.PageRouteInfo { /// [_i18.PlayerQueuePage] class PlayerQueueRoute extends _i41.PageRouteInfo { const PlayerQueueRoute({List<_i41.PageRouteInfo>? children}) - : super( - PlayerQueueRoute.name, - initialChildren: children, - ); + : super(PlayerQueueRoute.name, initialChildren: children); static const String name = 'PlayerQueueRoute'; @@ -593,10 +520,7 @@ class PlayerQueueRoute extends _i41.PageRouteInfo { /// [_i19.PlayerTrackSourcesPage] class PlayerTrackSourcesRoute extends _i41.PageRouteInfo { const PlayerTrackSourcesRoute({List<_i41.PageRouteInfo>? children}) - : super( - PlayerTrackSourcesRoute.name, - initialChildren: children, - ); + : super(PlayerTrackSourcesRoute.name, initialChildren: children); static const String name = 'PlayerTrackSourcesRoute'; @@ -617,15 +541,11 @@ class PlaylistRoute extends _i41.PageRouteInfo { required _i43.SpotubeSimplePlaylistObject playlist, List<_i41.PageRouteInfo>? children, }) : super( - PlaylistRoute.name, - args: PlaylistRouteArgs( - key: key, - id: id, - playlist: playlist, - ), - rawPathParams: {'id': id}, - initialChildren: children, - ); + PlaylistRoute.name, + args: PlaylistRouteArgs(key: key, id: id, playlist: playlist), + rawPathParams: {'id': id}, + initialChildren: children, + ); static const String name = 'PlaylistRoute'; @@ -643,11 +563,7 @@ class PlaylistRoute extends _i41.PageRouteInfo { } class PlaylistRouteArgs { - const PlaylistRouteArgs({ - this.key, - required this.id, - required this.playlist, - }); + const PlaylistRouteArgs({this.key, required this.id, required this.playlist}); final _i42.Key? key; @@ -665,10 +581,7 @@ class PlaylistRouteArgs { /// [_i21.ProfilePage] class ProfileRoute extends _i41.PageRouteInfo { const ProfileRoute({List<_i41.PageRouteInfo>? children}) - : super( - ProfileRoute.name, - initialChildren: children, - ); + : super(ProfileRoute.name, initialChildren: children); static const String name = 'ProfileRoute'; @@ -684,10 +597,7 @@ class ProfileRoute extends _i41.PageRouteInfo { /// [_i22.RootAppPage] class RootAppRoute extends _i41.PageRouteInfo { const RootAppRoute({List<_i41.PageRouteInfo>? children}) - : super( - RootAppRoute.name, - initialChildren: children, - ); + : super(RootAppRoute.name, initialChildren: children); static const String name = 'RootAppRoute'; @@ -703,10 +613,7 @@ class RootAppRoute extends _i41.PageRouteInfo { /// [_i23.SearchPage] class SearchRoute extends _i41.PageRouteInfo { const SearchRoute({List<_i41.PageRouteInfo>? children}) - : super( - SearchRoute.name, - initialChildren: children, - ); + : super(SearchRoute.name, initialChildren: children); static const String name = 'SearchRoute'; @@ -728,14 +635,14 @@ class SettingsMetadataProviderFormRoute required List<_i43.MetadataFormFieldObject> fields, List<_i41.PageRouteInfo>? children, }) : super( - SettingsMetadataProviderFormRoute.name, - args: SettingsMetadataProviderFormRouteArgs( - key: key, - title: title, - fields: fields, - ), - initialChildren: children, - ); + SettingsMetadataProviderFormRoute.name, + args: SettingsMetadataProviderFormRouteArgs( + key: key, + title: title, + fields: fields, + ), + initialChildren: children, + ); static const String name = 'SettingsMetadataProviderFormRoute'; @@ -775,10 +682,7 @@ class SettingsMetadataProviderFormRouteArgs { /// [_i25.SettingsMetadataProviderPage] class SettingsMetadataProviderRoute extends _i41.PageRouteInfo { const SettingsMetadataProviderRoute({List<_i41.PageRouteInfo>? children}) - : super( - SettingsMetadataProviderRoute.name, - initialChildren: children, - ); + : super(SettingsMetadataProviderRoute.name, initialChildren: children); static const String name = 'SettingsMetadataProviderRoute'; @@ -794,10 +698,7 @@ class SettingsMetadataProviderRoute extends _i41.PageRouteInfo { /// [_i26.SettingsPage] class SettingsRoute extends _i41.PageRouteInfo { const SettingsRoute({List<_i41.PageRouteInfo>? children}) - : super( - SettingsRoute.name, - initialChildren: children, - ); + : super(SettingsRoute.name, initialChildren: children); static const String name = 'SettingsRoute'; @@ -813,10 +714,7 @@ class SettingsRoute extends _i41.PageRouteInfo { /// [_i27.SettingsScrobblingPage] class SettingsScrobblingRoute extends _i41.PageRouteInfo { const SettingsScrobblingRoute({List<_i41.PageRouteInfo>? children}) - : super( - SettingsScrobblingRoute.name, - initialChildren: children, - ); + : super(SettingsScrobblingRoute.name, initialChildren: children); static const String name = 'SettingsScrobblingRoute'; @@ -832,10 +730,7 @@ class SettingsScrobblingRoute extends _i41.PageRouteInfo { /// [_i28.StatsAlbumsPage] class StatsAlbumsRoute extends _i41.PageRouteInfo { const StatsAlbumsRoute({List<_i41.PageRouteInfo>? children}) - : super( - StatsAlbumsRoute.name, - initialChildren: children, - ); + : super(StatsAlbumsRoute.name, initialChildren: children); static const String name = 'StatsAlbumsRoute'; @@ -851,10 +746,7 @@ class StatsAlbumsRoute extends _i41.PageRouteInfo { /// [_i29.StatsArtistsPage] class StatsArtistsRoute extends _i41.PageRouteInfo { const StatsArtistsRoute({List<_i41.PageRouteInfo>? children}) - : super( - StatsArtistsRoute.name, - initialChildren: children, - ); + : super(StatsArtistsRoute.name, initialChildren: children); static const String name = 'StatsArtistsRoute'; @@ -870,10 +762,7 @@ class StatsArtistsRoute extends _i41.PageRouteInfo { /// [_i30.StatsMinutesPage] class StatsMinutesRoute extends _i41.PageRouteInfo { const StatsMinutesRoute({List<_i41.PageRouteInfo>? children}) - : super( - StatsMinutesRoute.name, - initialChildren: children, - ); + : super(StatsMinutesRoute.name, initialChildren: children); static const String name = 'StatsMinutesRoute'; @@ -889,10 +778,7 @@ class StatsMinutesRoute extends _i41.PageRouteInfo { /// [_i31.StatsPage] class StatsRoute extends _i41.PageRouteInfo { const StatsRoute({List<_i41.PageRouteInfo>? children}) - : super( - StatsRoute.name, - initialChildren: children, - ); + : super(StatsRoute.name, initialChildren: children); static const String name = 'StatsRoute'; @@ -908,10 +794,7 @@ class StatsRoute extends _i41.PageRouteInfo { /// [_i32.StatsPlaylistsPage] class StatsPlaylistsRoute extends _i41.PageRouteInfo { const StatsPlaylistsRoute({List<_i41.PageRouteInfo>? children}) - : super( - StatsPlaylistsRoute.name, - initialChildren: children, - ); + : super(StatsPlaylistsRoute.name, initialChildren: children); static const String name = 'StatsPlaylistsRoute'; @@ -927,10 +810,7 @@ class StatsPlaylistsRoute extends _i41.PageRouteInfo { /// [_i33.StatsStreamFeesPage] class StatsStreamFeesRoute extends _i41.PageRouteInfo { const StatsStreamFeesRoute({List<_i41.PageRouteInfo>? children}) - : super( - StatsStreamFeesRoute.name, - initialChildren: children, - ); + : super(StatsStreamFeesRoute.name, initialChildren: children); static const String name = 'StatsStreamFeesRoute'; @@ -946,10 +826,7 @@ class StatsStreamFeesRoute extends _i41.PageRouteInfo { /// [_i34.StatsStreamsPage] class StatsStreamsRoute extends _i41.PageRouteInfo { const StatsStreamsRoute({List<_i41.PageRouteInfo>? children}) - : super( - StatsStreamsRoute.name, - initialChildren: children, - ); + : super(StatsStreamsRoute.name, initialChildren: children); static const String name = 'StatsStreamsRoute'; @@ -969,14 +846,11 @@ class TrackRoute extends _i41.PageRouteInfo { required String trackId, List<_i41.PageRouteInfo>? children, }) : super( - TrackRoute.name, - args: TrackRouteArgs( - key: key, - trackId: trackId, - ), - rawPathParams: {'id': trackId}, - initialChildren: children, - ); + TrackRoute.name, + args: TrackRouteArgs(key: key, trackId: trackId), + rawPathParams: {'id': trackId}, + initialChildren: children, + ); static const String name = 'TrackRoute'; @@ -985,20 +859,15 @@ class TrackRoute extends _i41.PageRouteInfo { builder: (data) { final pathParams = data.inheritedPathParams; final args = data.argsAs( - orElse: () => TrackRouteArgs(trackId: pathParams.getString('id'))); - return _i35.TrackPage( - key: args.key, - trackId: args.trackId, + orElse: () => TrackRouteArgs(trackId: pathParams.getString('id')), ); + return _i35.TrackPage(key: args.key, trackId: args.trackId); }, ); } class TrackRouteArgs { - const TrackRouteArgs({ - this.key, - required this.trackId, - }); + const TrackRouteArgs({this.key, required this.trackId}); final _i44.Key? key; @@ -1014,10 +883,7 @@ class TrackRouteArgs { /// [_i36.UserAlbumsPage] class UserAlbumsRoute extends _i41.PageRouteInfo { const UserAlbumsRoute({List<_i41.PageRouteInfo>? children}) - : super( - UserAlbumsRoute.name, - initialChildren: children, - ); + : super(UserAlbumsRoute.name, initialChildren: children); static const String name = 'UserAlbumsRoute'; @@ -1033,10 +899,7 @@ class UserAlbumsRoute extends _i41.PageRouteInfo { /// [_i37.UserArtistsPage] class UserArtistsRoute extends _i41.PageRouteInfo { const UserArtistsRoute({List<_i41.PageRouteInfo>? children}) - : super( - UserArtistsRoute.name, - initialChildren: children, - ); + : super(UserArtistsRoute.name, initialChildren: children); static const String name = 'UserArtistsRoute'; @@ -1052,10 +915,7 @@ class UserArtistsRoute extends _i41.PageRouteInfo { /// [_i38.UserDownloadsPage] class UserDownloadsRoute extends _i41.PageRouteInfo { const UserDownloadsRoute({List<_i41.PageRouteInfo>? children}) - : super( - UserDownloadsRoute.name, - initialChildren: children, - ); + : super(UserDownloadsRoute.name, initialChildren: children); static const String name = 'UserDownloadsRoute'; @@ -1071,10 +931,7 @@ class UserDownloadsRoute extends _i41.PageRouteInfo { /// [_i39.UserLocalLibraryPage] class UserLocalLibraryRoute extends _i41.PageRouteInfo { const UserLocalLibraryRoute({List<_i41.PageRouteInfo>? children}) - : super( - UserLocalLibraryRoute.name, - initialChildren: children, - ); + : super(UserLocalLibraryRoute.name, initialChildren: children); static const String name = 'UserLocalLibraryRoute'; @@ -1090,10 +947,7 @@ class UserLocalLibraryRoute extends _i41.PageRouteInfo { /// [_i40.UserPlaylistsPage] class UserPlaylistsRoute extends _i41.PageRouteInfo { const UserPlaylistsRoute({List<_i41.PageRouteInfo>? children}) - : super( - UserPlaylistsRoute.name, - initialChildren: children, - ); + : super(UserPlaylistsRoute.name, initialChildren: children); static const String name = 'UserPlaylistsRoute'; diff --git a/lib/components/track_tile/track_tile.dart b/lib/components/track_tile/track_tile.dart index 955ac90d..ec3f50f3 100644 --- a/lib/components/track_tile/track_tile.dart +++ b/lib/components/track_tile/track_tile.dart @@ -39,6 +39,7 @@ class TrackTile extends HookConsumerWidget { final int? index; final SpotubeTrackObject track; final bool selected; + final bool selectionMode; final ValueChanged? onChanged; final Future Function()? onTap; final VoidCallback? onLongPress; @@ -53,6 +54,7 @@ class TrackTile extends HookConsumerWidget { this.index, required this.track, this.selected = false, + this.selectionMode = false, required this.playlist, this.onTap, this.onLongPress, @@ -81,6 +83,12 @@ class TrackTile extends HookConsumerWidget { [track.album.images], ); + // Treat either explicit selectionMode or presence of onChanged as selection + // context. Some lists enable selection by providing `onChanged` without + // toggling a dedicated `selectionMode` flag (e.g. playlists), so we must + // disable inner navigation in both cases. + final effectiveSelection = selectionMode || onChanged != null; + return LayoutBuilder(builder: (context, constrains) { return Listener( onPointerDown: (event) { @@ -222,7 +230,9 @@ class TrackTile extends HookConsumerWidget { children: [ Expanded( flex: 6, - child: switch (track) { + child: AbsorbPointer( + absorbing: selectionMode, + child: switch (track) { SpotubeLocalTrackObject() => Text( track.name, maxLines: 1, @@ -232,15 +242,17 @@ class TrackTile extends HookConsumerWidget { mainAxisSize: MainAxisSize.min, children: [ Flexible( - child: Button( - style: ButtonVariance.link.copyWith( - padding: (context, states, value) => - EdgeInsets.zero, - ), - onPressed: () { - context - .navigateTo(TrackRoute(trackId: track.id)); - }, + child: Button( + style: ButtonVariance.link.copyWith( + padding: (context, states, value) => + EdgeInsets.zero, + ), + onPressed: effectiveSelection + ? null + : () { + context + .navigateTo(TrackRoute(trackId: track.id)); + }, child: Text( track.name, maxLines: 1, @@ -251,6 +263,7 @@ class TrackTile extends HookConsumerWidget { ], ), }, + ), ), if (constrains.mdAndUp) ...[ const SizedBox(width: 8), @@ -281,20 +294,25 @@ class TrackTile extends HookConsumerWidget { ), subtitle: Align( alignment: Alignment.centerLeft, - child: track is SpotubeLocalTrackObject + child: track is SpotubeLocalTrackObject ? Text( track.artists.asString(), ) : ClipRect( child: ConstrainedBox( constraints: const BoxConstraints(maxHeight: 40), - child: ArtistLink( - artists: track.artists, - onOverflowArtistClick: () { - context.navigateTo( - TrackRoute(trackId: track.id), - ); - }, + child: AbsorbPointer( + absorbing: effectiveSelection, + child: ArtistLink( + artists: track.artists, + onOverflowArtistClick: effectiveSelection + ? () {} + : () { + context.navigateTo( + TrackRoute(trackId: track.id), + ); + }, + ), ), ), ), diff --git a/lib/models/connect/connect.freezed.dart b/lib/models/connect/connect.freezed.dart index 9f9b558b..157d0911 100644 --- a/lib/models/connect/connect.freezed.dart +++ b/lib/models/connect/connect.freezed.dart @@ -112,8 +112,13 @@ mixin _$WebSocketLoadEventData { required TResult orElse(), }) => throw _privateConstructorUsedError; + + /// Serializes this WebSocketLoadEventData to a JSON map. Map toJson() => throw _privateConstructorUsedError; - @JsonKey(ignore: true) + + /// Create a copy of WebSocketLoadEventData + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) $WebSocketLoadEventDataCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -142,6 +147,8 @@ class _$WebSocketLoadEventDataCopyWithImpl<$Res, // ignore: unused_field final $Res Function($Val) _then; + /// Create a copy of WebSocketLoadEventData + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -190,6 +197,8 @@ class __$$WebSocketLoadEventDataPlaylistImplCopyWithImpl<$Res> $Res Function(_$WebSocketLoadEventDataPlaylistImpl) _then) : super(_value, _then); + /// Create a copy of WebSocketLoadEventData + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -213,6 +222,8 @@ class __$$WebSocketLoadEventDataPlaylistImplCopyWithImpl<$Res> )); } + /// Create a copy of WebSocketLoadEventData + /// with the given fields replaced by the non-null parameter values. @override @pragma('vm:prefer-inline') $SpotubeSimplePlaylistObjectCopyWith<$Res>? get collection { @@ -281,12 +292,14 @@ class _$WebSocketLoadEventDataPlaylistImpl other.initialIndex == initialIndex)); } - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) @override int get hashCode => Object.hash(runtimeType, const DeepCollectionEquality().hash(_tracks), collection, initialIndex); - @JsonKey(ignore: true) + /// Create a copy of WebSocketLoadEventData + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$WebSocketLoadEventDataPlaylistImplCopyWith< @@ -420,8 +433,11 @@ abstract class WebSocketLoadEventDataPlaylist extends WebSocketLoadEventData { SpotubeSimplePlaylistObject? get collection; @override int? get initialIndex; + + /// Create a copy of WebSocketLoadEventData + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$WebSocketLoadEventDataPlaylistImplCopyWith< _$WebSocketLoadEventDataPlaylistImpl> get copyWith => throw _privateConstructorUsedError; @@ -456,6 +472,8 @@ class __$$WebSocketLoadEventDataAlbumImplCopyWithImpl<$Res> $Res Function(_$WebSocketLoadEventDataAlbumImpl) _then) : super(_value, _then); + /// Create a copy of WebSocketLoadEventData + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -479,6 +497,8 @@ class __$$WebSocketLoadEventDataAlbumImplCopyWithImpl<$Res> )); } + /// Create a copy of WebSocketLoadEventData + /// with the given fields replaced by the non-null parameter values. @override @pragma('vm:prefer-inline') $SpotubeSimpleAlbumObjectCopyWith<$Res>? get collection { @@ -545,12 +565,14 @@ class _$WebSocketLoadEventDataAlbumImpl extends WebSocketLoadEventDataAlbum { other.initialIndex == initialIndex)); } - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) @override int get hashCode => Object.hash(runtimeType, const DeepCollectionEquality().hash(_tracks), collection, initialIndex); - @JsonKey(ignore: true) + /// Create a copy of WebSocketLoadEventData + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$WebSocketLoadEventDataAlbumImplCopyWith<_$WebSocketLoadEventDataAlbumImpl> @@ -683,8 +705,11 @@ abstract class WebSocketLoadEventDataAlbum extends WebSocketLoadEventData { SpotubeSimpleAlbumObject? get collection; @override int? get initialIndex; + + /// Create a copy of WebSocketLoadEventData + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$WebSocketLoadEventDataAlbumImplCopyWith<_$WebSocketLoadEventDataAlbumImpl> get copyWith => throw _privateConstructorUsedError; } diff --git a/lib/models/database/database.g.dart b/lib/models/database/database.g.dart index ba24c037..8c4def7c 100644 --- a/lib/models/database/database.g.dart +++ b/lib/models/database/database.g.dart @@ -18,15 +18,12 @@ class $AuthenticationTableTable extends AuthenticationTable requiredDuringInsert: false, defaultConstraints: GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); - static const VerificationMeta _cookieMeta = const VerificationMeta('cookie'); @override late final GeneratedColumnWithTypeConverter cookie = GeneratedColumn('cookie', aliasedName, false, type: DriftSqlType.string, requiredDuringInsert: true) .withConverter( $AuthenticationTableTable.$convertercookie); - static const VerificationMeta _accessTokenMeta = - const VerificationMeta('accessToken'); @override late final GeneratedColumnWithTypeConverter accessToken = GeneratedColumn('access_token', aliasedName, false, @@ -55,8 +52,6 @@ class $AuthenticationTableTable extends AuthenticationTable if (data.containsKey('id')) { context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta)); } - context.handle(_cookieMeta, const VerificationResult.success()); - context.handle(_accessTokenMeta, const VerificationResult.success()); if (data.containsKey('expiration')) { context.handle( _expirationMeta, @@ -301,8 +296,6 @@ class $BlacklistTableTable extends BlacklistTable late final GeneratedColumn name = GeneratedColumn( 'name', aliasedName, false, type: DriftSqlType.string, requiredDuringInsert: true); - static const VerificationMeta _elementTypeMeta = - const VerificationMeta('elementType'); @override late final GeneratedColumnWithTypeConverter elementType = GeneratedColumn('element_type', aliasedName, false, @@ -336,7 +329,6 @@ class $BlacklistTableTable extends BlacklistTable } else if (isInserting) { context.missing(_nameMeta); } - context.handle(_elementTypeMeta, const VerificationResult.success()); if (data.containsKey('element_id')) { context.handle(_elementIdMeta, elementId.isAcceptableOrUnknown(data['element_id']!, _elementIdMeta)); @@ -566,8 +558,6 @@ class $PreferencesTableTable extends PreferencesTable requiredDuringInsert: false, defaultConstraints: GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); - static const VerificationMeta _audioQualityMeta = - const VerificationMeta('audioQuality'); @override late final GeneratedColumnWithTypeConverter audioQuality = GeneratedColumn( @@ -647,8 +637,6 @@ class $PreferencesTableTable extends PreferencesTable defaultConstraints: GeneratedColumn.constraintIsAlways( 'CHECK ("skip_non_music" IN (0, 1))'), defaultValue: const Constant(false)); - static const VerificationMeta _closeBehaviorMeta = - const VerificationMeta('closeBehavior'); @override late final GeneratedColumnWithTypeConverter closeBehavior = GeneratedColumn( @@ -658,8 +646,6 @@ class $PreferencesTableTable extends PreferencesTable defaultValue: Constant(CloseBehavior.close.name)) .withConverter( $PreferencesTableTable.$convertercloseBehavior); - static const VerificationMeta _accentColorSchemeMeta = - const VerificationMeta('accentColorScheme'); @override late final GeneratedColumnWithTypeConverter accentColorScheme = GeneratedColumn( @@ -669,8 +655,6 @@ class $PreferencesTableTable extends PreferencesTable defaultValue: const Constant("Slate:0xff64748b")) .withConverter( $PreferencesTableTable.$converteraccentColorScheme); - static const VerificationMeta _layoutModeMeta = - const VerificationMeta('layoutMode'); @override late final GeneratedColumnWithTypeConverter layoutMode = GeneratedColumn('layout_mode', aliasedName, false, @@ -679,7 +663,6 @@ class $PreferencesTableTable extends PreferencesTable defaultValue: Constant(LayoutMode.adaptive.name)) .withConverter( $PreferencesTableTable.$converterlayoutMode); - static const VerificationMeta _localeMeta = const VerificationMeta('locale'); @override late final GeneratedColumnWithTypeConverter locale = GeneratedColumn('locale', aliasedName, false, @@ -688,7 +671,6 @@ class $PreferencesTableTable extends PreferencesTable defaultValue: const Constant( '{"languageCode":"system","countryCode":"system"}')) .withConverter($PreferencesTableTable.$converterlocale); - static const VerificationMeta _marketMeta = const VerificationMeta('market'); @override late final GeneratedColumnWithTypeConverter market = GeneratedColumn('market', aliasedName, false, @@ -696,8 +678,6 @@ class $PreferencesTableTable extends PreferencesTable requiredDuringInsert: false, defaultValue: Constant(Market.US.name)) .withConverter($PreferencesTableTable.$convertermarket); - static const VerificationMeta _searchModeMeta = - const VerificationMeta('searchMode'); @override late final GeneratedColumnWithTypeConverter searchMode = GeneratedColumn('search_mode', aliasedName, false, @@ -714,8 +694,6 @@ class $PreferencesTableTable extends PreferencesTable type: DriftSqlType.string, requiredDuringInsert: false, defaultValue: const Constant("")); - static const VerificationMeta _localLibraryLocationMeta = - const VerificationMeta('localLibraryLocation'); @override late final GeneratedColumnWithTypeConverter, String> localLibraryLocation = GeneratedColumn( @@ -741,8 +719,6 @@ class $PreferencesTableTable extends PreferencesTable type: DriftSqlType.string, requiredDuringInsert: false, defaultValue: const Constant("https://inv.nadeko.net")); - static const VerificationMeta _themeModeMeta = - const VerificationMeta('themeMode'); @override late final GeneratedColumnWithTypeConverter themeMode = GeneratedColumn('theme_mode', aliasedName, false, @@ -750,8 +726,6 @@ class $PreferencesTableTable extends PreferencesTable requiredDuringInsert: false, defaultValue: Constant(ThemeMode.system.name)) .withConverter($PreferencesTableTable.$converterthemeMode); - static const VerificationMeta _audioSourceMeta = - const VerificationMeta('audioSource'); @override late final GeneratedColumnWithTypeConverter audioSource = GeneratedColumn('audio_source', aliasedName, false, @@ -760,8 +734,6 @@ class $PreferencesTableTable extends PreferencesTable defaultValue: Constant(AudioSource.youtube.name)) .withConverter( $PreferencesTableTable.$converteraudioSource); - static const VerificationMeta _youtubeClientEngineMeta = - const VerificationMeta('youtubeClientEngine'); @override late final GeneratedColumnWithTypeConverter youtubeClientEngine = GeneratedColumn( @@ -771,8 +743,6 @@ class $PreferencesTableTable extends PreferencesTable defaultValue: Constant(YoutubeClientEngine.youtubeExplode.name)) .withConverter( $PreferencesTableTable.$converteryoutubeClientEngine); - static const VerificationMeta _streamMusicCodecMeta = - const VerificationMeta('streamMusicCodec'); @override late final GeneratedColumnWithTypeConverter streamMusicCodec = GeneratedColumn( @@ -782,8 +752,6 @@ class $PreferencesTableTable extends PreferencesTable defaultValue: Constant(SourceCodecs.weba.name)) .withConverter( $PreferencesTableTable.$converterstreamMusicCodec); - static const VerificationMeta _downloadMusicCodecMeta = - const VerificationMeta('downloadMusicCodec'); @override late final GeneratedColumnWithTypeConverter downloadMusicCodec = GeneratedColumn( @@ -887,7 +855,6 @@ class $PreferencesTableTable extends PreferencesTable if (data.containsKey('id')) { context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta)); } - context.handle(_audioQualityMeta, const VerificationResult.success()); if (data.containsKey('album_color_sync')) { context.handle( _albumColorSyncMeta, @@ -930,20 +897,12 @@ class $PreferencesTableTable extends PreferencesTable skipNonMusic.isAcceptableOrUnknown( data['skip_non_music']!, _skipNonMusicMeta)); } - context.handle(_closeBehaviorMeta, const VerificationResult.success()); - context.handle(_accentColorSchemeMeta, const VerificationResult.success()); - context.handle(_layoutModeMeta, const VerificationResult.success()); - context.handle(_localeMeta, const VerificationResult.success()); - context.handle(_marketMeta, const VerificationResult.success()); - context.handle(_searchModeMeta, const VerificationResult.success()); if (data.containsKey('download_location')) { context.handle( _downloadLocationMeta, downloadLocation.isAcceptableOrUnknown( data['download_location']!, _downloadLocationMeta)); } - context.handle( - _localLibraryLocationMeta, const VerificationResult.success()); if (data.containsKey('piped_instance')) { context.handle( _pipedInstanceMeta, @@ -956,12 +915,6 @@ class $PreferencesTableTable extends PreferencesTable invidiousInstance.isAcceptableOrUnknown( data['invidious_instance']!, _invidiousInstanceMeta)); } - context.handle(_themeModeMeta, const VerificationResult.success()); - context.handle(_audioSourceMeta, const VerificationResult.success()); - context.handle( - _youtubeClientEngineMeta, const VerificationResult.success()); - context.handle(_streamMusicCodecMeta, const VerificationResult.success()); - context.handle(_downloadMusicCodecMeta, const VerificationResult.success()); if (data.containsKey('discord_presence')) { context.handle( _discordPresenceMeta, @@ -2030,8 +1983,6 @@ class $ScrobblerTableTable extends ScrobblerTable late final GeneratedColumn username = GeneratedColumn( 'username', aliasedName, false, type: DriftSqlType.string, requiredDuringInsert: true); - static const VerificationMeta _passwordHashMeta = - const VerificationMeta('passwordHash'); @override late final GeneratedColumnWithTypeConverter passwordHash = GeneratedColumn( @@ -2064,7 +2015,6 @@ class $ScrobblerTableTable extends ScrobblerTable } else if (isInserting) { context.missing(_usernameMeta); } - context.handle(_passwordHashMeta, const VerificationResult.success()); return context; } @@ -2595,8 +2545,6 @@ class $SourceMatchTableTable extends SourceMatchTable late final GeneratedColumn sourceId = GeneratedColumn( 'source_id', aliasedName, false, type: DriftSqlType.string, requiredDuringInsert: true); - static const VerificationMeta _sourceTypeMeta = - const VerificationMeta('sourceType'); @override late final GeneratedColumnWithTypeConverter sourceType = GeneratedColumn('source_type', aliasedName, false, @@ -2642,7 +2590,6 @@ class $SourceMatchTableTable extends SourceMatchTable } else if (isInserting) { context.missing(_sourceIdMeta); } - context.handle(_sourceTypeMeta, const VerificationResult.success()); if (data.containsKey('created_at')) { context.handle(_createdAtMeta, createdAt.isAcceptableOrUnknown(data['created_at']!, _createdAtMeta)); @@ -2901,8 +2848,6 @@ class $AudioPlayerStateTableTable extends AudioPlayerStateTable requiredDuringInsert: true, defaultConstraints: GeneratedColumn.constraintIsAlways('CHECK ("playing" IN (0, 1))')); - static const VerificationMeta _loopModeMeta = - const VerificationMeta('loopMode'); @override late final GeneratedColumnWithTypeConverter loopMode = GeneratedColumn('loop_mode', aliasedName, false, @@ -2918,15 +2863,12 @@ class $AudioPlayerStateTableTable extends AudioPlayerStateTable requiredDuringInsert: true, defaultConstraints: GeneratedColumn.constraintIsAlways('CHECK ("shuffled" IN (0, 1))')); - static const VerificationMeta _collectionsMeta = - const VerificationMeta('collections'); @override late final GeneratedColumnWithTypeConverter, String> collections = GeneratedColumn('collections', aliasedName, false, type: DriftSqlType.string, requiredDuringInsert: true) .withConverter>( $AudioPlayerStateTableTable.$convertercollections); - static const VerificationMeta _tracksMeta = const VerificationMeta('tracks'); @override late final GeneratedColumnWithTypeConverter, String> tracks = GeneratedColumn('tracks', aliasedName, false, @@ -2966,15 +2908,12 @@ class $AudioPlayerStateTableTable extends AudioPlayerStateTable } else if (isInserting) { context.missing(_playingMeta); } - context.handle(_loopModeMeta, const VerificationResult.success()); if (data.containsKey('shuffled')) { context.handle(_shuffledMeta, shuffled.isAcceptableOrUnknown(data['shuffled']!, _shuffledMeta)); } else if (isInserting) { context.missing(_shuffledMeta); } - context.handle(_collectionsMeta, const VerificationResult.success()); - context.handle(_tracksMeta, const VerificationResult.success()); if (data.containsKey('current_index')) { context.handle( _currentIndexMeta, @@ -3305,7 +3244,6 @@ class $HistoryTableTable extends HistoryTable type: DriftSqlType.dateTime, requiredDuringInsert: false, defaultValue: currentDateAndTime); - static const VerificationMeta _typeMeta = const VerificationMeta('type'); @override late final GeneratedColumnWithTypeConverter type = GeneratedColumn('type', aliasedName, false, @@ -3316,7 +3254,6 @@ class $HistoryTableTable extends HistoryTable late final GeneratedColumn itemId = GeneratedColumn( 'item_id', aliasedName, false, type: DriftSqlType.string, requiredDuringInsert: true); - static const VerificationMeta _dataMeta = const VerificationMeta('data'); @override late final GeneratedColumnWithTypeConverter, String> data = GeneratedColumn('data', aliasedName, false, @@ -3342,14 +3279,12 @@ class $HistoryTableTable extends HistoryTable context.handle(_createdAtMeta, createdAt.isAcceptableOrUnknown(data['created_at']!, _createdAtMeta)); } - context.handle(_typeMeta, const VerificationResult.success()); if (data.containsKey('item_id')) { context.handle(_itemIdMeta, itemId.isAcceptableOrUnknown(data['item_id']!, _itemIdMeta)); } else if (isInserting) { context.missing(_itemIdMeta); } - context.handle(_dataMeta, const VerificationResult.success()); return context; } @@ -3608,7 +3543,6 @@ class $LyricsTableTable extends LyricsTable late final GeneratedColumn trackId = GeneratedColumn( 'track_id', aliasedName, false, type: DriftSqlType.string, requiredDuringInsert: true); - static const VerificationMeta _dataMeta = const VerificationMeta('data'); @override late final GeneratedColumnWithTypeConverter data = GeneratedColumn('data', aliasedName, false, @@ -3635,7 +3569,6 @@ class $LyricsTableTable extends LyricsTable } else if (isInserting) { context.missing(_trackIdMeta); } - context.handle(_dataMeta, const VerificationResult.success()); return context; } @@ -3853,15 +3786,12 @@ class $MetadataPluginsTableTable extends MetadataPluginsTable late final GeneratedColumn entryPoint = GeneratedColumn( 'entry_point', aliasedName, false, type: DriftSqlType.string, requiredDuringInsert: true); - static const VerificationMeta _apisMeta = const VerificationMeta('apis'); @override late final GeneratedColumnWithTypeConverter, String> apis = GeneratedColumn('apis', aliasedName, false, type: DriftSqlType.string, requiredDuringInsert: true) .withConverter>( $MetadataPluginsTableTable.$converterapis); - static const VerificationMeta _abilitiesMeta = - const VerificationMeta('abilities'); @override late final GeneratedColumnWithTypeConverter, String> abilities = GeneratedColumn('abilities', aliasedName, false, @@ -3954,8 +3884,6 @@ class $MetadataPluginsTableTable extends MetadataPluginsTable } else if (isInserting) { context.missing(_entryPointMeta); } - context.handle(_apisMeta, const VerificationResult.success()); - context.handle(_abilitiesMeta, const VerificationResult.success()); if (data.containsKey('selected')) { context.handle(_selectedMeta, selected.isAcceptableOrUnknown(data['selected']!, _selectedMeta)); diff --git a/lib/models/metadata/metadata.freezed.dart b/lib/models/metadata/metadata.freezed.dart index 54fd452a..bb4cf3f8 100644 --- a/lib/models/metadata/metadata.freezed.dart +++ b/lib/models/metadata/metadata.freezed.dart @@ -33,8 +33,12 @@ mixin _$SpotubeFullAlbumObject { String? get recordLabel => throw _privateConstructorUsedError; List? get genres => throw _privateConstructorUsedError; + /// Serializes this SpotubeFullAlbumObject to a JSON map. Map toJson() => throw _privateConstructorUsedError; - @JsonKey(ignore: true) + + /// Create a copy of SpotubeFullAlbumObject + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) $SpotubeFullAlbumObjectCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -69,6 +73,8 @@ class _$SpotubeFullAlbumObjectCopyWithImpl<$Res, // ignore: unused_field final $Res Function($Val) _then; + /// Create a copy of SpotubeFullAlbumObject + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -160,6 +166,8 @@ class __$$SpotubeFullAlbumObjectImplCopyWithImpl<$Res> $Res Function(_$SpotubeFullAlbumObjectImpl) _then) : super(_value, _then); + /// Create a copy of SpotubeFullAlbumObject + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -308,7 +316,7 @@ class _$SpotubeFullAlbumObjectImpl implements _SpotubeFullAlbumObject { const DeepCollectionEquality().equals(other._genres, _genres)); } - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) @override int get hashCode => Object.hash( runtimeType, @@ -323,7 +331,9 @@ class _$SpotubeFullAlbumObjectImpl implements _SpotubeFullAlbumObject { recordLabel, const DeepCollectionEquality().hash(_genres)); - @JsonKey(ignore: true) + /// Create a copy of SpotubeFullAlbumObject + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$SpotubeFullAlbumObjectImplCopyWith<_$SpotubeFullAlbumObjectImpl> @@ -374,8 +384,11 @@ abstract class _SpotubeFullAlbumObject implements SpotubeFullAlbumObject { String? get recordLabel; @override List? get genres; + + /// Create a copy of SpotubeFullAlbumObject + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$SpotubeFullAlbumObjectImplCopyWith<_$SpotubeFullAlbumObjectImpl> get copyWith => throw _privateConstructorUsedError; } @@ -396,8 +409,12 @@ mixin _$SpotubeSimpleAlbumObject { SpotubeAlbumType get albumType => throw _privateConstructorUsedError; String? get releaseDate => throw _privateConstructorUsedError; + /// Serializes this SpotubeSimpleAlbumObject to a JSON map. Map toJson() => throw _privateConstructorUsedError; - @JsonKey(ignore: true) + + /// Create a copy of SpotubeSimpleAlbumObject + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) $SpotubeSimpleAlbumObjectCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -429,6 +446,8 @@ class _$SpotubeSimpleAlbumObjectCopyWithImpl<$Res, // ignore: unused_field final $Res Function($Val) _then; + /// Create a copy of SpotubeSimpleAlbumObject + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -502,6 +521,8 @@ class __$$SpotubeSimpleAlbumObjectImplCopyWithImpl<$Res> $Res Function(_$SpotubeSimpleAlbumObjectImpl) _then) : super(_value, _then); + /// Create a copy of SpotubeSimpleAlbumObject + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -613,7 +634,7 @@ class _$SpotubeSimpleAlbumObjectImpl implements _SpotubeSimpleAlbumObject { other.releaseDate == releaseDate)); } - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) @override int get hashCode => Object.hash( runtimeType, @@ -625,7 +646,9 @@ class _$SpotubeSimpleAlbumObjectImpl implements _SpotubeSimpleAlbumObject { albumType, releaseDate); - @JsonKey(ignore: true) + /// Create a copy of SpotubeSimpleAlbumObject + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$SpotubeSimpleAlbumObjectImplCopyWith<_$SpotubeSimpleAlbumObjectImpl> @@ -667,8 +690,11 @@ abstract class _SpotubeSimpleAlbumObject implements SpotubeSimpleAlbumObject { SpotubeAlbumType get albumType; @override String? get releaseDate; + + /// Create a copy of SpotubeSimpleAlbumObject + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$SpotubeSimpleAlbumObjectImplCopyWith<_$SpotubeSimpleAlbumObjectImpl> get copyWith => throw _privateConstructorUsedError; } @@ -687,8 +713,12 @@ mixin _$SpotubeFullArtistObject { List? get genres => throw _privateConstructorUsedError; int? get followers => throw _privateConstructorUsedError; + /// Serializes this SpotubeFullArtistObject to a JSON map. Map toJson() => throw _privateConstructorUsedError; - @JsonKey(ignore: true) + + /// Create a copy of SpotubeFullArtistObject + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) $SpotubeFullArtistObjectCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -719,6 +749,8 @@ class _$SpotubeFullArtistObjectCopyWithImpl<$Res, // ignore: unused_field final $Res Function($Val) _then; + /// Create a copy of SpotubeFullArtistObject + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -786,6 +818,8 @@ class __$$SpotubeFullArtistObjectImplCopyWithImpl<$Res> $Res Function(_$SpotubeFullArtistObjectImpl) _then) : super(_value, _then); + /// Create a copy of SpotubeFullArtistObject + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -889,7 +923,7 @@ class _$SpotubeFullArtistObjectImpl implements _SpotubeFullArtistObject { other.followers == followers)); } - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) @override int get hashCode => Object.hash( runtimeType, @@ -900,7 +934,9 @@ class _$SpotubeFullArtistObjectImpl implements _SpotubeFullArtistObject { const DeepCollectionEquality().hash(_genres), followers); - @JsonKey(ignore: true) + /// Create a copy of SpotubeFullArtistObject + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$SpotubeFullArtistObjectImplCopyWith<_$SpotubeFullArtistObjectImpl> @@ -939,8 +975,11 @@ abstract class _SpotubeFullArtistObject implements SpotubeFullArtistObject { List? get genres; @override int? get followers; + + /// Create a copy of SpotubeFullArtistObject + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$SpotubeFullArtistObjectImplCopyWith<_$SpotubeFullArtistObjectImpl> get copyWith => throw _privateConstructorUsedError; } @@ -957,8 +996,12 @@ mixin _$SpotubeSimpleArtistObject { String get externalUri => throw _privateConstructorUsedError; List? get images => throw _privateConstructorUsedError; + /// Serializes this SpotubeSimpleArtistObject to a JSON map. Map toJson() => throw _privateConstructorUsedError; - @JsonKey(ignore: true) + + /// Create a copy of SpotubeSimpleArtistObject + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) $SpotubeSimpleArtistObjectCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -987,6 +1030,8 @@ class _$SpotubeSimpleArtistObjectCopyWithImpl<$Res, // ignore: unused_field final $Res Function($Val) _then; + /// Create a copy of SpotubeSimpleArtistObject + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -1042,6 +1087,8 @@ class __$$SpotubeSimpleArtistObjectImplCopyWithImpl<$Res> $Res Function(_$SpotubeSimpleArtistObjectImpl) _then) : super(_value, _then); + /// Create a copy of SpotubeSimpleArtistObject + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -1117,12 +1164,14 @@ class _$SpotubeSimpleArtistObjectImpl implements _SpotubeSimpleArtistObject { const DeepCollectionEquality().equals(other._images, _images)); } - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) @override int get hashCode => Object.hash(runtimeType, id, name, externalUri, const DeepCollectionEquality().hash(_images)); - @JsonKey(ignore: true) + /// Create a copy of SpotubeSimpleArtistObject + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$SpotubeSimpleArtistObjectImplCopyWith<_$SpotubeSimpleArtistObjectImpl> @@ -1156,8 +1205,11 @@ abstract class _SpotubeSimpleArtistObject implements SpotubeSimpleArtistObject { String get externalUri; @override List? get images; + + /// Create a copy of SpotubeSimpleArtistObject + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$SpotubeSimpleArtistObjectImplCopyWith<_$SpotubeSimpleArtistObjectImpl> get copyWith => throw _privateConstructorUsedError; } @@ -1175,9 +1227,13 @@ mixin _$SpotubeBrowseSectionObject { bool get browseMore => throw _privateConstructorUsedError; List get items => throw _privateConstructorUsedError; + /// Serializes this SpotubeBrowseSectionObject to a JSON map. Map toJson(Object? Function(T) toJsonT) => throw _privateConstructorUsedError; - @JsonKey(ignore: true) + + /// Create a copy of SpotubeBrowseSectionObject + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) $SpotubeBrowseSectionObjectCopyWith> get copyWith => throw _privateConstructorUsedError; } @@ -1209,6 +1265,8 @@ class _$SpotubeBrowseSectionObjectCopyWithImpl $Res Function(_$SpotubeBrowseSectionObjectImpl) _then) : super(_value, _then); + /// Create a copy of SpotubeBrowseSectionObject + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -1355,12 +1415,14 @@ class _$SpotubeBrowseSectionObjectImpl const DeepCollectionEquality().equals(other._items, _items)); } - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) @override int get hashCode => Object.hash(runtimeType, id, title, externalUri, browseMore, const DeepCollectionEquality().hash(_items)); - @JsonKey(ignore: true) + /// Create a copy of SpotubeBrowseSectionObject + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$SpotubeBrowseSectionObjectImplCopyWith bool get browseMore; @override List get items; + + /// Create a copy of SpotubeBrowseSectionObject + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$SpotubeBrowseSectionObjectImplCopyWith> get copyWith => throw _privateConstructorUsedError; @@ -1486,8 +1551,13 @@ mixin _$MetadataFormFieldObject { required TResult orElse(), }) => throw _privateConstructorUsedError; + + /// Serializes this MetadataFormFieldObject to a JSON map. Map toJson() => throw _privateConstructorUsedError; - @JsonKey(ignore: true) + + /// Create a copy of MetadataFormFieldObject + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) $MetadataFormFieldObjectCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -1512,6 +1582,8 @@ class _$MetadataFormFieldObjectCopyWithImpl<$Res, // ignore: unused_field final $Res Function($Val) _then; + /// Create a copy of MetadataFormFieldObject + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -1555,6 +1627,8 @@ class __$$MetadataFormFieldInputObjectImplCopyWithImpl<$Res> $Res Function(_$MetadataFormFieldInputObjectImpl) _then) : super(_value, _then); + /// Create a copy of MetadataFormFieldObject + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -1655,12 +1729,14 @@ class _$MetadataFormFieldInputObjectImpl (identical(other.regex, regex) || other.regex == regex)); } - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) @override int get hashCode => Object.hash(runtimeType, objectType, id, variant, placeholder, defaultValue, required, regex); - @JsonKey(ignore: true) + /// Create a copy of MetadataFormFieldObject + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$MetadataFormFieldInputObjectImplCopyWith< @@ -1786,8 +1862,11 @@ abstract class MetadataFormFieldInputObject implements MetadataFormFieldObject { String? get defaultValue; bool? get required; String? get regex; + + /// Create a copy of MetadataFormFieldObject + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$MetadataFormFieldInputObjectImplCopyWith< _$MetadataFormFieldInputObjectImpl> get copyWith => throw _privateConstructorUsedError; @@ -1815,6 +1894,8 @@ class __$$MetadataFormFieldTextObjectImplCopyWithImpl<$Res> $Res Function(_$MetadataFormFieldTextObjectImpl) _then) : super(_value, _then); + /// Create a copy of MetadataFormFieldObject + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -1864,11 +1945,13 @@ class _$MetadataFormFieldTextObjectImpl implements MetadataFormFieldTextObject { (identical(other.text, text) || other.text == text)); } - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) @override int get hashCode => Object.hash(runtimeType, objectType, text); - @JsonKey(ignore: true) + /// Create a copy of MetadataFormFieldObject + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$MetadataFormFieldTextObjectImplCopyWith<_$MetadataFormFieldTextObjectImpl> @@ -1980,8 +2063,11 @@ abstract class MetadataFormFieldTextObject implements MetadataFormFieldObject { @override String get objectType; String get text; + + /// Create a copy of MetadataFormFieldObject + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$MetadataFormFieldTextObjectImplCopyWith<_$MetadataFormFieldTextObjectImpl> get copyWith => throw _privateConstructorUsedError; } @@ -1996,8 +2082,12 @@ mixin _$SpotubeImageObject { int? get width => throw _privateConstructorUsedError; int? get height => throw _privateConstructorUsedError; + /// Serializes this SpotubeImageObject to a JSON map. Map toJson() => throw _privateConstructorUsedError; - @JsonKey(ignore: true) + + /// Create a copy of SpotubeImageObject + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) $SpotubeImageObjectCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -2021,6 +2111,8 @@ class _$SpotubeImageObjectCopyWithImpl<$Res, $Val extends SpotubeImageObject> // ignore: unused_field final $Res Function($Val) _then; + /// Create a copy of SpotubeImageObject + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -2064,6 +2156,8 @@ class __$$SpotubeImageObjectImplCopyWithImpl<$Res> $Res Function(_$SpotubeImageObjectImpl) _then) : super(_value, _then); + /// Create a copy of SpotubeImageObject + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -2118,11 +2212,13 @@ class _$SpotubeImageObjectImpl implements _SpotubeImageObject { (identical(other.height, height) || other.height == height)); } - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) @override int get hashCode => Object.hash(runtimeType, url, width, height); - @JsonKey(ignore: true) + /// Create a copy of SpotubeImageObject + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$SpotubeImageObjectImplCopyWith<_$SpotubeImageObjectImpl> get copyWith => @@ -2152,8 +2248,11 @@ abstract class _SpotubeImageObject implements SpotubeImageObject { int? get width; @override int? get height; + + /// Create a copy of SpotubeImageObject + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$SpotubeImageObjectImplCopyWith<_$SpotubeImageObjectImpl> get copyWith => throw _privateConstructorUsedError; } @@ -2171,9 +2270,13 @@ mixin _$SpotubePaginationResponseObject { bool get hasMore => throw _privateConstructorUsedError; List get items => throw _privateConstructorUsedError; + /// Serializes this SpotubePaginationResponseObject to a JSON map. Map toJson(Object? Function(T) toJsonT) => throw _privateConstructorUsedError; - @JsonKey(ignore: true) + + /// Create a copy of SpotubePaginationResponseObject + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) $SpotubePaginationResponseObjectCopyWith> get copyWith => throw _privateConstructorUsedError; @@ -2202,6 +2305,8 @@ class _$SpotubePaginationResponseObjectCopyWithImpl $Res Function(_$SpotubePaginationResponseObjectImpl) _then) : super(_value, _then); + /// Create a copy of SpotubePaginationResponseObject + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -2343,12 +2450,14 @@ class _$SpotubePaginationResponseObjectImpl const DeepCollectionEquality().equals(other._items, _items)); } - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) @override int get hashCode => Object.hash(runtimeType, limit, nextOffset, total, hasMore, const DeepCollectionEquality().hash(_items)); - @JsonKey(ignore: true) + /// Create a copy of SpotubePaginationResponseObject + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$SpotubePaginationResponseObjectImplCopyWith bool get hasMore; @override List get items; + + /// Create a copy of SpotubePaginationResponseObject + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$SpotubePaginationResponseObjectImplCopyWith> get copyWith => throw _privateConstructorUsedError; @@ -2410,8 +2522,12 @@ mixin _$SpotubeFullPlaylistObject { bool get collaborative => throw _privateConstructorUsedError; bool get public => throw _privateConstructorUsedError; + /// Serializes this SpotubeFullPlaylistObject to a JSON map. Map toJson() => throw _privateConstructorUsedError; - @JsonKey(ignore: true) + + /// Create a copy of SpotubeFullPlaylistObject + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) $SpotubeFullPlaylistObjectCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -2447,6 +2563,8 @@ class _$SpotubeFullPlaylistObjectCopyWithImpl<$Res, // ignore: unused_field final $Res Function($Val) _then; + /// Create a copy of SpotubeFullPlaylistObject + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -2500,6 +2618,8 @@ class _$SpotubeFullPlaylistObjectCopyWithImpl<$Res, ) as $Val); } + /// Create a copy of SpotubeFullPlaylistObject + /// with the given fields replaced by the non-null parameter values. @override @pragma('vm:prefer-inline') $SpotubeUserObjectCopyWith<$Res> get owner { @@ -2543,6 +2663,8 @@ class __$$SpotubeFullPlaylistObjectImplCopyWithImpl<$Res> $Res Function(_$SpotubeFullPlaylistObjectImpl) _then) : super(_value, _then); + /// Create a copy of SpotubeFullPlaylistObject + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -2676,7 +2798,7 @@ class _$SpotubeFullPlaylistObjectImpl implements _SpotubeFullPlaylistObject { (identical(other.public, public) || other.public == public)); } - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) @override int get hashCode => Object.hash( runtimeType, @@ -2690,7 +2812,9 @@ class _$SpotubeFullPlaylistObjectImpl implements _SpotubeFullPlaylistObject { collaborative, public); - @JsonKey(ignore: true) + /// Create a copy of SpotubeFullPlaylistObject + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$SpotubeFullPlaylistObjectImplCopyWith<_$SpotubeFullPlaylistObjectImpl> @@ -2738,8 +2862,11 @@ abstract class _SpotubeFullPlaylistObject implements SpotubeFullPlaylistObject { bool get collaborative; @override bool get public; + + /// Create a copy of SpotubeFullPlaylistObject + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$SpotubeFullPlaylistObjectImplCopyWith<_$SpotubeFullPlaylistObjectImpl> get copyWith => throw _privateConstructorUsedError; } @@ -2758,8 +2885,12 @@ mixin _$SpotubeSimplePlaylistObject { SpotubeUserObject get owner => throw _privateConstructorUsedError; List get images => throw _privateConstructorUsedError; + /// Serializes this SpotubeSimplePlaylistObject to a JSON map. Map toJson() => throw _privateConstructorUsedError; - @JsonKey(ignore: true) + + /// Create a copy of SpotubeSimplePlaylistObject + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) $SpotubeSimplePlaylistObjectCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -2794,6 +2925,8 @@ class _$SpotubeSimplePlaylistObjectCopyWithImpl<$Res, // ignore: unused_field final $Res Function($Val) _then; + /// Create a copy of SpotubeSimplePlaylistObject + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -2832,6 +2965,8 @@ class _$SpotubeSimplePlaylistObjectCopyWithImpl<$Res, ) as $Val); } + /// Create a copy of SpotubeSimplePlaylistObject + /// with the given fields replaced by the non-null parameter values. @override @pragma('vm:prefer-inline') $SpotubeUserObjectCopyWith<$Res> get owner { @@ -2872,6 +3007,8 @@ class __$$SpotubeSimplePlaylistObjectImplCopyWithImpl<$Res> $Res Function(_$SpotubeSimplePlaylistObjectImpl) _then) : super(_value, _then); + /// Create a copy of SpotubeSimplePlaylistObject + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -2967,12 +3104,14 @@ class _$SpotubeSimplePlaylistObjectImpl const DeepCollectionEquality().equals(other._images, _images)); } - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) @override int get hashCode => Object.hash(runtimeType, id, name, description, externalUri, owner, const DeepCollectionEquality().hash(_images)); - @JsonKey(ignore: true) + /// Create a copy of SpotubeSimplePlaylistObject + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$SpotubeSimplePlaylistObjectImplCopyWith<_$SpotubeSimplePlaylistObjectImpl> @@ -3013,8 +3152,11 @@ abstract class _SpotubeSimplePlaylistObject SpotubeUserObject get owner; @override List get images; + + /// Create a copy of SpotubeSimplePlaylistObject + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$SpotubeSimplePlaylistObjectImplCopyWith<_$SpotubeSimplePlaylistObjectImpl> get copyWith => throw _privateConstructorUsedError; } @@ -3034,8 +3176,12 @@ mixin _$SpotubeSearchResponseObject { throw _privateConstructorUsedError; List get tracks => throw _privateConstructorUsedError; + /// Serializes this SpotubeSearchResponseObject to a JSON map. Map toJson() => throw _privateConstructorUsedError; - @JsonKey(ignore: true) + + /// Create a copy of SpotubeSearchResponseObject + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) $SpotubeSearchResponseObjectCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -3066,6 +3212,8 @@ class _$SpotubeSearchResponseObjectCopyWithImpl<$Res, // ignore: unused_field final $Res Function($Val) _then; + /// Create a copy of SpotubeSearchResponseObject + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -3121,6 +3269,8 @@ class __$$SpotubeSearchResponseObjectImplCopyWithImpl<$Res> $Res Function(_$SpotubeSearchResponseObjectImpl) _then) : super(_value, _then); + /// Create a copy of SpotubeSearchResponseObject + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -3217,7 +3367,7 @@ class _$SpotubeSearchResponseObjectImpl const DeepCollectionEquality().equals(other._tracks, _tracks)); } - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) @override int get hashCode => Object.hash( runtimeType, @@ -3226,7 +3376,9 @@ class _$SpotubeSearchResponseObjectImpl const DeepCollectionEquality().hash(_playlists), const DeepCollectionEquality().hash(_tracks)); - @JsonKey(ignore: true) + /// Create a copy of SpotubeSearchResponseObject + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$SpotubeSearchResponseObjectImplCopyWith<_$SpotubeSearchResponseObjectImpl> @@ -3261,8 +3413,11 @@ abstract class _SpotubeSearchResponseObject List get playlists; @override List get tracks; + + /// Create a copy of SpotubeSearchResponseObject + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$SpotubeSearchResponseObjectImplCopyWith<_$SpotubeSearchResponseObjectImpl> get copyWith => throw _privateConstructorUsedError; } @@ -3378,8 +3533,13 @@ mixin _$SpotubeTrackObject { required TResult orElse(), }) => throw _privateConstructorUsedError; + + /// Serializes this SpotubeTrackObject to a JSON map. Map toJson() => throw _privateConstructorUsedError; - @JsonKey(ignore: true) + + /// Create a copy of SpotubeTrackObject + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) $SpotubeTrackObjectCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -3411,6 +3571,8 @@ class _$SpotubeTrackObjectCopyWithImpl<$Res, $Val extends SpotubeTrackObject> // ignore: unused_field final $Res Function($Val) _then; + /// Create a copy of SpotubeTrackObject + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -3449,6 +3611,8 @@ class _$SpotubeTrackObjectCopyWithImpl<$Res, $Val extends SpotubeTrackObject> ) as $Val); } + /// Create a copy of SpotubeTrackObject + /// with the given fields replaced by the non-null parameter values. @override @pragma('vm:prefer-inline') $SpotubeSimpleAlbumObjectCopyWith<$Res> get album { @@ -3490,6 +3654,8 @@ class __$$SpotubeLocalTrackObjectImplCopyWithImpl<$Res> $Res Function(_$SpotubeLocalTrackObjectImpl) _then) : super(_value, _then); + /// Create a copy of SpotubeTrackObject + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -3598,12 +3764,14 @@ class _$SpotubeLocalTrackObjectImpl implements SpotubeLocalTrackObject { (identical(other.path, path) || other.path == path)); } - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) @override int get hashCode => Object.hash(runtimeType, id, name, externalUri, const DeepCollectionEquality().hash(_artists), album, durationMs, path); - @JsonKey(ignore: true) + /// Create a copy of SpotubeTrackObject + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$SpotubeLocalTrackObjectImplCopyWith<_$SpotubeLocalTrackObjectImpl> @@ -3757,8 +3925,11 @@ abstract class SpotubeLocalTrackObject implements SpotubeTrackObject { @override int get durationMs; String get path; + + /// Create a copy of SpotubeTrackObject + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$SpotubeLocalTrackObjectImplCopyWith<_$SpotubeLocalTrackObjectImpl> get copyWith => throw _privateConstructorUsedError; } @@ -3795,6 +3966,8 @@ class __$$SpotubeFullTrackObjectImplCopyWithImpl<$Res> $Res Function(_$SpotubeFullTrackObjectImpl) _then) : super(_value, _then); + /// Create a copy of SpotubeTrackObject + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -3913,7 +4086,7 @@ class _$SpotubeFullTrackObjectImpl implements SpotubeFullTrackObject { other.explicit == explicit)); } - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) @override int get hashCode => Object.hash( runtimeType, @@ -3926,7 +4099,9 @@ class _$SpotubeFullTrackObjectImpl implements SpotubeFullTrackObject { isrc, explicit); - @JsonKey(ignore: true) + /// Create a copy of SpotubeTrackObject + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$SpotubeFullTrackObjectImplCopyWith<_$SpotubeFullTrackObjectImpl> @@ -4085,8 +4260,11 @@ abstract class SpotubeFullTrackObject implements SpotubeTrackObject { int get durationMs; String get isrc; bool get explicit; + + /// Create a copy of SpotubeTrackObject + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$SpotubeFullTrackObjectImplCopyWith<_$SpotubeFullTrackObjectImpl> get copyWith => throw _privateConstructorUsedError; } @@ -4102,8 +4280,12 @@ mixin _$SpotubeUserObject { List get images => throw _privateConstructorUsedError; String get externalUri => throw _privateConstructorUsedError; + /// Serializes this SpotubeUserObject to a JSON map. Map toJson() => throw _privateConstructorUsedError; - @JsonKey(ignore: true) + + /// Create a copy of SpotubeUserObject + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) $SpotubeUserObjectCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -4131,6 +4313,8 @@ class _$SpotubeUserObjectCopyWithImpl<$Res, $Val extends SpotubeUserObject> // ignore: unused_field final $Res Function($Val) _then; + /// Create a copy of SpotubeUserObject + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -4183,6 +4367,8 @@ class __$$SpotubeUserObjectImplCopyWithImpl<$Res> $Res Function(_$SpotubeUserObjectImpl) _then) : super(_value, _then); + /// Create a copy of SpotubeUserObject + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -4258,12 +4444,14 @@ class _$SpotubeUserObjectImpl implements _SpotubeUserObject { other.externalUri == externalUri)); } - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) @override int get hashCode => Object.hash(runtimeType, id, name, const DeepCollectionEquality().hash(_images), externalUri); - @JsonKey(ignore: true) + /// Create a copy of SpotubeUserObject + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$SpotubeUserObjectImplCopyWith<_$SpotubeUserObjectImpl> get copyWith => @@ -4296,8 +4484,11 @@ abstract class _SpotubeUserObject implements SpotubeUserObject { List get images; @override String get externalUri; + + /// Create a copy of SpotubeUserObject + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$SpotubeUserObjectImplCopyWith<_$SpotubeUserObjectImpl> get copyWith => throw _privateConstructorUsedError; } @@ -4319,8 +4510,12 @@ mixin _$PluginConfiguration { List get abilities => throw _privateConstructorUsedError; String? get repository => throw _privateConstructorUsedError; + /// Serializes this PluginConfiguration to a JSON map. Map toJson() => throw _privateConstructorUsedError; - @JsonKey(ignore: true) + + /// Create a copy of PluginConfiguration + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) $PluginConfigurationCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -4354,6 +4549,8 @@ class _$PluginConfigurationCopyWithImpl<$Res, $Val extends PluginConfiguration> // ignore: unused_field final $Res Function($Val) _then; + /// Create a copy of PluginConfiguration + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -4442,6 +4639,8 @@ class __$$PluginConfigurationImplCopyWithImpl<$Res> $Res Function(_$PluginConfigurationImpl) _then) : super(_value, _then); + /// Create a copy of PluginConfiguration + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -4584,7 +4783,7 @@ class _$PluginConfigurationImpl extends _PluginConfiguration { other.repository == repository)); } - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) @override int get hashCode => Object.hash( runtimeType, @@ -4599,7 +4798,9 @@ class _$PluginConfigurationImpl extends _PluginConfiguration { const DeepCollectionEquality().hash(_abilities), repository); - @JsonKey(ignore: true) + /// Create a copy of PluginConfiguration + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$PluginConfigurationImplCopyWith<_$PluginConfigurationImpl> get copyWith => @@ -4651,8 +4852,11 @@ abstract class _PluginConfiguration extends PluginConfiguration { List get abilities; @override String? get repository; + + /// Create a copy of PluginConfiguration + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$PluginConfigurationImplCopyWith<_$PluginConfigurationImpl> get copyWith => throw _privateConstructorUsedError; } @@ -4668,8 +4872,12 @@ mixin _$PluginUpdateAvailable { String get version => throw _privateConstructorUsedError; String? get changelog => throw _privateConstructorUsedError; + /// Serializes this PluginUpdateAvailable to a JSON map. Map toJson() => throw _privateConstructorUsedError; - @JsonKey(ignore: true) + + /// Create a copy of PluginUpdateAvailable + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) $PluginUpdateAvailableCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -4694,6 +4902,8 @@ class _$PluginUpdateAvailableCopyWithImpl<$Res, // ignore: unused_field final $Res Function($Val) _then; + /// Create a copy of PluginUpdateAvailable + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -4739,6 +4949,8 @@ class __$$PluginUpdateAvailableImplCopyWithImpl<$Res> $Res Function(_$PluginUpdateAvailableImpl) _then) : super(_value, _then); + /// Create a copy of PluginUpdateAvailable + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -4796,11 +5008,13 @@ class _$PluginUpdateAvailableImpl implements _PluginUpdateAvailable { other.changelog == changelog)); } - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) @override int get hashCode => Object.hash(runtimeType, downloadUrl, version, changelog); - @JsonKey(ignore: true) + /// Create a copy of PluginUpdateAvailable + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$PluginUpdateAvailableImplCopyWith<_$PluginUpdateAvailableImpl> @@ -4830,8 +5044,11 @@ abstract class _PluginUpdateAvailable implements PluginUpdateAvailable { String get version; @override String? get changelog; + + /// Create a copy of PluginUpdateAvailable + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$PluginUpdateAvailableImplCopyWith<_$PluginUpdateAvailableImpl> get copyWith => throw _privateConstructorUsedError; } @@ -4848,8 +5065,12 @@ mixin _$MetadataPluginRepository { String get description => throw _privateConstructorUsedError; String get repoUrl => throw _privateConstructorUsedError; + /// Serializes this MetadataPluginRepository to a JSON map. Map toJson() => throw _privateConstructorUsedError; - @JsonKey(ignore: true) + + /// Create a copy of MetadataPluginRepository + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) $MetadataPluginRepositoryCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -4874,6 +5095,8 @@ class _$MetadataPluginRepositoryCopyWithImpl<$Res, // ignore: unused_field final $Res Function($Val) _then; + /// Create a copy of MetadataPluginRepository + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -4925,6 +5148,8 @@ class __$$MetadataPluginRepositoryImplCopyWithImpl<$Res> $Res Function(_$MetadataPluginRepositoryImpl) _then) : super(_value, _then); + /// Create a copy of MetadataPluginRepository + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -4992,12 +5217,14 @@ class _$MetadataPluginRepositoryImpl implements _MetadataPluginRepository { (identical(other.repoUrl, repoUrl) || other.repoUrl == repoUrl)); } - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) @override int get hashCode => Object.hash(runtimeType, name, owner, description, repoUrl); - @JsonKey(ignore: true) + /// Create a copy of MetadataPluginRepository + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$MetadataPluginRepositoryImplCopyWith<_$MetadataPluginRepositoryImpl> @@ -5030,8 +5257,11 @@ abstract class _MetadataPluginRepository implements MetadataPluginRepository { String get description; @override String get repoUrl; + + /// Create a copy of MetadataPluginRepository + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$MetadataPluginRepositoryImplCopyWith<_$MetadataPluginRepositoryImpl> get copyWith => throw _privateConstructorUsedError; } diff --git a/lib/models/playback/track_sources.freezed.dart b/lib/models/playback/track_sources.freezed.dart index 760037d8..28130873 100644 --- a/lib/models/playback/track_sources.freezed.dart +++ b/lib/models/playback/track_sources.freezed.dart @@ -28,8 +28,12 @@ mixin _$TrackSourceQuery { String get isrc => throw _privateConstructorUsedError; bool get explicit => throw _privateConstructorUsedError; + /// Serializes this TrackSourceQuery to a JSON map. Map toJson() => throw _privateConstructorUsedError; - @JsonKey(ignore: true) + + /// Create a copy of TrackSourceQuery + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) $TrackSourceQueryCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -60,6 +64,8 @@ class _$TrackSourceQueryCopyWithImpl<$Res, $Val extends TrackSourceQuery> // ignore: unused_field final $Res Function($Val) _then; + /// Create a copy of TrackSourceQuery + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -130,6 +136,8 @@ class __$$TrackSourceQueryImplCopyWithImpl<$Res> $Res Function(_$TrackSourceQueryImpl) _then) : super(_value, _then); + /// Create a copy of TrackSourceQuery + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -233,7 +241,7 @@ class _$TrackSourceQueryImpl extends _TrackSourceQuery { other.explicit == explicit)); } - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) @override int get hashCode => Object.hash( runtimeType, @@ -245,7 +253,9 @@ class _$TrackSourceQueryImpl extends _TrackSourceQuery { isrc, explicit); - @JsonKey(ignore: true) + /// Create a copy of TrackSourceQuery + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$TrackSourceQueryImplCopyWith<_$TrackSourceQueryImpl> get copyWith => @@ -288,8 +298,11 @@ abstract class _TrackSourceQuery extends TrackSourceQuery { String get isrc; @override bool get explicit; + + /// Create a copy of TrackSourceQuery + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$TrackSourceQueryImplCopyWith<_$TrackSourceQueryImpl> get copyWith => throw _privateConstructorUsedError; } @@ -307,8 +320,12 @@ mixin _$TrackSourceInfo { String get pageUrl => throw _privateConstructorUsedError; int get durationMs => throw _privateConstructorUsedError; + /// Serializes this TrackSourceInfo to a JSON map. Map toJson() => throw _privateConstructorUsedError; - @JsonKey(ignore: true) + + /// Create a copy of TrackSourceInfo + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) $TrackSourceInfoCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -338,6 +355,8 @@ class _$TrackSourceInfoCopyWithImpl<$Res, $Val extends TrackSourceInfo> // ignore: unused_field final $Res Function($Val) _then; + /// Create a copy of TrackSourceInfo + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -402,6 +421,8 @@ class __$$TrackSourceInfoImplCopyWithImpl<$Res> _$TrackSourceInfoImpl _value, $Res Function(_$TrackSourceInfoImpl) _then) : super(_value, _then); + /// Create a copy of TrackSourceInfo + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -488,12 +509,14 @@ class _$TrackSourceInfoImpl implements _TrackSourceInfo { other.durationMs == durationMs)); } - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) @override int get hashCode => Object.hash( runtimeType, id, title, artists, thumbnail, pageUrl, durationMs); - @JsonKey(ignore: true) + /// Create a copy of TrackSourceInfo + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$TrackSourceInfoImplCopyWith<_$TrackSourceInfoImpl> get copyWith => @@ -532,8 +555,11 @@ abstract class _TrackSourceInfo implements TrackSourceInfo { String get pageUrl; @override int get durationMs; + + /// Create a copy of TrackSourceInfo + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$TrackSourceInfoImplCopyWith<_$TrackSourceInfoImpl> get copyWith => throw _privateConstructorUsedError; } @@ -549,8 +575,12 @@ mixin _$TrackSource { SourceCodecs get codec => throw _privateConstructorUsedError; String get bitrate => throw _privateConstructorUsedError; + /// Serializes this TrackSource to a JSON map. Map toJson() => throw _privateConstructorUsedError; - @JsonKey(ignore: true) + + /// Create a copy of TrackSource + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) $TrackSourceCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -578,6 +608,8 @@ class _$TrackSourceCopyWithImpl<$Res, $Val extends TrackSource> // ignore: unused_field final $Res Function($Val) _then; + /// Create a copy of TrackSource + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -630,6 +662,8 @@ class __$$TrackSourceImplCopyWithImpl<$Res> _$TrackSourceImpl _value, $Res Function(_$TrackSourceImpl) _then) : super(_value, _then); + /// Create a copy of TrackSource + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -696,11 +730,13 @@ class _$TrackSourceImpl implements _TrackSource { (identical(other.bitrate, bitrate) || other.bitrate == bitrate)); } - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) @override int get hashCode => Object.hash(runtimeType, url, quality, codec, bitrate); - @JsonKey(ignore: true) + /// Create a copy of TrackSource + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$TrackSourceImplCopyWith<_$TrackSourceImpl> get copyWith => @@ -732,8 +768,11 @@ abstract class _TrackSource implements TrackSource { SourceCodecs get codec; @override String get bitrate; + + /// Create a copy of TrackSource + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$TrackSourceImplCopyWith<_$TrackSourceImpl> get copyWith => throw _privateConstructorUsedError; } diff --git a/lib/modules/player/player_queue.dart b/lib/modules/player/player_queue.dart index c9d5626f..ad70117d 100644 --- a/lib/modules/player/player_queue.dart +++ b/lib/modules/player/player_queue.dart @@ -2,6 +2,7 @@ import 'package:auto_size_text/auto_size_text.dart'; import 'package:collection/collection.dart'; import 'package:flutter/services.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; +import 'package:flutter/material.dart' show showModalBottomSheet, ListTile, SafeArea, Column, Navigator; import 'package:fuzzywuzzy/fuzzywuzzy.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; @@ -12,6 +13,7 @@ import 'package:spotube/components/button/back_button.dart'; import 'package:spotube/components/fallbacks/not_found.dart'; import 'package:spotube/components/inter_scrollbar/inter_scrollbar.dart'; import 'package:spotube/components/track_tile/track_tile.dart'; +import 'package:spotube/components/dialogs/playlist_add_track_dialog.dart'; import 'package:spotube/extensions/constrains.dart'; import 'package:spotube/extensions/context.dart'; import 'package:spotube/hooks/controllers/use_auto_scroll_controller.dart'; @@ -55,9 +57,12 @@ class PlayerQueue extends HookConsumerWidget { final controller = useAutoScrollController(); final searchText = useState(''); + final selectionMode = useState(false); + final selectedTrackIds = useState({}); + final isSearching = useState(false); - final tracks = playlist.tracks; + final tracks = playlist.tracks; final filteredTracks = useMemoized( () { @@ -132,50 +137,156 @@ class PlayerQueue extends HookConsumerWidget { child: searchBar, ) else - AppBar( - trailingGap: 0, - backgroundColor: Colors.transparent, - surfaceBlur: 0, - surfaceOpacity: 0, - title: mediaQuery.mdAndUp || !isSearching.value - ? SizedBox( + selectionMode.value + ? AppBar( + backgroundColor: Colors.transparent, + surfaceBlur: 0, + surfaceOpacity: 0, + leading: [ + IconButton.ghost( + icon: const Icon(SpotubeIcons.close), + onPressed: () { + selectedTrackIds.value = {}; + selectionMode.value = false; + }, + ) + ], + title: SizedBox( height: 30, child: AutoSizeText( - context.l10n.tracks_in_queue(tracks.length), + '${selectedTrackIds.value.length} selected', maxLines: 1, ), - ) - : null, - trailing: [ - if (mediaQuery.mdAndUp) - searchBar - else - IconButton.ghost( - icon: const Icon(SpotubeIcons.filter), - onPressed: () { - isSearching.value = !isSearching.value; - }, - ), - if (!isSearching.value) ...[ - const SizedBox(width: 10), - Tooltip( - tooltip: TooltipContainer( - child: Text(context.l10n.clear_all)) - .call, - child: IconButton.outline( - icon: const Icon(SpotubeIcons.playlistRemove), - onPressed: () { - onStop(); - closeDrawer(context); - }, ), + trailing: [ + IconButton.ghost( + icon: const Icon(SpotubeIcons.moreHorizontal), + onPressed: () async { + await showModalBottomSheet( + context: context, + builder: (context) { + return SafeArea( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + ListTile( + leading: const Icon( + SpotubeIcons.selectionCheck), + title: Text( + context.l10n.select_all), + onTap: () { + selectedTrackIds.value = + filteredTracks + .map((t) => t.id) + .toSet(); + Navigator.pop(context); + }, + ), + ListTile( + leading: const Icon( + SpotubeIcons.playlistAdd), + title: Text( + context.l10n.add_to_playlist), + onTap: () async { + final selected = filteredTracks + .where((t) => selectedTrackIds + .value + .contains(t.id)) + .toList(); + Navigator.pop(context); + if (selected.isEmpty) return; + final res = await showDialog< + bool?>( + context: context, + builder: (context) => + PlaylistAddTrackDialog( + tracks: selected, + openFromPlaylist: null, + ), + ); + if (res == true) { + selectedTrackIds.value = {}; + selectionMode.value = false; + } + }, + ), + ListTile( + leading: + const Icon(SpotubeIcons.trash), + title: Text( + context.l10n.remove_from_queue), + onTap: () async { + final ids = selectedTrackIds + .value + .toList(); + Navigator.pop(context); + if (ids.isEmpty) return; + await Future.wait(ids + .map((id) => onRemove(id))); + selectedTrackIds.value = {}; + selectionMode.value = false; + }, + ), + ListTile( + leading: const Icon( + SpotubeIcons.close), + title: Text(context.l10n.cancel), + onTap: () { + Navigator.pop(context); + }, + ), + ], + ), + ); + }, + ); + }, + ), + ], + ) + : AppBar( + trailingGap: 0, + backgroundColor: Colors.transparent, + surfaceBlur: 0, + surfaceOpacity: 0, + title: mediaQuery.mdAndUp || !isSearching.value + ? SizedBox( + height: 30, + child: AutoSizeText( + context.l10n.tracks_in_queue(tracks.length), + maxLines: 1, + ), + ) + : null, + trailing: [ + if (mediaQuery.mdAndUp) searchBar + else + IconButton.ghost( + icon: const Icon(SpotubeIcons.filter), + onPressed: () { + isSearching.value = !isSearching.value; + }, + ), + if (!isSearching.value) ...[ + const SizedBox(width: 10), + Tooltip( + tooltip: TooltipContainer( + child: Text(context.l10n.clear_all)) + .call, + child: IconButton.outline( + icon: const Icon(SpotubeIcons.playlistRemove), + onPressed: () { + onStop(); + closeDrawer(context); + }, + ), + ), + const Gap(5), + if (mediaQuery.smAndDown) + const BackButton(icon: SpotubeIcons.angleDown), + ], + ], ), - const Gap(5), - if (mediaQuery.smAndDown) - const BackButton(icon: SpotubeIcons.angleDown), - ], - ], - ), const Divider(), Expanded( child: InterScrollbar( @@ -195,6 +306,20 @@ class PlayerQueue extends HookConsumerWidget { }, itemBuilder: (context, i) { final track = filteredTracks.elementAt(i); + + void toggleSelection(String id) { + final s = {...selectedTrackIds.value}; + if (s.contains(id)) { + s.remove(id); + } else { + s.add(id); + } + selectedTrackIds.value = s; + if (selectedTrackIds.value.isEmpty) { + selectionMode.value = false; + } + } + return AutoScrollTag( key: ValueKey(i), controller: controller, @@ -203,15 +328,34 @@ class PlayerQueue extends HookConsumerWidget { playlist: playlist, index: i, track: track, + selectionMode: selectionMode.value, + selected: + selectedTrackIds.value.contains(track.id), + onChanged: selectionMode.value + ? (_) => toggleSelection(track.id) + : null, onTap: () async { + if (selectionMode.value) { + toggleSelection(track.id); + return; + } if (playlist.activeTrack?.id == track.id) { return; } await onJump(track); }, + onLongPress: () { + if (!selectionMode.value) { + selectionMode.value = true; + selectedTrackIds.value = {track.id}; + } else { + toggleSelection(track.id); + } + }, leadingActions: [ if (!isSearching.value && - searchText.value.isEmpty) + searchText.value.isEmpty && + !selectionMode.value) Padding( padding: const EdgeInsets.only(left: 8.0), diff --git a/lib/pages/settings/blacklist.dart b/lib/pages/settings/blacklist.dart index 8ac2c1b9..2af899f3 100644 --- a/lib/pages/settings/blacklist.dart +++ b/lib/pages/settings/blacklist.dart @@ -64,7 +64,7 @@ class BlackListPage extends HookConsumerWidget { child: TextField( onChanged: (value) => searchText.value = value, placeholder: Text(context.l10n.search), - leading: const Icon(SpotubeIcons.search), + // prefixIcon: const Icon(SpotubeIcons.search), ), ), InterScrollbar( diff --git a/lib/provider/audio_player/state.freezed.dart b/lib/provider/audio_player/state.freezed.dart index 146b0541..0299cd2f 100644 --- a/lib/provider/audio_player/state.freezed.dart +++ b/lib/provider/audio_player/state.freezed.dart @@ -27,8 +27,12 @@ mixin _$AudioPlayerState { int get currentIndex => throw _privateConstructorUsedError; List get tracks => throw _privateConstructorUsedError; + /// Serializes this AudioPlayerState to a JSON map. Map toJson() => throw _privateConstructorUsedError; - @JsonKey(ignore: true) + + /// Create a copy of AudioPlayerState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) $AudioPlayerStateCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -58,6 +62,8 @@ class _$AudioPlayerStateCopyWithImpl<$Res, $Val extends AudioPlayerState> // ignore: unused_field final $Res Function($Val) _then; + /// Create a copy of AudioPlayerState + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -122,6 +128,8 @@ class __$$AudioPlayerStateImplCopyWithImpl<$Res> $Res Function(_$AudioPlayerStateImpl) _then) : super(_value, _then); + /// Create a copy of AudioPlayerState + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -226,7 +234,7 @@ class _$AudioPlayerStateImpl extends _AudioPlayerState { const DeepCollectionEquality().equals(other._tracks, _tracks)); } - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) @override int get hashCode => Object.hash( runtimeType, @@ -237,7 +245,9 @@ class _$AudioPlayerStateImpl extends _AudioPlayerState { currentIndex, const DeepCollectionEquality().hash(_tracks)); - @JsonKey(ignore: true) + /// Create a copy of AudioPlayerState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$AudioPlayerStateImplCopyWith<_$AudioPlayerStateImpl> get copyWith => @@ -277,8 +287,11 @@ abstract class _AudioPlayerState extends AudioPlayerState { int get currentIndex; @override List get tracks; + + /// Create a copy of AudioPlayerState + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$AudioPlayerStateImplCopyWith<_$AudioPlayerStateImpl> get copyWith => throw _privateConstructorUsedError; } diff --git a/lib/services/metadata/metadata.dart b/lib/services/metadata/metadata.dart index ab2290f6..0dca9465 100644 --- a/lib/services/metadata/metadata.dart +++ b/lib/services/metadata/metadata.dart @@ -45,6 +45,7 @@ class MetadataPlugin { sharedPreferences, config.slug, ), + createYoutubeEngine: () => throw UnimplementedError(), onNavigatorPush: (route) { return rootNavigatorKey.currentContext?.router .pushWidget(Builder(builder: (context) { diff --git a/lib/services/song_link/song_link.freezed.dart b/lib/services/song_link/song_link.freezed.dart index 0a1af8a9..c704cde3 100644 --- a/lib/services/song_link/song_link.freezed.dart +++ b/lib/services/song_link/song_link.freezed.dart @@ -30,8 +30,12 @@ mixin _$SongLink { String? get nativeAppUriMobile => throw _privateConstructorUsedError; String? get nativeAppUriDesktop => throw _privateConstructorUsedError; + /// Serializes this SongLink to a JSON map. Map toJson() => throw _privateConstructorUsedError; - @JsonKey(ignore: true) + + /// Create a copy of SongLink + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) $SongLinkCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -63,6 +67,8 @@ class _$SongLinkCopyWithImpl<$Res, $Val extends SongLink> // ignore: unused_field final $Res Function($Val) _then; + /// Create a copy of SongLink + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -145,6 +151,8 @@ class __$$SongLinkImplCopyWithImpl<$Res> _$SongLinkImpl _value, $Res Function(_$SongLinkImpl) _then) : super(_value, _then); + /// Create a copy of SongLink + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -261,12 +269,14 @@ class _$SongLinkImpl implements _SongLink { other.nativeAppUriDesktop == nativeAppUriDesktop)); } - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) @override int get hashCode => Object.hash(runtimeType, displayName, linkId, platform, show, uniqueId, country, url, nativeAppUriMobile, nativeAppUriDesktop); - @JsonKey(ignore: true) + /// Create a copy of SongLink + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$SongLinkImplCopyWith<_$SongLinkImpl> get copyWith => @@ -313,8 +323,11 @@ abstract class _SongLink implements SongLink { String? get nativeAppUriMobile; @override String? get nativeAppUriDesktop; + + /// Create a copy of SongLink + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$SongLinkImplCopyWith<_$SongLinkImpl> get copyWith => throw _privateConstructorUsedError; } diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index eda2d021..8a9a2e19 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -11,13 +11,11 @@ #include #include #include -#include #include #include #include #include #include -#include #include #include #include @@ -39,9 +37,6 @@ void fl_register_plugins(FlPluginRegistry* registry) { g_autoptr(FlPluginRegistrar) gtk_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "GtkPlugin"); gtk_plugin_register_with_registrar(gtk_registrar); - g_autoptr(FlPluginRegistrar) irondash_engine_context_registrar = - fl_plugin_registry_get_registrar_for_plugin(registry, "IrondashEngineContextPlugin"); - irondash_engine_context_plugin_register_with_registrar(irondash_engine_context_registrar); g_autoptr(FlPluginRegistrar) local_notifier_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "LocalNotifierPlugin"); local_notifier_plugin_register_with_registrar(local_notifier_registrar); @@ -57,9 +52,6 @@ void fl_register_plugins(FlPluginRegistry* registry) { g_autoptr(FlPluginRegistrar) sqlite3_flutter_libs_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "Sqlite3FlutterLibsPlugin"); sqlite3_flutter_libs_plugin_register_with_registrar(sqlite3_flutter_libs_registrar); - g_autoptr(FlPluginRegistrar) super_native_extensions_registrar = - fl_plugin_registry_get_registrar_for_plugin(registry, "SuperNativeExtensionsPlugin"); - super_native_extensions_plugin_register_with_registrar(super_native_extensions_registrar); g_autoptr(FlPluginRegistrar) system_theme_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "SystemThemePlugin"); system_theme_plugin_register_with_registrar(system_theme_registrar); diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index b9ca593f..4e2c2fb3 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -8,13 +8,11 @@ list(APPEND FLUTTER_PLUGIN_LIST flutter_secure_storage_linux flutter_timezone gtk - irondash_engine_context local_notifier media_kit_libs_linux open_file_linux screen_retriever_linux sqlite3_flutter_libs - super_native_extensions system_theme tray_manager url_launcher_linux diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 9385ed14..3f11a9c7 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -17,7 +17,6 @@ import file_selector_macos import flutter_inappwebview_macos import flutter_secure_storage_macos import flutter_timezone -import irondash_engine_context import local_notifier import media_kit_libs_macos_audio import open_file_mac @@ -27,7 +26,6 @@ import screen_retriever_macos import shared_preferences_foundation import sqflite_darwin import sqlite3_flutter_libs -import super_native_extensions import system_theme import tray_manager import url_launcher_macos @@ -46,7 +44,6 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { InAppWebViewFlutterPlugin.register(with: registry.registrar(forPlugin: "InAppWebViewFlutterPlugin")) FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin")) FlutterTimezonePlugin.register(with: registry.registrar(forPlugin: "FlutterTimezonePlugin")) - IrondashEngineContextPlugin.register(with: registry.registrar(forPlugin: "IrondashEngineContextPlugin")) LocalNotifierPlugin.register(with: registry.registrar(forPlugin: "LocalNotifierPlugin")) MediaKitLibsMacosAudioPlugin.register(with: registry.registrar(forPlugin: "MediaKitLibsMacosAudioPlugin")) OpenFilePlugin.register(with: registry.registrar(forPlugin: "OpenFilePlugin")) @@ -56,7 +53,6 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) Sqlite3FlutterLibsPlugin.register(with: registry.registrar(forPlugin: "Sqlite3FlutterLibsPlugin")) - SuperNativeExtensionsPlugin.register(with: registry.registrar(forPlugin: "SuperNativeExtensionsPlugin")) SystemThemePlugin.register(with: registry.registrar(forPlugin: "SystemThemePlugin")) TrayManagerPlugin.register(with: registry.registrar(forPlugin: "TrayManagerPlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) diff --git a/pubspec.lock b/pubspec.lock index a6720c55..ef3057b7 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -230,10 +230,10 @@ packages: dependency: transitive description: name: build_cli_annotations - sha256: b59d2769769efd6c9ff6d4c4cede0be115a566afc591705c2040b707534b1172 + sha256: e563c2e01de8974566a1998410d3f6f03521788160a02503b0b1f1a46c7b3d95 url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" build_config: dependency: transitive description: @@ -246,10 +246,10 @@ packages: dependency: transitive description: name: build_daemon - sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa" + sha256: "409002f1adeea601018715d613115cfaf0e31f512cb80ae4534c79867ae2363d" url: "https://pub.dev" source: hosted - version: "4.0.4" + version: "4.1.0" build_resolvers: dependency: transitive description: @@ -374,10 +374,10 @@ packages: dependency: transitive description: name: code_builder - sha256: "0ec10bf4a89e4c613960bf1e8b42c64127021740fb21640c29c909826a5eea3e" + sha256: "11654819532ba94c34de52ff5feb52bd81cba1de00ef2ed622fd50295f9d4243" url: "https://pub.dev" source: hosted - version: "4.10.1" + version: "4.11.0" collection: dependency: "direct main" description: @@ -422,10 +422,10 @@ packages: dependency: transitive description: name: country_flags - sha256: "78a7bf8aabd7ae1a90087f0c517471ac9ebfe07addc652692f58da0f0f833196" + sha256: "714f2d415e74828eb08787d552a05e94cdf2cbe0607a5656f3e70087cd7bb7e0" url: "https://pub.dev" source: hosted - version: "3.3.0" + version: "4.1.0" coverage: dependency: transitive description: @@ -438,18 +438,18 @@ packages: dependency: transitive description: name: cross_file - sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670" + sha256: "942a4791cd385a68ccb3b32c71c427aba508a1bb949b86dff2adbe4049f16239" url: "https://pub.dev" source: hosted - version: "0.3.4+2" + version: "0.3.5" crypto: dependency: transitive description: name: crypto - sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" + sha256: c8ea0233063ba03258fbcf2ca4d6dadfefe14f02fab57702265467a19f27fadf url: "https://pub.dev" source: hosted - version: "3.0.6" + version: "3.0.7" csslib: dependency: transitive description: @@ -470,10 +470,10 @@ packages: dependency: transitive description: name: dart_mappable - sha256: "15f41a35da8ee690bbfa0059fa241edeeaea73f89a2ba685b354ece07cd8ada6" + sha256: "0e219930c9f7b9e0f14ae7c1de931c401875110fd5c67975b6b9492a6d3a531b" url: "https://pub.dev" source: hosted - version: "4.6.0" + version: "4.6.1" dart_style: dependency: transitive description: @@ -577,10 +577,10 @@ packages: dependency: "direct main" description: name: drift - sha256: "6aaea757f53bb035e8a3baedf3d1d53a79d6549a6c13d84f7546509da9372c7c" + sha256: "540cf382a3bfa99b76e51514db5b0ebcd81ce3679b7c1c9cb9478ff3735e47a1" url: "https://pub.dev" source: hosted - version: "2.28.1" + version: "2.28.2" drift_dev: dependency: "direct dev" description: @@ -617,10 +617,10 @@ packages: dependency: "direct main" description: name: envied - sha256: "8c22863e9e8e58e3e987d1a6e2797d604d296999125340410ddc44e03e5941d9" + sha256: cd95ddf0982e53f0b6664e889d4a9ce678b3907a59a5047923404375ef6dcacc url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.3.1" envied_generator: dependency: "direct dev" description: @@ -641,10 +641,10 @@ packages: dependency: transitive description: name: expressions - sha256: "308a621b602923dd8a0cf3072793b24850d06453eb49c6b698cbda41a282e904" + sha256: f3b0e99563a9a1bde1138e728eb722f292cc7d2aec55d28136c49b1a370306c5 url: "https://pub.dev" source: hosted - version: "0.2.5+2" + version: "0.2.5+3" fake_async: dependency: transitive description: @@ -689,26 +689,26 @@ packages: dependency: "direct main" description: name: file_selector - sha256: "5019692b593455127794d5718304ff1ae15447dea286cdda9f0db2a796a1b828" + sha256: "5f1d15a7f17115038f433d1b0ea57513cc9e29a9d5338d166cb0bef3fa90a7a0" url: "https://pub.dev" source: hosted - version: "1.0.3" + version: "1.0.4" file_selector_android: dependency: transitive description: name: file_selector_android - sha256: "4be8ae7374c81daf88e49084a1d68dfe68466ef38a6a3d711cc0b83d53e22465" + sha256: "2db9a2d05f66b49a3b45c4a7c2f040dd5fcd457ca30f39df7cdcf80b8cd7f2d4" url: "https://pub.dev" source: hosted - version: "0.5.1+16" + version: "0.5.2+1" file_selector_ios: dependency: transitive description: name: file_selector_ios - sha256: fe9f52123af16bba4ad65bd7e03defbbb4b172a38a8e6aaa2a869a0c56a5f5fb + sha256: fc3c3fc567cd9bcae784dfeb98d37c46a8ded9e8757d37ea67e975c399bc14e0 url: "https://pub.dev" source: hosted - version: "0.5.3+2" + version: "0.5.3+3" file_selector_linux: dependency: transitive description: @@ -721,10 +721,10 @@ packages: dependency: transitive description: name: file_selector_macos - sha256: "19124ff4a3d8864fdc62072b6a2ef6c222d55a3404fe14893a3c02744907b60c" + sha256: "88707a3bec4b988aaed3b4df5d7441ee4e987f20b286cddca5d6a8270cab23f2" url: "https://pub.dev" source: hosted - version: "0.9.4+4" + version: "0.9.4+5" file_selector_platform_interface: dependency: transitive description: @@ -837,18 +837,18 @@ packages: dependency: transitive description: name: flutter_gen_core - sha256: eda54fdc5de08e7eeea663eb8442aafc8660b5a13fda4e0c9e572c64e50195fb + sha256: b6bafbbd981da2f964eb45bcb8b8a7676a281084f8922c0c75de4cfbaa849311 url: "https://pub.dev" source: hosted - version: "5.11.0" + version: "5.12.0" flutter_gen_runner: dependency: "direct dev" description: name: flutter_gen_runner - sha256: "669bf8b7a9b4acbdcb7fcc5e12bf638aca19acedf43341714cbca3bf3a219521" + sha256: c99b10af9d404e3f46fd1927e7d90099779e935e86022674c4c2a9e6c2a93b29 url: "https://pub.dev" source: hosted - version: "5.11.0" + version: "5.12.0" flutter_hooks: dependency: "direct main" description: @@ -954,16 +954,16 @@ packages: dependency: "direct main" description: name: flutter_native_splash - sha256: "8321a6d11a8d13977fa780c89de8d257cce3d841eecfb7a4cadffcc4f12d82dc" + sha256: "4fb9f4113350d3a80841ce05ebf1976a36de622af7d19aca0ca9a9911c7ff002" url: "https://pub.dev" source: hosted - version: "2.4.6" + version: "2.4.7" flutter_new_pipe_extractor: dependency: "direct main" description: path: "." ref: HEAD - resolved-ref: "916bde44cbead75125e8db842eb46bdcf211a79a" + resolved-ref: b5de415ebb22ec7d4857554b2411893a72fa0026 url: "https://github.com/KRTirtho/flutter_new_pipe_extractor.git" source: git version: "0.1.0" @@ -971,10 +971,10 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: b0694b7fb1689b0e6cc193b3f1fcac6423c4f93c74fb20b806c6b6f196db0c31 + sha256: "306f0596590e077338312f38837f595c04f28d6cdeeac392d3d74df2f0003687" url: "https://pub.dev" source: hosted - version: "2.0.30" + version: "2.0.32" flutter_riverpod: dependency: "direct main" description: @@ -1052,10 +1052,10 @@ packages: dependency: "direct overridden" description: name: flutter_svg - sha256: b9c2ad5872518a27507ab432d1fb97e8813b05f0fc693f9d40fad06d073e0678 + sha256: "055de8921be7b8e8b98a233c7a5ef84b3a6fcc32f46f1ebf5b9bb3576d108355" url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.2.2" flutter_test: dependency: "direct dev" description: flutter @@ -1147,10 +1147,10 @@ packages: dependency: "direct main" description: name: get_it - sha256: a4292e7cf67193f8e7c1258203104eb2a51ec8b3a04baa14695f4064c144297b + sha256: ae78de7c3f2304b8d81f2bb6e320833e5e81de942188542328f074978cc0efa9 url: "https://pub.dev" source: hosted - version: "8.2.0" + version: "8.3.0" glob: dependency: transitive description: @@ -1163,10 +1163,10 @@ packages: dependency: "direct main" description: name: google_fonts - sha256: ebc94ed30fd13cefd397cb1658b593f21571f014b7d1197eeb41fb95f05d899a + sha256: "517b20870220c48752eafa0ba1a797a092fb22df0d89535fd9991e86ee2cdd9c" url: "https://pub.dev" source: hosted - version: "6.3.1" + version: "6.3.2" graphs: dependency: transitive description: @@ -1221,10 +1221,10 @@ packages: description: path: "." ref: main - resolved-ref: "01935a75640092af7947bfb21a497240376f0c83" + resolved-ref: "32828156bc111d147709f8d644804227bbdfe8f1" url: "https://github.com/KRTirtho/hetu_spotube_plugin.git" source: git - version: "0.0.1" + version: "0.0.2" hetu_std: dependency: "direct main" description: @@ -1326,10 +1326,10 @@ packages: dependency: transitive description: name: image_picker_android - sha256: "28f3987ca0ec702d346eae1d90eda59603a2101b52f1e234ded62cff1d5cfa6e" + sha256: ca2a3b04d34e76157e9ae680ef16014fb4c2d20484e78417eaed6139330056f6 url: "https://pub.dev" source: hosted - version: "0.8.13+1" + version: "0.8.13+7" image_picker_for_web: dependency: transitive description: @@ -1342,10 +1342,10 @@ packages: dependency: transitive description: name: image_picker_ios - sha256: eb06fe30bab4c4497bad449b66448f50edcc695f1c59408e78aa3a8059eb8f0e + sha256: e675c22790bcc24e9abd455deead2b7a88de4b79f7327a281812f14de1a56f58 url: "https://pub.dev" source: hosted - version: "0.8.13" + version: "0.8.13+1" image_picker_linux: dependency: transitive description: @@ -1358,18 +1358,18 @@ packages: dependency: transitive description: name: image_picker_macos - sha256: d58cd9d67793d52beefd6585b12050af0a7663c0c2a6ece0fb110a35d6955e04 + sha256: "86f0f15a309de7e1a552c12df9ce5b59fe927e71385329355aec4776c6a8ec91" url: "https://pub.dev" source: hosted - version: "0.2.2" + version: "0.2.2+1" image_picker_platform_interface: dependency: transitive description: name: image_picker_platform_interface - sha256: "9f143b0dba3e459553209e20cc425c9801af48e6dfa4f01a0fcf927be3f41665" + sha256: "567e056716333a1647c64bb6bd873cff7622233a5c3f694be28a583d4715690c" url: "https://pub.dev" source: hosted - version: "2.11.0" + version: "2.11.1" image_picker_windows: dependency: transitive description: @@ -1403,10 +1403,10 @@ packages: dependency: "direct main" description: name: invidious - sha256: "27ef3a001df875665de15535dbc9099f44d12a59480018fb1e17377d4af0308d" + sha256: "0da8ebc4c4110057f03302bbd54514b10642154d7be569e7994172f2202dcfe8" url: "https://pub.dev" source: hosted - version: "0.1.1" + version: "0.1.2" io: dependency: "direct dev" description: @@ -1415,30 +1415,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.5" - irondash_engine_context: - dependency: transitive - description: - name: irondash_engine_context - sha256: "2bb0bc13dfda9f5aaef8dde06ecc5feb1379f5bb387d59716d799554f3f305d7" - url: "https://pub.dev" - source: hosted - version: "0.5.5" - irondash_message_channel: - dependency: transitive - description: - name: irondash_message_channel - sha256: b4101669776509c76133b8917ab8cfc704d3ad92a8c450b92934dd8884a2f060 - url: "https://pub.dev" - source: hosted - version: "0.7.0" jiosaavn: dependency: "direct main" description: name: jiosaavn - sha256: d32b4f43f26488f942f5d7d19d748a1f2664ae3d41ff9c7d50eeb81705174bd2 + sha256: b6bde15c56398ebfd439825a64fb540a265773d1a518ba103e79988e13d16e1d url: "https://pub.dev" source: hosted - version: "0.1.0" + version: "0.1.1" jovial_misc: dependency: transitive description: @@ -1451,10 +1435,10 @@ packages: dependency: transitive description: name: jovial_svg - sha256: "6791b1435547bdc0793081a166d41a8a313ebc61e4e5136fb7a3218781fb9e50" + sha256: "08dd24b800d48796c9c0227acb96eb00c6cacccb1d7de58d79fc924090049868" url: "https://pub.dev" source: hosted - version: "1.1.27" + version: "1.1.28" js: dependency: transitive description: @@ -1483,10 +1467,10 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "8dcda04c3fc16c14f48a7bb586d4be1f0d1572731b6d81d51772ef47c02081e0" + sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" url: "https://pub.dev" source: hosted - version: "11.0.1" + version: "11.0.2" leak_tracker_flutter_testing: dependency: transitive description: @@ -1523,10 +1507,10 @@ packages: dependency: "direct main" description: name: logger - sha256: "55d6c23a6c15db14920e037fe7e0dc32e7cdaf3b64b4b25df2d541b5b6b81c0c" + sha256: a7967e31b703831a893bbc3c3dd11db08126fe5f369b5c648a36f821979f5be3 url: "https://pub.dev" source: hosted - version: "2.6.1" + version: "2.6.2" logging: dependency: "direct main" description: @@ -1572,34 +1556,34 @@ packages: description: path: media_kit ref: HEAD - resolved-ref: c9617f570b8c0ba02857e721997f78c053a856c1 + resolved-ref: d310049f24196250d876efb02b9ff56fa9ef5068 url: "https://github.com/media-kit/media-kit" source: git - version: "1.2.0" + version: "1.2.1" media_kit_libs_android_audio: dependency: "direct overridden" description: path: "libs/android/media_kit_libs_android_audio" ref: HEAD - resolved-ref: c9617f570b8c0ba02857e721997f78c053a856c1 + resolved-ref: d310049f24196250d876efb02b9ff56fa9ef5068 url: "https://github.com/media-kit/media-kit" source: git - version: "1.3.7" + version: "1.3.8" media_kit_libs_audio: dependency: "direct main" description: path: "libs/universal/media_kit_libs_audio" ref: HEAD - resolved-ref: c9617f570b8c0ba02857e721997f78c053a856c1 + resolved-ref: d310049f24196250d876efb02b9ff56fa9ef5068 url: "https://github.com/media-kit/media-kit" source: git - version: "1.0.6" + version: "1.0.7" media_kit_libs_ios_audio: dependency: "direct overridden" description: path: "libs/ios/media_kit_libs_ios_audio" ref: HEAD - resolved-ref: c9617f570b8c0ba02857e721997f78c053a856c1 + resolved-ref: d310049f24196250d876efb02b9ff56fa9ef5068 url: "https://github.com/media-kit/media-kit" source: git version: "1.1.4" @@ -1608,7 +1592,7 @@ packages: description: path: "libs/linux/media_kit_libs_linux" ref: HEAD - resolved-ref: c9617f570b8c0ba02857e721997f78c053a856c1 + resolved-ref: d310049f24196250d876efb02b9ff56fa9ef5068 url: "https://github.com/media-kit/media-kit" source: git version: "1.2.1" @@ -1617,7 +1601,7 @@ packages: description: path: "libs/macos/media_kit_libs_macos_audio" ref: HEAD - resolved-ref: c9617f570b8c0ba02857e721997f78c053a856c1 + resolved-ref: d310049f24196250d876efb02b9ff56fa9ef5068 url: "https://github.com/media-kit/media-kit" source: git version: "1.1.4" @@ -1626,7 +1610,7 @@ packages: description: path: "libs/windows/media_kit_libs_windows_audio" ref: HEAD - resolved-ref: c9617f570b8c0ba02857e721997f78c053a856c1 + resolved-ref: d310049f24196250d876efb02b9ff56fa9ef5068 url: "https://github.com/media-kit/media-kit" source: git version: "1.0.9" @@ -1682,10 +1666,10 @@ packages: dependency: transitive description: name: oauth2 - sha256: c84470642cbb2bec450ccab2f8520c079cd1ca546a76ffd5c40589e07f4e8bf4 + sha256: "890a032ba1b44fa8dcfeba500e613df0ecbe16aeace13bb0fe1d25eb42cda5b8" url: "https://pub.dev" source: hosted - version: "2.0.3" + version: "2.0.5" octo_image: dependency: transitive description: @@ -1826,18 +1810,18 @@ packages: dependency: transitive description: name: path_provider_android - sha256: "993381400e94d18469750e5b9dcb8206f15bc09f9da86b9e44a9b0092a0066db" + sha256: e122c5ea805bb6773bb12ce667611265980940145be920cd09a4b0ec0285cb16 url: "https://pub.dev" source: hosted - version: "2.2.18" + version: "2.2.20" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "16eef174aacb07e09c351502740fa6254c165757638eba1e9116b0a781201bbd" + sha256: efaec349ddfc181528345c56f8eda9d6cccd71c177511b132c6a0ddaefaa2738 url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.4.3" path_provider_linux: dependency: transitive description: @@ -1914,10 +1898,10 @@ packages: dependency: transitive description: name: petitparser - sha256: "07c8f0b1913bcde1ff0d26e57ace2f3012ccbf2b204e070290dad3bb22797646" + sha256: "1a97266a94f7350d30ae522c0af07890c70b8e62c71e8e3920d1db4d23c057d1" url: "https://pub.dev" source: hosted - version: "6.1.0" + version: "7.0.1" phonecodes: dependency: transitive description: @@ -1934,14 +1918,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.1.2" - pixel_snap: - dependency: transitive - description: - name: pixel_snap - sha256: "677410ea37b07cd37ecb6d5e6c0d8d7615a7cf3bd92ba406fd1ac57e937d1fb0" - url: "https://pub.dev" - source: hosted - version: "0.1.5" platform: dependency: transitive description: @@ -1970,10 +1946,10 @@ packages: dependency: transitive description: name: pool - sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" + sha256: "978783255c543aa3586a1b3c21f6e9d720eb315376a915872c61ef8b5c20177d" url: "https://pub.dev" source: hosted - version: "1.5.1" + version: "1.5.2" posix: dependency: transitive description: @@ -2034,10 +2010,10 @@ packages: dependency: transitive description: name: random_user_agents - sha256: "19facde509a2482dababb454faf2aceff797a6ae08e80f91268c0c8a7420f03b" + sha256: "95647149687167e82a7b39e1b4616fdebb574981b71b6f0cfca21b69f36293a8" url: "https://pub.dev" source: hosted - version: "1.0.15" + version: "1.0.17" recase: dependency: transitive description: @@ -2131,10 +2107,10 @@ packages: dependency: "direct main" description: name: shadcn_flutter - sha256: af83de199b7c3a965ab24e293cfcafe2764c12b7f911f5b1a427c332029262d9 + sha256: "8c976b6ef980fb107f5f618153185e5a466af5cc12dd02fda1360d84e0e449f2" url: "https://pub.dev" source: hosted - version: "0.0.44" + version: "0.0.46" shared_preferences: dependency: "direct main" description: @@ -2147,18 +2123,18 @@ packages: dependency: transitive description: name: shared_preferences_android - sha256: a2608114b1ffdcbc9c120eb71a0e207c71da56202852d4aab8a5e30a82269e74 + sha256: "34266009473bf71d748912da4bf62d439185226c03e01e2d9687bc65bbfcb713" url: "https://pub.dev" source: hosted - version: "2.4.12" + version: "2.4.15" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03" + sha256: "1c33a907142607c40a7542768ec9badfd16293bac51da3a4482623d15845f88b" url: "https://pub.dev" source: hosted - version: "2.5.4" + version: "2.5.5" shared_preferences_linux: dependency: transitive description: @@ -2332,14 +2308,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.10.1" - sprintf: - dependency: transitive - description: - name: sprintf - sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" - url: "https://pub.dev" - source: hosted - version: "7.0.0" sqflite: dependency: transitive description: @@ -2384,18 +2352,18 @@ packages: dependency: "direct main" description: name: sqlite3 - sha256: f393d92c71bdcc118d6203d07c991b9be0f84b1a6f89dd4f7eed348131329924 + sha256: "3145bd74dcdb4fd6f5c6dda4d4e4490a8087d7f286a14dee5d37087290f0f8a2" url: "https://pub.dev" source: hosted - version: "2.9.0" + version: "2.9.4" sqlite3_flutter_libs: dependency: "direct main" description: name: sqlite3_flutter_libs - sha256: "2b03273e71867a8a4d030861fc21706200debe5c5858a4b9e58f4a1c129586a4" + sha256: "69c80d812ef2500202ebd22002cbfc1b6565e9ff56b2f971e757fac5d42294df" url: "https://pub.dev" source: hosted - version: "0.5.39" + version: "0.5.40" sqlparser: dependency: transitive description: @@ -2452,22 +2420,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.0.3" - super_clipboard: - dependency: transitive - description: - name: super_clipboard - sha256: e73f3bb7e66cc9260efa1dc507f979138e7e106c3521e2dda2d0311f6d728a16 - url: "https://pub.dev" - source: hosted - version: "0.9.1" - super_native_extensions: - dependency: transitive - description: - name: super_native_extensions - sha256: b9611dcb68f1047d6f3ef11af25e4e68a21b1a705bbcc3eb8cb4e9f5c3148569 - url: "https://pub.dev" - source: hosted - version: "0.9.1" sync_http: dependency: transitive description: @@ -2484,14 +2436,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.4.0" - syntax_highlight: - dependency: transitive - description: - name: syntax_highlight - sha256: "4d3ba40658cadba6ba55d697f29f00b43538ebb6eb4a0ca0e895c568eaced138" - url: "https://pub.dev" - source: hosted - version: "0.5.0" system_theme: dependency: "direct main" description: @@ -2576,10 +2520,10 @@ packages: dependency: "direct main" description: name: tray_manager - sha256: "537e539f48cd82d8ee2240d4330158c7b44c7e043e8e18b5811f2f8f6b7df25a" + sha256: c5fd83b0ae4d80be6eaedfad87aaefab8787b333b8ebd064b0e442a81006035b url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "0.5.2" type_plus: dependency: transitive description: @@ -2640,18 +2584,18 @@ packages: dependency: transitive description: name: url_launcher_android - sha256: "69ee86740f2847b9a4ba6cffa74ed12ce500bbe2b07f3dc1e643439da60637b7" + sha256: "5c8b6c2d89a78f5a1cca70a73d9d5f86c701b36b42f9c9dac7bad592113c28e9" url: "https://pub.dev" source: hosted - version: "6.3.18" + version: "6.3.24" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: d80b3f567a617cb923546034cc94bfe44eb15f989fe670b37f26abdb9d939cb7 + sha256: "6b63f1441e4f653ae799166a72b50b1767321ecc263a57aadf825a7a2a5477d9" url: "https://pub.dev" source: hosted - version: "6.3.4" + version: "6.3.5" url_launcher_linux: dependency: transitive description: @@ -2664,10 +2608,10 @@ packages: dependency: transitive description: name: url_launcher_macos - sha256: c043a77d6600ac9c38300567f33ef12b0ef4f4783a2c1f00231d2b1941fea13f + sha256: "8262208506252a3ed4ff5c0dc1e973d2c0e0ef337d0a074d35634da5d44397c9" url: "https://pub.dev" source: hosted - version: "3.2.3" + version: "3.2.4" url_launcher_platform_interface: dependency: transitive description: @@ -2696,10 +2640,10 @@ packages: dependency: "direct main" description: name: uuid - sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff + sha256: a11b666489b1954e01d992f3d601b1804a33937b5a8fe677bd26b8a9f96f96e8 url: "https://pub.dev" source: hosted - version: "4.5.1" + version: "4.5.2" vector_graphics: dependency: transitive description: @@ -2768,10 +2712,10 @@ packages: dependency: transitive description: name: watcher - sha256: "5bf046f41320ac97a469d506261797f35254fa61c641741ef32dacda98b7d39c" + sha256: "592ab6e2892f67760543fb712ff0177f4ec76c031f02f5b4ff8d3fc5eb9fb61a" url: "https://pub.dev" source: hosted - version: "1.1.3" + version: "1.1.4" web: dependency: "direct overridden" description: @@ -2824,10 +2768,10 @@ packages: dependency: transitive description: name: win32 - sha256: "66814138c3562338d05613a6e368ed8cfb237ad6d64a9e9334be3f309acfca03" + sha256: d7cb55e04cd34096cd3a79b3330245f54cb96a370a1c27adb3c84b917de8b08e url: "https://pub.dev" source: hosted - version: "5.14.0" + version: "5.15.0" win32_registry: dependency: "direct main" description: @@ -2856,10 +2800,10 @@ packages: dependency: "direct dev" description: name: xml - sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 + sha256: "971043b3a0d3da28727e40ed3e0b5d18b742fa5a68665cca88e74b7876d5e025" url: "https://pub.dev" source: hosted - version: "6.5.0" + version: "6.6.1" yaml: dependency: transitive description: @@ -2872,10 +2816,10 @@ packages: dependency: "direct main" description: name: youtube_explode_dart - sha256: "9ff345caf8351c59eb1b7560837f761e08d2beaea3b4187637942715a31a6f58" + sha256: "947ba05e0c4f050743e480e7bca3575ff6427d86cc898c1a69f5e1d188cdc9e0" url: "https://pub.dev" source: hosted - version: "2.5.2" + version: "2.5.3" yt_dlp_dart: dependency: "direct main" description: @@ -2887,4 +2831,4 @@ packages: version: "1.0.0" sdks: dart: ">=3.9.0 <4.0.0" - flutter: ">=3.35.1" + flutter: ">=3.35.0" diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 87b34e37..f053614f 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -14,13 +14,11 @@ #include #include #include -#include #include #include #include #include #include -#include #include #include #include @@ -43,8 +41,6 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin")); FlutterTimezonePluginCApiRegisterWithRegistrar( registry->GetRegistrarForPlugin("FlutterTimezonePluginCApi")); - IrondashEngineContextPluginCApiRegisterWithRegistrar( - registry->GetRegistrarForPlugin("IrondashEngineContextPluginCApi")); LocalNotifierPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("LocalNotifierPlugin")); MediaKitLibsWindowsAudioPluginCApiRegisterWithRegistrar( @@ -55,8 +51,6 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("ScreenRetrieverWindowsPluginCApi")); Sqlite3FlutterLibsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("Sqlite3FlutterLibsPlugin")); - SuperNativeExtensionsPluginCApiRegisterWithRegistrar( - registry->GetRegistrarForPlugin("SuperNativeExtensionsPluginCApi")); SystemThemePluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("SystemThemePlugin")); TrayManagerPluginRegisterWithRegistrar( diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 798e47c8..e0d69e09 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -11,13 +11,11 @@ list(APPEND FLUTTER_PLUGIN_LIST flutter_inappwebview_windows flutter_secure_storage_windows flutter_timezone - irondash_engine_context local_notifier media_kit_libs_windows_audio permission_handler_windows screen_retriever_windows sqlite3_flutter_libs - super_native_extensions system_theme tray_manager url_launcher_windows