diff --git a/.env.example b/.env.example index 35c5d563..754bd163 100644 --- a/.env.example +++ b/.env.example @@ -1,17 +1,15 @@ -# The format: -# SPOTIFY_SECRETS=clintId1:clientSecret1,clientId2:clientSecret2 -SPOTIFY_SECRETS=$SPOTIFY_SECRETS +# Structure: client,secret:client,secret +SPOTIFY_SECRETS= -# 0 or 1 -# 0 = disable -# 1 = enable -ENABLE_UPDATE_CHECK=$ENABLE_UPDATE_CHECK +# Choice: true (enter: 1) or false (enter: 0) +ENABLE_UPDATE_CHECK= -LASTFM_API_KEY=$LASTFM_API_KEY -LASTFM_API_SECRET=$LASTFM_API_SECRET +LASTFM_API_KEY= +LASTFM_API_SECRET= -# Release channel. Can be: nightly, stable -RELEASE_CHANNEL=$RELEASE_CHANNEL +# Choice: stable or nightly +RELEASE_CHANNEL= -HIDE_DONATIONS=$HIDE_DONATIONS -DISABLE_SPOTIFY_IMAGES=$DISABLE_SPOTIFY_IMAGES +# Choice: true (enter: 1) or false (enter: 0) +HIDE_DONATIONS= +DISABLE_SPOTIFY_IMAGES= diff --git a/.metadata b/.metadata index 828f2c0a..7cf1daa7 100644 --- a/.metadata +++ b/.metadata @@ -4,8 +4,8 @@ # This file should be version controlled and should not be manually edited. version: - revision: "300451adae589accbece3490f4396f10bdf15e6e" - channel: "stable" + revision: "ea121f8859e4b13e47a8f845e4586164519588bc" + channel: "[user-branch]" project_type: app @@ -13,11 +13,26 @@ project_type: app migration: platforms: - platform: root - create_revision: 300451adae589accbece3490f4396f10bdf15e6e - base_revision: 300451adae589accbece3490f4396f10bdf15e6e + create_revision: ea121f8859e4b13e47a8f845e4586164519588bc + base_revision: ea121f8859e4b13e47a8f845e4586164519588bc + - platform: android + create_revision: ea121f8859e4b13e47a8f845e4586164519588bc + base_revision: ea121f8859e4b13e47a8f845e4586164519588bc + - platform: ios + create_revision: ea121f8859e4b13e47a8f845e4586164519588bc + base_revision: ea121f8859e4b13e47a8f845e4586164519588bc + - platform: linux + create_revision: ea121f8859e4b13e47a8f845e4586164519588bc + base_revision: ea121f8859e4b13e47a8f845e4586164519588bc + - platform: macos + create_revision: ea121f8859e4b13e47a8f845e4586164519588bc + base_revision: ea121f8859e4b13e47a8f845e4586164519588bc + - platform: web + create_revision: ea121f8859e4b13e47a8f845e4586164519588bc + base_revision: ea121f8859e4b13e47a8f845e4586164519588bc - platform: windows - create_revision: 300451adae589accbece3490f4396f10bdf15e6e - base_revision: 300451adae589accbece3490f4396f10bdf15e6e + create_revision: ea121f8859e4b13e47a8f845e4586164519588bc + base_revision: ea121f8859e4b13e47a8f845e4586164519588bc # User provided section diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts new file mode 100644 index 00000000..245df557 --- /dev/null +++ b/android/app/build.gradle.kts @@ -0,0 +1,44 @@ +plugins { + id("com.android.application") + id("kotlin-android") + // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. + id("dev.flutter.flutter-gradle-plugin") +} + +android { + namespace = "oss.krtirtho.spotube" + compileSdk = flutter.compileSdkVersion + ndkVersion = flutter.ndkVersion + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_11.toString() + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId = "oss.krtirtho.spotube" + // You can update the following values to match your application needs. + // For more information, see: https://flutter.dev/to/review-gradle-config. + minSdk = flutter.minSdkVersion + targetSdk = flutter.targetSdkVersion + versionCode = flutter.versionCode + versionName = flutter.versionName + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig = signingConfigs.getByName("debug") + } + } +} + +flutter { + source = "../.." +} diff --git a/android/build.gradle.kts b/android/build.gradle.kts new file mode 100644 index 00000000..89176ef4 --- /dev/null +++ b/android/build.gradle.kts @@ -0,0 +1,21 @@ +allprojects { + repositories { + google() + mavenCentral() + } +} + +val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +rootProject.layout.buildDirectory.value(newBuildDir) + +subprojects { + val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name) + project.layout.buildDirectory.value(newSubprojectBuildDir) +} +subprojects { + project.evaluationDependsOn(":app") +} + +tasks.register("clean") { + delete(rootProject.layout.buildDirectory) +} diff --git a/android/settings.gradle.kts b/android/settings.gradle.kts new file mode 100644 index 00000000..a439442c --- /dev/null +++ b/android/settings.gradle.kts @@ -0,0 +1,25 @@ +pluginManagement { + val flutterSdkPath = run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } + + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") + + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + +plugins { + id("dev.flutter.flutter-plugin-loader") version "1.0.0" + id("com.android.application") version "8.7.0" apply false + id("org.jetbrains.kotlin.android") version "1.8.22" apply false +} + +include(":app") diff --git a/assets/spotube-icon-rounded.png b/assets/spotube-icon-rounded.png new file mode 100644 index 00000000..88b4cf2f Binary files /dev/null and b/assets/spotube-icon-rounded.png differ diff --git a/assets/spotube-icon.png b/assets/spotube-icon.png new file mode 100644 index 00000000..c41baabf Binary files /dev/null and b/assets/spotube-icon.png differ diff --git a/assets/spotube-logo-foreground.jpg b/assets/spotube-logo-foreground.jpg deleted file mode 100644 index 0af774c9..00000000 Binary files a/assets/spotube-logo-foreground.jpg and /dev/null differ diff --git a/assets/spotube-logo-notWallpaper.png b/assets/spotube-logo-notWallpaper.png new file mode 100644 index 00000000..476dda29 Binary files /dev/null and b/assets/spotube-logo-notWallpaper.png differ diff --git a/assets/spotube-logo.png b/assets/spotube-logo-rounded.png similarity index 100% rename from assets/spotube-logo.png rename to assets/spotube-logo-rounded.png diff --git a/assets/spotube-logo.bmp b/assets/spotube-logo.bmp deleted file mode 100644 index c3503e85..00000000 Binary files a/assets/spotube-logo.bmp and /dev/null differ diff --git a/assets/spotube-logo.ico b/assets/spotube-logo.ico deleted file mode 100644 index 84906308..00000000 Binary files a/assets/spotube-logo.ico and /dev/null differ diff --git a/assets/spotube-logo.svg b/assets/spotube-logo.svg deleted file mode 100644 index 5cd88f8e..00000000 --- a/assets/spotube-logo.svg +++ /dev/null @@ -1,349 +0,0 @@ - - diff --git a/assets/spotube-nightly-logo-foreground.jpg b/assets/spotube-nightly-logo-foreground.jpg deleted file mode 100644 index a0c849b6..00000000 Binary files a/assets/spotube-nightly-logo-foreground.jpg and /dev/null differ diff --git a/assets/spotube-nightly-logo.png b/assets/spotube-nightly-logo.png deleted file mode 100644 index ea7a8b20..00000000 Binary files a/assets/spotube-nightly-logo.png and /dev/null differ diff --git a/assets/spotube-nightly-logo.svg b/assets/spotube-nightly-logo.svg deleted file mode 100644 index 7601108e..00000000 --- a/assets/spotube-nightly-logo.svg +++ /dev/null @@ -1,359 +0,0 @@ - - diff --git a/assets/spotube-nightly-logo_android12.png b/assets/spotube-nightly-logo_android12.png deleted file mode 100644 index 1a5bf4f1..00000000 Binary files a/assets/spotube-nightly-logo_android12.png and /dev/null differ diff --git a/assets/spotube-nightly-notWallpaper.png b/assets/spotube-nightly-notWallpaper.png new file mode 100644 index 00000000..61ef1c5d Binary files /dev/null and b/assets/spotube-nightly-notWallpaper.png differ diff --git a/assets/spotube-nightly-rounded.png b/assets/spotube-nightly-rounded.png new file mode 100644 index 00000000..d9168c5c Binary files /dev/null and b/assets/spotube-nightly-rounded.png differ diff --git a/assets/spotube-nightly.png b/assets/spotube-nightly.png new file mode 100644 index 00000000..2aca0632 Binary files /dev/null and b/assets/spotube-nightly.png differ diff --git a/assets/spotube-nightly.svg b/assets/spotube-nightly.svg new file mode 100644 index 00000000..de2bf370 --- /dev/null +++ b/assets/spotube-nightly.svg @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/spotube-tall-capsule.png b/assets/spotube-tall-capsule.png deleted file mode 100644 index 43fb8229..00000000 Binary files a/assets/spotube-tall-capsule.png and /dev/null differ diff --git a/assets/spotube-wide-capsule-large.png b/assets/spotube-wide-capsule-large.png deleted file mode 100644 index 09a93d83..00000000 Binary files a/assets/spotube-wide-capsule-large.png and /dev/null differ diff --git a/assets/spotube-wide-capsule-small.png b/assets/spotube-wide-capsule-small.png deleted file mode 100644 index 17566550..00000000 Binary files a/assets/spotube-wide-capsule-small.png and /dev/null differ diff --git a/assets/spotube_banner.png b/assets/spotube_banner.png deleted file mode 100644 index b2be4539..00000000 Binary files a/assets/spotube_banner.png and /dev/null differ diff --git a/ios/RunnerTests/RunnerTests.swift b/ios/RunnerTests/RunnerTests.swift new file mode 100644 index 00000000..86a7c3b1 --- /dev/null +++ b/ios/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Flutter +import UIKit +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/lib/collections/assets.gen.dart b/lib/collections/assets.gen.dart index 004001f2..0d010818 100644 --- a/lib/collections/assets.gen.dart +++ b/lib/collections/assets.gen.dart @@ -150,35 +150,27 @@ class Assets { AssetGenImage('assets/placeholder.png'); static const AssetGenImage spotubeHeroBanner = AssetGenImage('assets/spotube-hero-banner.png'); - static const AssetGenImage spotubeLogoForeground = - AssetGenImage('assets/spotube-logo-foreground.jpg'); + static const AssetGenImage spotubeIconRounded = + AssetGenImage('assets/spotube-icon-rounded.png'); + static const AssetGenImage spotubeIcon = + AssetGenImage('assets/spotube-icon.png'); static const AssetGenImage spotubeLogoMacos = AssetGenImage('assets/spotube-logo-macos.png'); - static const AssetGenImage spotubeLogoBmp = - AssetGenImage('assets/spotube-logo.bmp'); - static const String spotubeLogoIco = 'assets/spotube-logo.ico'; - static const AssetGenImage spotubeLogoPng = - AssetGenImage('assets/spotube-logo.png'); - static const String spotubeLogoSvg = 'assets/spotube-logo.svg'; + static const AssetGenImage spotubeLogoNotWallpaper = + AssetGenImage('assets/spotube-logo-notWallpaper.png'); + static const AssetGenImage spotubeLogoRounded = + AssetGenImage('assets/spotube-logo-rounded.png'); static const AssetGenImage spotubeLogoAndroid12 = AssetGenImage('assets/spotube-logo_android12.png'); - static const AssetGenImage spotubeNightlyLogoForeground = - AssetGenImage('assets/spotube-nightly-logo-foreground.jpg'); - static const AssetGenImage spotubeNightlyLogoPng = - AssetGenImage('assets/spotube-nightly-logo.png'); - static const String spotubeNightlyLogoSvg = 'assets/spotube-nightly-logo.svg'; - static const AssetGenImage spotubeNightlyLogoAndroid12 = - AssetGenImage('assets/spotube-nightly-logo_android12.png'); + static const AssetGenImage spotubeNightlyNotWallpaper = + AssetGenImage('assets/spotube-nightly-notWallpaper.png'); + static const AssetGenImage spotubeNightlyRounded = + AssetGenImage('assets/spotube-nightly-rounded.png'); + static const AssetGenImage spotubeNightlyPng = + AssetGenImage('assets/spotube-nightly.png'); + static const String spotubeNightlySvg = 'assets/spotube-nightly.svg'; static const AssetGenImage spotubeScreenshot = AssetGenImage('assets/spotube-screenshot.png'); - static const AssetGenImage spotubeTallCapsule = - AssetGenImage('assets/spotube-tall-capsule.png'); - static const AssetGenImage spotubeWideCapsuleLarge = - AssetGenImage('assets/spotube-wide-capsule-large.png'); - static const AssetGenImage spotubeWideCapsuleSmall = - AssetGenImage('assets/spotube-wide-capsule-small.png'); - static const AssetGenImage spotubeBanner = - AssetGenImage('assets/spotube_banner.png'); static const AssetGenImage success = AssetGenImage('assets/success.png'); static const $AssetsTutorialGen tutorial = $AssetsTutorialGen(); static const AssetGenImage userPlaceholder = @@ -196,22 +188,17 @@ class Assets { likedTracks, placeholder, spotubeHeroBanner, - spotubeLogoForeground, + spotubeIconRounded, + spotubeIcon, spotubeLogoMacos, - spotubeLogoBmp, - spotubeLogoIco, - spotubeLogoPng, - spotubeLogoSvg, + spotubeLogoNotWallpaper, + spotubeLogoRounded, spotubeLogoAndroid12, - spotubeNightlyLogoForeground, - spotubeNightlyLogoPng, - spotubeNightlyLogoSvg, - spotubeNightlyLogoAndroid12, + spotubeNightlyNotWallpaper, + spotubeNightlyRounded, + spotubeNightlyPng, + spotubeNightlySvg, spotubeScreenshot, - spotubeTallCapsule, - spotubeWideCapsuleLarge, - spotubeWideCapsuleSmall, - spotubeBanner, success, userPlaceholder ]; diff --git a/lib/collections/env.dart b/lib/collections/env.dart index feb2a2db..1d9d94e3 100644 --- a/lib/collections/env.dart +++ b/lib/collections/env.dart @@ -19,7 +19,7 @@ abstract class Env { @EnviedField(varName: 'LASTFM_API_SECRET') static final String lastFmApiSecret = _Env.lastFmApiSecret; - @EnviedField(varName: 'HIDE_DONATIONS', defaultValue: "0") + @EnviedField(varName: 'HIDE_DONATIONS', defaultValue: 0) static final int _hideDonations = _Env._hideDonations; static bool get hideDonations => _hideDonations == 1; @@ -32,23 +32,23 @@ abstract class Env { }; }).toList(); - @EnviedField(varName: 'ENABLE_UPDATE_CHECK', defaultValue: "1") + @EnviedField(varName: 'ENABLE_UPDATE_CHECK', defaultValue: 1) static final String _enableUpdateChecker = _Env._enableUpdateChecker; @EnviedField(varName: "RELEASE_CHANNEL", defaultValue: "nightly") static final String _releaseChannel = _Env._releaseChannel; - @EnviedField(varName: "DISABLE_SPOTIFY_IMAGES", defaultValue: "0") + @EnviedField(varName: "DISABLE_SPOTIFY_IMAGES", defaultValue: 0) static final String _disableSpotifyImages = _Env._disableSpotifyImages; - static bool get disableSpotifyImages => _disableSpotifyImages == "1"; + static bool get disableSpotifyImages => _disableSpotifyImages == 1; static ReleaseChannel get releaseChannel => _releaseChannel == "stable" ? ReleaseChannel.stable : ReleaseChannel.nightly; static bool get enableUpdateChecker => - kIsFlatpak || _enableUpdateChecker == "1"; + kIsFlatpak || _enableUpdateChecker == 1; static String discordAppId = "1176718791388975124"; } diff --git a/lib/models/connect/connect.freezed.dart b/lib/models/connect/connect.freezed.dart index 9103dd2b..088cfbd1 100644 --- a/lib/models/connect/connect.freezed.dart +++ b/lib/models/connect/connect.freezed.dart @@ -99,13 +99,8 @@ mixin _$WebSocketLoadEventData { required TResult orElse(), }) => throw _privateConstructorUsedError; - - /// Serializes this WebSocketLoadEventData to a JSON map. Map toJson() => throw _privateConstructorUsedError; - - /// Create a copy of WebSocketLoadEventData - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) $WebSocketLoadEventDataCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -132,8 +127,6 @@ 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({ @@ -178,8 +171,6 @@ 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({ @@ -256,14 +247,12 @@ class _$WebSocketLoadEventDataPlaylistImpl other.initialIndex == initialIndex)); } - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) @override int get hashCode => Object.hash(runtimeType, const DeepCollectionEquality().hash(_tracks), collection, initialIndex); - /// Create a copy of WebSocketLoadEventData - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) @override @pragma('vm:prefer-inline') _$$WebSocketLoadEventDataPlaylistImplCopyWith< @@ -383,11 +372,8 @@ abstract class WebSocketLoadEventDataPlaylist extends WebSocketLoadEventData { PlaylistSimple? get collection; @override int? get initialIndex; - - /// Create a copy of WebSocketLoadEventData - /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) _$$WebSocketLoadEventDataPlaylistImplCopyWith< _$WebSocketLoadEventDataPlaylistImpl> get copyWith => throw _privateConstructorUsedError; @@ -418,8 +404,6 @@ 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({ @@ -495,14 +479,12 @@ class _$WebSocketLoadEventDataAlbumImpl extends WebSocketLoadEventDataAlbum { other.initialIndex == initialIndex)); } - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) @override int get hashCode => Object.hash(runtimeType, const DeepCollectionEquality().hash(_tracks), collection, initialIndex); - /// Create a copy of WebSocketLoadEventData - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) @override @pragma('vm:prefer-inline') _$$WebSocketLoadEventDataAlbumImplCopyWith<_$WebSocketLoadEventDataAlbumImpl> @@ -621,11 +603,8 @@ abstract class WebSocketLoadEventDataAlbum extends WebSocketLoadEventData { AlbumSimple? get collection; @override int? get initialIndex; - - /// Create a copy of WebSocketLoadEventData - /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) _$$WebSocketLoadEventDataAlbumImplCopyWith<_$WebSocketLoadEventDataAlbumImpl> get copyWith => throw _privateConstructorUsedError; } diff --git a/lib/models/database/database.g.dart b/lib/models/database/database.g.dart index e0c91648..c30b85c8 100644 --- a/lib/models/database/database.g.dart +++ b/lib/models/database/database.g.dart @@ -5964,7 +5964,8 @@ final class $$PlaylistTableTableReferences extends BaseReferences<_$AppDatabase, db.audioPlayerStateTable.createAlias($_aliasNameGenerator( db.playlistTable.audioPlayerStateId, db.audioPlayerStateTable.id)); - $$AudioPlayerStateTableTableProcessedTableManager get audioPlayerStateId { + $$AudioPlayerStateTableTableProcessedTableManager? get audioPlayerStateId { + if ($_item.audioPlayerStateId == null) return null; final manager = $$AudioPlayerStateTableTableTableManager( $_db, $_db.audioPlayerStateTable) .filter((f) => f.id($_item.audioPlayerStateId!)); @@ -6290,7 +6291,8 @@ final class $$PlaylistMediaTableTableReferences extends BaseReferences< db.playlistTable.createAlias($_aliasNameGenerator( db.playlistMediaTable.playlistId, db.playlistTable.id)); - $$PlaylistTableTableProcessedTableManager get playlistId { + $$PlaylistTableTableProcessedTableManager? get playlistId { + if ($_item.playlistId == null) return null; final manager = $$PlaylistTableTableTableManager($_db, $_db.playlistTable) .filter((f) => f.id($_item.playlistId!)); final item = $_typedResult.readTableOrNull(_playlistIdTable($_db)); diff --git a/lib/models/spotify/home_feed.freezed.dart b/lib/models/spotify/home_feed.freezed.dart index 5076da29..c2bb2aba 100644 --- a/lib/models/spotify/home_feed.freezed.dart +++ b/lib/models/spotify/home_feed.freezed.dart @@ -29,12 +29,8 @@ mixin _$SpotifySectionPlaylist { String get owner => throw _privateConstructorUsedError; String get uri => throw _privateConstructorUsedError; - /// Serializes this SpotifySectionPlaylist to a JSON map. Map toJson() => throw _privateConstructorUsedError; - - /// Create a copy of SpotifySectionPlaylist - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) $SpotifySectionPlaylistCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -65,8 +61,6 @@ class _$SpotifySectionPlaylistCopyWithImpl<$Res, // ignore: unused_field final $Res Function($Val) _then; - /// Create a copy of SpotifySectionPlaylist - /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -134,8 +128,6 @@ class __$$SpotifySectionPlaylistImplCopyWithImpl<$Res> $Res Function(_$SpotifySectionPlaylistImpl) _then) : super(_value, _then); - /// Create a copy of SpotifySectionPlaylist - /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -229,14 +221,12 @@ class _$SpotifySectionPlaylistImpl extends _SpotifySectionPlaylist { (identical(other.uri, uri) || other.uri == uri)); } - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) @override int get hashCode => Object.hash(runtimeType, description, format, const DeepCollectionEquality().hash(_images), name, owner, uri); - /// Create a copy of SpotifySectionPlaylist - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) @override @pragma('vm:prefer-inline') _$$SpotifySectionPlaylistImplCopyWith<_$SpotifySectionPlaylistImpl> @@ -276,11 +266,8 @@ abstract class _SpotifySectionPlaylist extends SpotifySectionPlaylist { String get owner; @override String get uri; - - /// Create a copy of SpotifySectionPlaylist - /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) _$$SpotifySectionPlaylistImplCopyWith<_$SpotifySectionPlaylistImpl> get copyWith => throw _privateConstructorUsedError; } @@ -296,12 +283,8 @@ mixin _$SpotifySectionArtist { List get images => throw _privateConstructorUsedError; - /// Serializes this SpotifySectionArtist to a JSON map. Map toJson() => throw _privateConstructorUsedError; - - /// Create a copy of SpotifySectionArtist - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) $SpotifySectionArtistCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -326,8 +309,6 @@ class _$SpotifySectionArtistCopyWithImpl<$Res, // ignore: unused_field final $Res Function($Val) _then; - /// Create a copy of SpotifySectionArtist - /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -371,8 +352,6 @@ class __$$SpotifySectionArtistImplCopyWithImpl<$Res> $Res Function(_$SpotifySectionArtistImpl) _then) : super(_value, _then); - /// Create a copy of SpotifySectionArtist - /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -437,14 +416,12 @@ class _$SpotifySectionArtistImpl extends _SpotifySectionArtist { const DeepCollectionEquality().equals(other._images, _images)); } - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) @override int get hashCode => Object.hash( runtimeType, name, uri, const DeepCollectionEquality().hash(_images)); - /// Create a copy of SpotifySectionArtist - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) @override @pragma('vm:prefer-inline') _$$SpotifySectionArtistImplCopyWith<_$SpotifySectionArtistImpl> @@ -477,11 +454,8 @@ abstract class _SpotifySectionArtist extends SpotifySectionArtist { String get uri; @override List get images; - - /// Create a copy of SpotifySectionArtist - /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) _$$SpotifySectionArtistImplCopyWith<_$SpotifySectionArtistImpl> get copyWith => throw _privateConstructorUsedError; } @@ -499,12 +473,8 @@ mixin _$SpotifySectionAlbum { String get name => throw _privateConstructorUsedError; String get uri => throw _privateConstructorUsedError; - /// Serializes this SpotifySectionAlbum to a JSON map. Map toJson() => throw _privateConstructorUsedError; - - /// Create a copy of SpotifySectionAlbum - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) $SpotifySectionAlbumCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -532,8 +502,6 @@ class _$SpotifySectionAlbumCopyWithImpl<$Res, $Val extends SpotifySectionAlbum> // ignore: unused_field final $Res Function($Val) _then; - /// Create a copy of SpotifySectionAlbum - /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -586,8 +554,6 @@ class __$$SpotifySectionAlbumImplCopyWithImpl<$Res> $Res Function(_$SpotifySectionAlbumImpl) _then) : super(_value, _then); - /// Create a copy of SpotifySectionAlbum - /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -669,7 +635,7 @@ class _$SpotifySectionAlbumImpl extends _SpotifySectionAlbum { (identical(other.uri, uri) || other.uri == uri)); } - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) @override int get hashCode => Object.hash( runtimeType, @@ -678,9 +644,7 @@ class _$SpotifySectionAlbumImpl extends _SpotifySectionAlbum { name, uri); - /// Create a copy of SpotifySectionAlbum - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) @override @pragma('vm:prefer-inline') _$$SpotifySectionAlbumImplCopyWith<_$SpotifySectionAlbumImpl> get copyWith => @@ -714,11 +678,8 @@ abstract class _SpotifySectionAlbum extends SpotifySectionAlbum { String get name; @override String get uri; - - /// Create a copy of SpotifySectionAlbum - /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) _$$SpotifySectionAlbumImplCopyWith<_$SpotifySectionAlbumImpl> get copyWith => throw _privateConstructorUsedError; } @@ -733,12 +694,8 @@ mixin _$SpotifySectionAlbumArtist { String get name => throw _privateConstructorUsedError; String get uri => throw _privateConstructorUsedError; - /// Serializes this SpotifySectionAlbumArtist to a JSON map. Map toJson() => throw _privateConstructorUsedError; - - /// Create a copy of SpotifySectionAlbumArtist - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) $SpotifySectionAlbumArtistCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -763,8 +720,6 @@ class _$SpotifySectionAlbumArtistCopyWithImpl<$Res, // ignore: unused_field final $Res Function($Val) _then; - /// Create a copy of SpotifySectionAlbumArtist - /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -806,8 +761,6 @@ class __$$SpotifySectionAlbumArtistImplCopyWithImpl<$Res> $Res Function(_$SpotifySectionAlbumArtistImpl) _then) : super(_value, _then); - /// Create a copy of SpotifySectionAlbumArtist - /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -855,13 +808,11 @@ class _$SpotifySectionAlbumArtistImpl extends _SpotifySectionAlbumArtist { (identical(other.uri, uri) || other.uri == uri)); } - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) @override int get hashCode => Object.hash(runtimeType, name, uri); - /// Create a copy of SpotifySectionAlbumArtist - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) @override @pragma('vm:prefer-inline') _$$SpotifySectionAlbumArtistImplCopyWith<_$SpotifySectionAlbumArtistImpl> @@ -889,11 +840,8 @@ abstract class _SpotifySectionAlbumArtist extends SpotifySectionAlbumArtist { String get name; @override String get uri; - - /// Create a copy of SpotifySectionAlbumArtist - /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) _$$SpotifySectionAlbumArtistImplCopyWith<_$SpotifySectionAlbumArtistImpl> get copyWith => throw _privateConstructorUsedError; } @@ -909,12 +857,8 @@ mixin _$SpotifySectionItemImage { String get url => throw _privateConstructorUsedError; num? get width => throw _privateConstructorUsedError; - /// Serializes this SpotifySectionItemImage to a JSON map. Map toJson() => throw _privateConstructorUsedError; - - /// Create a copy of SpotifySectionItemImage - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) $SpotifySectionItemImageCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -939,8 +883,6 @@ class _$SpotifySectionItemImageCopyWithImpl<$Res, // ignore: unused_field final $Res Function($Val) _then; - /// Create a copy of SpotifySectionItemImage - /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -987,8 +929,6 @@ class __$$SpotifySectionItemImageImplCopyWithImpl<$Res> $Res Function(_$SpotifySectionItemImageImpl) _then) : super(_value, _then); - /// Create a copy of SpotifySectionItemImage - /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -1045,13 +985,11 @@ class _$SpotifySectionItemImageImpl extends _SpotifySectionItemImage { (identical(other.width, width) || other.width == width)); } - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) @override int get hashCode => Object.hash(runtimeType, height, url, width); - /// Create a copy of SpotifySectionItemImage - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) @override @pragma('vm:prefer-inline') _$$SpotifySectionItemImageImplCopyWith<_$SpotifySectionItemImageImpl> @@ -1082,11 +1020,8 @@ abstract class _SpotifySectionItemImage extends SpotifySectionItemImage { String get url; @override num? get width; - - /// Create a copy of SpotifySectionItemImage - /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) _$$SpotifySectionItemImageImplCopyWith<_$SpotifySectionItemImageImpl> get copyWith => throw _privateConstructorUsedError; } @@ -1103,12 +1038,8 @@ mixin _$SpotifyHomeFeedSectionItem { SpotifySectionArtist? get artist => throw _privateConstructorUsedError; SpotifySectionAlbum? get album => throw _privateConstructorUsedError; - /// Serializes this SpotifyHomeFeedSectionItem to a JSON map. Map toJson() => throw _privateConstructorUsedError; - - /// Create a copy of SpotifyHomeFeedSectionItem - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) $SpotifyHomeFeedSectionItemCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -1142,8 +1073,6 @@ class _$SpotifyHomeFeedSectionItemCopyWithImpl<$Res, // ignore: unused_field final $Res Function($Val) _then; - /// Create a copy of SpotifyHomeFeedSectionItem - /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -1172,8 +1101,6 @@ class _$SpotifyHomeFeedSectionItemCopyWithImpl<$Res, ) as $Val); } - /// Create a copy of SpotifyHomeFeedSectionItem - /// with the given fields replaced by the non-null parameter values. @override @pragma('vm:prefer-inline') $SpotifySectionPlaylistCopyWith<$Res>? get playlist { @@ -1186,8 +1113,6 @@ class _$SpotifyHomeFeedSectionItemCopyWithImpl<$Res, }); } - /// Create a copy of SpotifyHomeFeedSectionItem - /// with the given fields replaced by the non-null parameter values. @override @pragma('vm:prefer-inline') $SpotifySectionArtistCopyWith<$Res>? get artist { @@ -1200,8 +1125,6 @@ class _$SpotifyHomeFeedSectionItemCopyWithImpl<$Res, }); } - /// Create a copy of SpotifyHomeFeedSectionItem - /// with the given fields replaced by the non-null parameter values. @override @pragma('vm:prefer-inline') $SpotifySectionAlbumCopyWith<$Res>? get album { @@ -1248,8 +1171,6 @@ class __$$SpotifyHomeFeedSectionItemImplCopyWithImpl<$Res> $Res Function(_$SpotifyHomeFeedSectionItemImpl) _then) : super(_value, _then); - /// Create a copy of SpotifyHomeFeedSectionItem - /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -1316,14 +1237,12 @@ class _$SpotifyHomeFeedSectionItemImpl implements _SpotifyHomeFeedSectionItem { (identical(other.album, album) || other.album == album)); } - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) @override int get hashCode => Object.hash(runtimeType, typename, playlist, artist, album); - /// Create a copy of SpotifyHomeFeedSectionItem - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) @override @pragma('vm:prefer-inline') _$$SpotifyHomeFeedSectionItemImplCopyWith<_$SpotifyHomeFeedSectionItemImpl> @@ -1357,11 +1276,8 @@ abstract class _SpotifyHomeFeedSectionItem SpotifySectionArtist? get artist; @override SpotifySectionAlbum? get album; - - /// Create a copy of SpotifyHomeFeedSectionItem - /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) _$$SpotifyHomeFeedSectionItemImplCopyWith<_$SpotifyHomeFeedSectionItemImpl> get copyWith => throw _privateConstructorUsedError; } @@ -1379,12 +1295,8 @@ mixin _$SpotifyHomeFeedSection { List get items => throw _privateConstructorUsedError; - /// Serializes this SpotifyHomeFeedSection to a JSON map. Map toJson() => throw _privateConstructorUsedError; - - /// Create a copy of SpotifyHomeFeedSection - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) $SpotifyHomeFeedSectionCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -1413,8 +1325,6 @@ class _$SpotifyHomeFeedSectionCopyWithImpl<$Res, // ignore: unused_field final $Res Function($Val) _then; - /// Create a copy of SpotifyHomeFeedSection - /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -1470,8 +1380,6 @@ class __$$SpotifyHomeFeedSectionImplCopyWithImpl<$Res> $Res Function(_$SpotifyHomeFeedSectionImpl) _then) : super(_value, _then); - /// Create a copy of SpotifyHomeFeedSection - /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -1545,14 +1453,12 @@ class _$SpotifyHomeFeedSectionImpl implements _SpotifyHomeFeedSection { const DeepCollectionEquality().equals(other._items, _items)); } - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) @override int get hashCode => Object.hash(runtimeType, typename, title, uri, const DeepCollectionEquality().hash(_items)); - /// Create a copy of SpotifyHomeFeedSection - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) @override @pragma('vm:prefer-inline') _$$SpotifyHomeFeedSectionImplCopyWith<_$SpotifyHomeFeedSectionImpl> @@ -1586,11 +1492,8 @@ abstract class _SpotifyHomeFeedSection implements SpotifyHomeFeedSection { String get uri; @override List get items; - - /// Create a copy of SpotifyHomeFeedSection - /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) _$$SpotifyHomeFeedSectionImplCopyWith<_$SpotifyHomeFeedSectionImpl> get copyWith => throw _privateConstructorUsedError; } @@ -1605,12 +1508,8 @@ mixin _$SpotifyHomeFeed { List get sections => throw _privateConstructorUsedError; - /// Serializes this SpotifyHomeFeed to a JSON map. Map toJson() => throw _privateConstructorUsedError; - - /// Create a copy of SpotifyHomeFeed - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) $SpotifyHomeFeedCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -1634,8 +1533,6 @@ class _$SpotifyHomeFeedCopyWithImpl<$Res, $Val extends SpotifyHomeFeed> // ignore: unused_field final $Res Function($Val) _then; - /// Create a copy of SpotifyHomeFeed - /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -1674,8 +1571,6 @@ class __$$SpotifyHomeFeedImplCopyWithImpl<$Res> _$SpotifyHomeFeedImpl _value, $Res Function(_$SpotifyHomeFeedImpl) _then) : super(_value, _then); - /// Create a copy of SpotifyHomeFeed - /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -1731,14 +1626,12 @@ class _$SpotifyHomeFeedImpl implements _SpotifyHomeFeed { const DeepCollectionEquality().equals(other._sections, _sections)); } - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) @override int get hashCode => Object.hash( runtimeType, greeting, const DeepCollectionEquality().hash(_sections)); - /// Create a copy of SpotifyHomeFeed - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) @override @pragma('vm:prefer-inline') _$$SpotifyHomeFeedImplCopyWith<_$SpotifyHomeFeedImpl> get copyWith => @@ -1766,11 +1659,8 @@ abstract class _SpotifyHomeFeed implements SpotifyHomeFeed { String get greeting; @override List get sections; - - /// Create a copy of SpotifyHomeFeed - /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) _$$SpotifyHomeFeedImplCopyWith<_$SpotifyHomeFeedImpl> get copyWith => throw _privateConstructorUsedError; } diff --git a/lib/models/spotify/recommendation_seeds.freezed.dart b/lib/models/spotify/recommendation_seeds.freezed.dart index c55a4134..adf4aab8 100644 --- a/lib/models/spotify/recommendation_seeds.freezed.dart +++ b/lib/models/spotify/recommendation_seeds.freezed.dart @@ -24,9 +24,7 @@ mixin _$GeneratePlaylistProviderInput { RecommendationSeeds? get min => throw _privateConstructorUsedError; RecommendationSeeds? get target => throw _privateConstructorUsedError; - /// Create a copy of GeneratePlaylistProviderInput - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) $GeneratePlaylistProviderInputCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -64,8 +62,6 @@ class _$GeneratePlaylistProviderInputCopyWithImpl<$Res, // ignore: unused_field final $Res Function($Val) _then; - /// Create a copy of GeneratePlaylistProviderInput - /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -109,8 +105,6 @@ class _$GeneratePlaylistProviderInputCopyWithImpl<$Res, ) as $Val); } - /// Create a copy of GeneratePlaylistProviderInput - /// with the given fields replaced by the non-null parameter values. @override @pragma('vm:prefer-inline') $RecommendationSeedsCopyWith<$Res>? get max { @@ -123,8 +117,6 @@ class _$GeneratePlaylistProviderInputCopyWithImpl<$Res, }); } - /// Create a copy of GeneratePlaylistProviderInput - /// with the given fields replaced by the non-null parameter values. @override @pragma('vm:prefer-inline') $RecommendationSeedsCopyWith<$Res>? get min { @@ -137,8 +129,6 @@ class _$GeneratePlaylistProviderInputCopyWithImpl<$Res, }); } - /// Create a copy of GeneratePlaylistProviderInput - /// with the given fields replaced by the non-null parameter values. @override @pragma('vm:prefer-inline') $RecommendationSeedsCopyWith<$Res>? get target { @@ -188,8 +178,6 @@ class __$$GeneratePlaylistProviderInputImplCopyWithImpl<$Res> $Res Function(_$GeneratePlaylistProviderInputImpl) _then) : super(_value, _then); - /// Create a copy of GeneratePlaylistProviderInput - /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -295,9 +283,7 @@ class _$GeneratePlaylistProviderInputImpl min, target); - /// Create a copy of GeneratePlaylistProviderInput - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) @override @pragma('vm:prefer-inline') _$$GeneratePlaylistProviderInputImplCopyWith< @@ -331,11 +317,8 @@ abstract class _GeneratePlaylistProviderInput RecommendationSeeds? get min; @override RecommendationSeeds? get target; - - /// Create a copy of GeneratePlaylistProviderInput - /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) _$$GeneratePlaylistProviderInputImplCopyWith< _$GeneratePlaylistProviderInputImpl> get copyWith => throw _privateConstructorUsedError; @@ -364,12 +347,8 @@ mixin _$RecommendationSeeds { num? get timeSignature => throw _privateConstructorUsedError; num? get valence => throw _privateConstructorUsedError; - /// Serializes this RecommendationSeeds to a JSON map. Map toJson() => throw _privateConstructorUsedError; - - /// Create a copy of RecommendationSeeds - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) $RecommendationSeedsCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -407,8 +386,6 @@ class _$RecommendationSeedsCopyWithImpl<$Res, $Val extends RecommendationSeeds> // ignore: unused_field final $Res Function($Val) _then; - /// Create a copy of RecommendationSeeds - /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -521,8 +498,6 @@ class __$$RecommendationSeedsImplCopyWithImpl<$Res> $Res Function(_$RecommendationSeedsImpl) _then) : super(_value, _then); - /// Create a copy of RecommendationSeeds - /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -690,7 +665,7 @@ class _$RecommendationSeedsImpl implements _RecommendationSeeds { (identical(other.valence, valence) || other.valence == valence)); } - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) @override int get hashCode => Object.hash( runtimeType, @@ -709,9 +684,7 @@ class _$RecommendationSeedsImpl implements _RecommendationSeeds { timeSignature, valence); - /// Create a copy of RecommendationSeeds - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) @override @pragma('vm:prefer-inline') _$$RecommendationSeedsImplCopyWith<_$RecommendationSeedsImpl> get copyWith => @@ -776,11 +749,8 @@ abstract class _RecommendationSeeds implements RecommendationSeeds { num? get timeSignature; @override num? get valence; - - /// Create a copy of RecommendationSeeds - /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) _$$RecommendationSeedsImplCopyWith<_$RecommendationSeedsImpl> get copyWith => throw _privateConstructorUsedError; } diff --git a/lib/modules/root/sidebar/sidebar.dart b/lib/modules/root/sidebar/sidebar.dart index 743b339b..053e9003 100644 --- a/lib/modules/root/sidebar/sidebar.dart +++ b/lib/modules/root/sidebar/sidebar.dart @@ -26,7 +26,7 @@ class Sidebar extends HookConsumerWidget { color: Colors.black, borderRadius: BorderRadius.circular(50), ), - child: Assets.spotubeLogoPng.image(height: 50), + child: Assets.spotubeLogoNotWallpaper.image(height: 50), ); } diff --git a/lib/pages/getting_started/sections/greeting.dart b/lib/pages/getting_started/sections/greeting.dart index 4b9c0a89..ae280905 100644 --- a/lib/pages/getting_started/sections/greeting.dart +++ b/lib/pages/getting_started/sections/greeting.dart @@ -17,7 +17,7 @@ class GettingStartedPageGreetingSection extends HookConsumerWidget { child: Column( mainAxisSize: MainAxisSize.min, children: [ - Assets.spotubeLogoPng.image(height: 200), + Assets.spotubeLogoNotWallpaper.image(height: 200), const Gap(24), const Text("Spotube").semiBold().h4(), const Gap(4), diff --git a/lib/pages/home/home.dart b/lib/pages/home/home.dart index 9ca71c04..f4bb9b6d 100644 --- a/lib/pages/home/home.dart +++ b/lib/pages/home/home.dart @@ -45,7 +45,7 @@ class HomePage extends HookConsumerWidget { if (mediaQuery.smAndDown || layoutMode == LayoutMode.compact) SliverAppBar( floating: true, - title: Assets.spotubeLogoPng.image(height: 45), + title: Assets.spotubeLogoNotWallpaper.image(height: 45), backgroundColor: context.theme.colorScheme.background, foregroundColor: context.theme.colorScheme.foreground, actions: [ diff --git a/lib/pages/settings/about.dart b/lib/pages/settings/about.dart index 27775f3c..1f2ccd24 100644 --- a/lib/pages/settings/about.dart +++ b/lib/pages/settings/about.dart @@ -45,7 +45,7 @@ class AboutSpotubePage extends HookConsumerWidget { padding: const EdgeInsets.symmetric(horizontal: 16.0), child: Column( children: [ - Assets.spotubeLogoPng.image( + Assets.spotubeLogoNotWallpaper.image( height: 200, width: 200, ), diff --git a/lib/services/song_link/song_link.freezed.dart b/lib/services/song_link/song_link.freezed.dart index c704cde3..0a1af8a9 100644 --- a/lib/services/song_link/song_link.freezed.dart +++ b/lib/services/song_link/song_link.freezed.dart @@ -30,12 +30,8 @@ mixin _$SongLink { String? get nativeAppUriMobile => throw _privateConstructorUsedError; String? get nativeAppUriDesktop => throw _privateConstructorUsedError; - /// Serializes this SongLink to a JSON map. Map toJson() => throw _privateConstructorUsedError; - - /// Create a copy of SongLink - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) $SongLinkCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -67,8 +63,6 @@ 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({ @@ -151,8 +145,6 @@ 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({ @@ -269,14 +261,12 @@ class _$SongLinkImpl implements _SongLink { other.nativeAppUriDesktop == nativeAppUriDesktop)); } - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) @override int get hashCode => Object.hash(runtimeType, displayName, linkId, platform, show, uniqueId, country, url, nativeAppUriMobile, nativeAppUriDesktop); - /// Create a copy of SongLink - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) @override @pragma('vm:prefer-inline') _$$SongLinkImplCopyWith<_$SongLinkImpl> get copyWith => @@ -323,11 +313,8 @@ 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(includeFromJson: false, includeToJson: false) + @JsonKey(ignore: true) _$$SongLinkImplCopyWith<_$SongLinkImpl> get copyWith => throw _privateConstructorUsedError; } diff --git a/linux/CMakeLists.txt b/linux/CMakeLists.txt index 194ef566..862c586f 100644 --- a/linux/CMakeLists.txt +++ b/linux/CMakeLists.txt @@ -1,11 +1,19 @@ -cmake_minimum_required(VERSION 3.10) +# Project-level configuration. +cmake_minimum_required(VERSION 3.13) project(runner LANGUAGES CXX) +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. set(BINARY_NAME "spotube") +# The unique GTK application identifier for this application. See: +# https://wiki.gnome.org/HowDoI/ChooseApplicationID set(APPLICATION_ID "oss.krtirtho.spotube") +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. cmake_policy(SET CMP0063 NEW) +# Load bundled libraries from the lib/ directory relative to the binary. set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") # Root filesystem for cross-building. @@ -18,7 +26,7 @@ if(FLUTTER_TARGET_PLATFORM_SYSROOT) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) endif() -# Configure build options. +# Define build configuration options. if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Flutter build mode" FORCE) @@ -27,35 +35,31 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) endif() # Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. function(APPLY_STANDARD_SETTINGS TARGET) target_compile_features(${TARGET} PUBLIC cxx_std_14) target_compile_options(${TARGET} PRIVATE -Wall -Werror) target_compile_options(${TARGET} PRIVATE "$<$>:-O3>") target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>") - target_compile_options(${TARGET} PRIVATE -Wno-error=deprecated-declarations) endfunction() -set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") - # Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") add_subdirectory(${FLUTTER_MANAGED_DIR}) # System-level dependencies. find_package(PkgConfig REQUIRED) pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) -add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") +# Application build; see runner/CMakeLists.txt. +add_subdirectory("runner") -# Application build -add_executable(${BINARY_NAME} - "main.cc" - "my_application.cc" - "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" -) -apply_standard_settings(${BINARY_NAME}) -target_link_libraries(${BINARY_NAME} PRIVATE flutter) -target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) +# Run the Flutter tool portions of the build. This must not be removed. add_dependencies(${BINARY_NAME} flutter_assemble) + # Only the install-generated bundle's copy of the executable will launch # correctly, since the resources must in the right relative locations. To avoid # people trying to run the unbundled copy, put it in a subdirectory instead of @@ -65,12 +69,11 @@ set_target_properties(${BINARY_NAME} RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run" ) + # Generated plugin build rules, which manage building the plugins and adding # them to the application. include(flutter/generated_plugins.cmake) -target_link_libraries(${BINARY_NAME} PRIVATE ${MIMALLOC_LIB}) - # === Installation === # By default, "installing" just makes a relocatable bundle in the build @@ -97,11 +100,17 @@ install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR} install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" COMPONENT Runtime) -if(PLUGIN_BUNDLED_LIBRARIES) - install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" +foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES}) + install(FILES "${bundled_library}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" COMPONENT Runtime) -endif() +endforeach(bundled_library) + +# Copy the native assets provided by the build.dart from all packages. +set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/linux/") +install(DIRECTORY "${NATIVE_ASSETS_DIR}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) # Fully re-copy the assets directory on each build to avoid having stale files # from a previous install. diff --git a/linux/com.github.KRTirtho.Spotube.appdata.xml b/linux/com.github.KRTirtho.Spotube.appdata.xml deleted file mode 100644 index f30d360b..00000000 --- a/linux/com.github.KRTirtho.Spotube.appdata.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - com.github.KRTirtho.Spotube - Spotube - - Freedom of music - - CC0-1.0 - BSD-4-Clause - - pointing - keyboard - touch - - Kingkor Roy Tirtho - https://github.com/krtirtho/spotube/issues - https://spotube.krtirtho.dev - https://opencollective.com/spotube - -

Open source Spotify client that doesn't require Premium nor uses Electron! Available for - both desktop & mobile!

-

Following are the features that currently spotube offers:

-
    -
  • 🚫 No ads, thanks to the use of public & free Spotify and YT Music APIsΒΉ
  • -
  • ⬇️ Downloadable tracks
  • -
  • πŸ–₯️ πŸ“± Cross-platform support
  • -
  • πŸͺΆ Small size & less data usage
  • -
  • πŸ•΅οΈ Anonymous/guest login
  • -
  • πŸ•’ Time synced lyrics
  • -
  • βœ‹ No telemetry, diagnostics or user data collection
  • -
  • πŸš€ Native performance
  • -
  • πŸ“– Open source/libre software
  • -
  • πŸ”‰ Playback control is done locally, not on the server
  • -
-
- - - - https://rawcdn.githack.com/KRTirtho/spotube/refs/heads/master/assets/spotube-screenshot.png - - Spotube screenshot - - - com.github.KRTirtho.Spotube.desktop - %{{APPDATA_RELEASE}}% - - - - - - - - - - - - - - - - - - krtirtho@gmail.com -
\ No newline at end of file diff --git a/linux/flutter/CMakeLists.txt b/linux/flutter/CMakeLists.txt index 33fd5801..d5bd0164 100644 --- a/linux/flutter/CMakeLists.txt +++ b/linux/flutter/CMakeLists.txt @@ -1,3 +1,4 @@ +# This file controls Flutter-level build steps. It should not be edited. cmake_minimum_required(VERSION 3.10) set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") diff --git a/linux/packaging/appimage/make_config.yaml b/linux/packaging/appimage/make_config.yaml deleted file mode 100644 index c7332ea2..00000000 --- a/linux/packaging/appimage/make_config.yaml +++ /dev/null @@ -1,16 +0,0 @@ -display_name: Spotube -icon: assets/spotube-logo.png - -keywords: - - Music - - Spotify - - Media - - Streaming - - YouTube - -generic_name: Music Streaming Application -categories: - - Music - -supported_mime_type: - - x-scheme-handler/spotify diff --git a/linux/packaging/deb/make_config.yaml b/linux/packaging/deb/make_config.yaml deleted file mode 100644 index 4528a136..00000000 --- a/linux/packaging/deb/make_config.yaml +++ /dev/null @@ -1,47 +0,0 @@ -display_name: Spotube -package_name: spotube - -maintainer: - name: Kingkor Roy Tirtho - email: krtirtho@gmail.com - -priority: optional -section: x11 -installed_size: 24400 - -dependencies: - - mpv - - libappindicator3-1 | libayatana-appindicator3-1 - - gir1.2-appindicator3-0.1 | gir1.2-ayatanaappindicator3-0.1 - - libsecret-1-0 - - libnotify-bin - - libjsoncpp25 - - libmpv1 | libmpv2 - - xdg-user-dirs - - avahi-daemon - - avahi-discover - - avahi-utils - - libnss-mdns - - mdns-scan - - libwebkit2gtk-4.1-0 | libwebkit2gtk-4.0-0 - - libsoup-3.0-0 | libsoup-2.4-0 - -suggested_dependencies: - - yt-dlp - -essential: false -icon: assets/spotube-logo.png - -keywords: - - Music - - Spotify - - Media - - Streaming - - YouTube - -generic_name: Music Streaming Application -categories: - - Music - -supported_mime_type: - - x-scheme-handler/spotify diff --git a/linux/packaging/rpm/make_config.yaml b/linux/packaging/rpm/make_config.yaml deleted file mode 100644 index 3d4a3b7e..00000000 --- a/linux/packaging/rpm/make_config.yaml +++ /dev/null @@ -1,38 +0,0 @@ -icon: assets/spotube-logo.png -summary: Lightweight cross-platform Spotify desktop client -group: Applications/Multimedia -vendor: Kingkor Roy Tirtho -packager: Kingkor Roy Tirtho -packagerEmail: krtirtho@gmail.com -license: BSD-4-Clause -url: https://github.com/KRTirtho/spotube -requires: - - mpv - - libappindicator - - jsoncpp - - libsecret - - libnotify - - xdg-user-dirs - - avahi - - mdns-scan - - nss-mdns - - webkit2gtk4.1 - - libsoup3 - -display_name: Spotube - -keywords: - - Music - - Spotify - - Media - - Streaming - - YouTube - -generic_name: Music Streaming Application -categories: - - Music - -startup_notify: true - -supported_mime_type: - - x-scheme-handler/spotify diff --git a/linux/runner/CMakeLists.txt b/linux/runner/CMakeLists.txt new file mode 100644 index 00000000..e97dabc7 --- /dev/null +++ b/linux/runner/CMakeLists.txt @@ -0,0 +1,26 @@ +cmake_minimum_required(VERSION 3.13) +project(runner LANGUAGES CXX) + +# Define the application target. To change its name, change BINARY_NAME in the +# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer +# work. +# +# Any new source files that you add to the application should be added here. +add_executable(${BINARY_NAME} + "main.cc" + "my_application.cc" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Add preprocessor definitions for the application ID. +add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") + +# Add dependency libraries. Add any application-specific dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter) +target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) + +target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") diff --git a/linux/main.cc b/linux/runner/main.cc similarity index 100% rename from linux/main.cc rename to linux/runner/main.cc diff --git a/linux/my_application.cc b/linux/runner/my_application.cc similarity index 65% rename from linux/my_application.cc rename to linux/runner/my_application.cc index 0aa4d905..c0649892 100644 --- a/linux/my_application.cc +++ b/linux/runner/my_application.cc @@ -17,13 +17,6 @@ G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); - - GList* windows = gtk_application_get_windows(GTK_APPLICATION(application)); - if (windows) { - gtk_window_present(GTK_WINDOW(windows->data)); - return; - } - GtkWindow* window = GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); @@ -58,8 +51,7 @@ static void my_application_activate(GApplication* application) { gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); - fl_dart_project_set_dart_entrypoint_arguments( - project, self->dart_entrypoint_arguments); + fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); gtk_widget_show(GTK_WIDGET(view)); @@ -71,24 +63,40 @@ static void my_application_activate(GApplication* application) { } // Implements GApplication::local_command_line. -static gboolean my_application_local_command_line(GApplication* application, - gchar*** arguments, - int* exit_status) { +static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) { MyApplication* self = MY_APPLICATION(application); // Strip out the first argument as it is the binary name. self->dart_entrypoint_arguments = g_strdupv(*arguments + 1); g_autoptr(GError) error = nullptr; if (!g_application_register(application, nullptr, &error)) { - g_warning("Failed to register: %s", error->message); - *exit_status = 1; - return TRUE; + g_warning("Failed to register: %s", error->message); + *exit_status = 1; + return TRUE; } g_application_activate(application); *exit_status = 0; - return FALSE; + return TRUE; +} + +// Implements GApplication::startup. +static void my_application_startup(GApplication* application) { + //MyApplication* self = MY_APPLICATION(object); + + // Perform any actions required at application startup. + + G_APPLICATION_CLASS(my_application_parent_class)->startup(application); +} + +// Implements GApplication::shutdown. +static void my_application_shutdown(GApplication* application) { + //MyApplication* self = MY_APPLICATION(object); + + // Perform any actions required at application shutdown. + + G_APPLICATION_CLASS(my_application_parent_class)->shutdown(application); } // Implements GObject::dispose. @@ -100,31 +108,23 @@ static void my_application_dispose(GObject* object) { static void my_application_class_init(MyApplicationClass* klass) { G_APPLICATION_CLASS(klass)->activate = my_application_activate; - G_APPLICATION_CLASS(klass)->local_command_line = - my_application_local_command_line; + G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line; + G_APPLICATION_CLASS(klass)->startup = my_application_startup; + G_APPLICATION_CLASS(klass)->shutdown = my_application_shutdown; G_OBJECT_CLASS(klass)->dispose = my_application_dispose; } static void my_application_init(MyApplication* self) {} -bool is_flatpak(void) { - if (getenv("container") || getenv("FLATPAK_ID") || getenv("FLATPAK")) { - /* flatpak */ - return true; - } - return false; /* No container detected */ -} - MyApplication* my_application_new() { - // gchar based alternate MY_APPLICATION_ID - const char* my_application_id = APPLICATION_ID; + // Set the program name to the application ID, which helps various systems + // like GTK and desktop environments map this running application to its + // corresponding .desktop file. This ensures better integration by allowing + // the application to be recognized beyond its binary name. + g_set_prgname(APPLICATION_ID); - if (is_flatpak()) { - my_application_id = "com.github.KRTirtho.Spotube"; - } - - return MY_APPLICATION(g_object_new( - my_application_get_type(), "application-id", my_application_id, "flags", - G_APPLICATION_HANDLES_COMMAND_LINE | G_APPLICATION_HANDLES_OPEN, - nullptr)); -} \ No newline at end of file + return MY_APPLICATION(g_object_new(my_application_get_type(), + "application-id", APPLICATION_ID, + "flags", G_APPLICATION_NON_UNIQUE, + nullptr)); +} diff --git a/linux/my_application.h b/linux/runner/my_application.h similarity index 100% rename from linux/my_application.h rename to linux/runner/my_application.h diff --git a/linux/spotube.desktop b/linux/spotube.desktop deleted file mode 100644 index 53f381e1..00000000 --- a/linux/spotube.desktop +++ /dev/null @@ -1,9 +0,0 @@ -[Desktop Entry] -Type=Application -Name=Spotube -Exec=/usr/bin/spotube -Icon=/usr/share/icons/spotube/spotube-logo.png -Comment=A music streaming app combining the power of Spotify & YouTube -Terminal=false -Categories=Audio;Music;Player;AudioVideo; -MimeType=x-scheme-handler/spotify; \ No newline at end of file diff --git a/macos/RunnerTests/RunnerTests.swift b/macos/RunnerTests/RunnerTests.swift new file mode 100644 index 00000000..61f3bd1f --- /dev/null +++ b/macos/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Cocoa +import FlutterMacOS +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/pubspec.lock b/pubspec.lock index 1ddc1705..56cf6be0 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,23 +5,18 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: "16e298750b6d0af7ce8a3ba7c18c69c3785d11b15ec83f6dcd0ad2a0009b3cab" + sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7" url: "https://pub.dev" source: hosted - version: "76.0.0" - _macros: - dependency: transitive - description: dart - source: sdk - version: "0.3.3" + version: "67.0.0" analyzer: dependency: transitive description: name: analyzer - sha256: "1f14db053a8c23e260789e9b0980fa27f2680dd640932cae5e1137cce0e46e1e" + sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d" url: "https://pub.dev" source: hosted - version: "6.11.0" + version: "6.4.1" analyzer_plugin: dependency: transitive description: @@ -483,10 +478,10 @@ packages: dependency: transitive description: name: dart_style - sha256: "7856d364b589d1f08986e140938578ed36ed948581fbc3bc9aef1805039ac5ab" + sha256: "99e066ce75c89d6b29903d788a7bb9369cf754f7b24bf70bf4b6d6d6b26853b9" url: "https://pub.dev" source: hosted - version: "2.3.7" + version: "2.3.6" dartx: dependency: transitive description: @@ -582,18 +577,18 @@ packages: dependency: "direct main" description: name: drift - sha256: c2d073d35ad441730812f4ea05b5dd031fb81c5f9786a4f5fb77ecd6307b6f74 + sha256: df027d168a2985a2e9da900adeba2ab0136f0d84436592cf3cd5135f82c8579c url: "https://pub.dev" source: hosted - version: "2.22.1" + version: "2.21.0" drift_dev: dependency: "direct dev" description: name: drift_dev - sha256: f4ab5d6976b1e31551ceb82ff597a505bda7818ff4f7be08a1da9d55eb6e730c + sha256: "623649abe932fc17bd32e578e7e05f7ac5e7dd0b33e6c8669a0634105d1389bf" url: "https://pub.dev" source: hosted - version: "2.22.1" + version: "2.21.2" duration: dependency: "direct main" description: @@ -809,10 +804,10 @@ packages: dependency: "direct main" description: name: flutter_form_builder - sha256: "39aee5a2548df0b3979a83eea38468116a888341fbca8a92c4be18a486a7bb57" + sha256: "375da52998c72f80dec9187bd93afa7ab202b89d5d066699368ff96d39fd4876" url: "https://pub.dev" source: hosted - version: "9.6.0" + version: "9.7.0" flutter_gen_core: dependency: transitive description: @@ -1049,10 +1044,10 @@ packages: dependency: "direct main" description: name: form_builder_validators - sha256: "517fb884183fff7a0ef3db7d375981011da26ee452f20fb3d2e788ad527ad01d" + sha256: cd617fa346250293ff3e2709961d0faf7b80e6e4f0ff7b500126b28d7422dd67 url: "https://pub.dev" source: hosted - version: "11.1.1" + version: "11.1.2" form_validator: dependency: "direct main" description: @@ -1065,10 +1060,10 @@ packages: dependency: "direct dev" description: name: freezed - sha256: "44c19278dd9d89292cf46e97dc0c1e52ce03275f40a97c5a348e802a924bf40e" + sha256: a434911f643466d78462625df76fd9eb13e57348ff43fe1f77bbe909522c67a1 url: "https://pub.dev" source: hosted - version: "2.5.7" + version: "2.5.2" freezed_annotation: dependency: "direct main" description: @@ -1379,10 +1374,10 @@ packages: dependency: "direct dev" description: name: json_serializable - sha256: c2fcb3920cf2b6ae6845954186420fca40bc0a8abcc84903b7801f17d7050d7c + sha256: ea1432d167339ea9b5bb153f0571d0039607a873d6e04e0117af043f14a1fd4b url: "https://pub.dev" source: hosted - version: "6.9.0" + version: "6.8.0" leak_tracker: dependency: transitive description: @@ -1447,14 +1442,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.2" - macros: - dependency: transitive - description: - name: macros - sha256: "1d9e801cd66f7ea3663c45fc708450db1fa57f988142c64289142c9b7ee80656" - url: "https://pub.dev" - source: hosted - version: "0.1.3-main.0" matcher: dependency: transitive description: @@ -2289,10 +2276,10 @@ packages: dependency: transitive description: name: sqlparser - sha256: "4cad4b2c5f63dc9ea1a8dcffb58cf762322bea5dd8836870164a65e913bdae41" + sha256: d77749237609784e337ec36c979d41f6f38a7b279df98622ae23929c8eb954a4 url: "https://pub.dev" source: hosted - version: "0.40.0" + version: "0.39.2" stack_trace: dependency: transitive description: @@ -2449,10 +2436,10 @@ packages: dependency: "direct main" description: name: tray_manager - sha256: c2da0f0f1ddb455e721cf68d05d1281fec75cf5df0a1d3cb67b6ca0bdfd5709d + sha256: "80be6c508159a6f3c57983de795209ac13453e9832fd574143b06dceee188ed2" url: "https://pub.dev" source: hosted - version: "0.4.0" + version: "0.3.2" type_plus: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index dbd97b91..43843fef 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -102,7 +102,7 @@ dependencies: ref: dart-3-support url: https://github.com/KRTirtho/scrobblenaut.git scroll_to_index: ^3.0.1 - shadcn_flutter: ^0.0.32 + shadcn_flutter: ^0.0.26 shared_preferences: ^2.2.3 shelf: ^1.4.1 shelf_router: ^1.1.4 @@ -120,7 +120,7 @@ dependencies: test: ^1.25.7 timezone: ^0.10.0 titlebar_buttons: ^1.0.0 - tray_manager: ^0.4.0 + tray_manager: ^0.3.0 url_launcher: ^6.2.6 uuid: ^4.4.0 version: ^3.0.2 @@ -212,4 +212,4 @@ flutter_native_splash: image: assets/spotube-logo_android12.png branding: assets/branding.png color: "#000000" - icon_background_color: "#000000" + icon_background_color: "#000000" \ No newline at end of file