mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-12-08 16:27:31 +00:00
Compare commits
No commits in common. "69d35aa2d9436cd42dc572744f58bc15912b0a8e" and "a9ae5a5b8ae1f367196a25aad7c505f3faf75a8b" have entirely different histories.
69d35aa2d9
...
a9ae5a5b8a
27
.metadata
27
.metadata
@ -4,8 +4,8 @@
|
|||||||
# This file should be version controlled and should not be manually edited.
|
# This file should be version controlled and should not be manually edited.
|
||||||
|
|
||||||
version:
|
version:
|
||||||
revision: "ea121f8859e4b13e47a8f845e4586164519588bc"
|
revision: "300451adae589accbece3490f4396f10bdf15e6e"
|
||||||
channel: "[user-branch]"
|
channel: "stable"
|
||||||
|
|
||||||
project_type: app
|
project_type: app
|
||||||
|
|
||||||
@ -13,26 +13,11 @@ project_type: app
|
|||||||
migration:
|
migration:
|
||||||
platforms:
|
platforms:
|
||||||
- platform: root
|
- platform: root
|
||||||
create_revision: ea121f8859e4b13e47a8f845e4586164519588bc
|
create_revision: 300451adae589accbece3490f4396f10bdf15e6e
|
||||||
base_revision: ea121f8859e4b13e47a8f845e4586164519588bc
|
base_revision: 300451adae589accbece3490f4396f10bdf15e6e
|
||||||
- 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
|
- platform: windows
|
||||||
create_revision: ea121f8859e4b13e47a8f845e4586164519588bc
|
create_revision: 300451adae589accbece3490f4396f10bdf15e6e
|
||||||
base_revision: ea121f8859e4b13e47a8f845e4586164519588bc
|
base_revision: 300451adae589accbece3490f4396f10bdf15e6e
|
||||||
|
|
||||||
# User provided section
|
# User provided section
|
||||||
|
|
||||||
|
|||||||
@ -1,44 +0,0 @@
|
|||||||
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 = "../.."
|
|
||||||
}
|
|
||||||
@ -1,21 +0,0 @@
|
|||||||
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<Delete>("clean") {
|
|
||||||
delete(rootProject.layout.buildDirectory)
|
|
||||||
}
|
|
||||||
@ -1,25 +0,0 @@
|
|||||||
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")
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
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.
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -150,27 +150,35 @@ class Assets {
|
|||||||
AssetGenImage('assets/placeholder.png');
|
AssetGenImage('assets/placeholder.png');
|
||||||
static const AssetGenImage spotubeHeroBanner =
|
static const AssetGenImage spotubeHeroBanner =
|
||||||
AssetGenImage('assets/spotube-hero-banner.png');
|
AssetGenImage('assets/spotube-hero-banner.png');
|
||||||
static const AssetGenImage spotubeIconRounded =
|
static const AssetGenImage spotubeLogoForeground =
|
||||||
AssetGenImage('assets/spotube-icon-rounded.png');
|
AssetGenImage('assets/spotube-logo-foreground.jpg');
|
||||||
static const AssetGenImage spotubeIcon =
|
|
||||||
AssetGenImage('assets/spotube-icon.png');
|
|
||||||
static const AssetGenImage spotubeLogoMacos =
|
static const AssetGenImage spotubeLogoMacos =
|
||||||
AssetGenImage('assets/spotube-logo-macos.png');
|
AssetGenImage('assets/spotube-logo-macos.png');
|
||||||
static const AssetGenImage spotubeLogoNotWallpaper =
|
static const AssetGenImage spotubeLogoBmp =
|
||||||
AssetGenImage('assets/spotube-logo-notWallpaper.png');
|
AssetGenImage('assets/spotube-logo.bmp');
|
||||||
static const AssetGenImage spotubeLogoRounded =
|
static const String spotubeLogoIco = 'assets/spotube-logo.ico';
|
||||||
AssetGenImage('assets/spotube-logo-rounded.png');
|
static const AssetGenImage spotubeLogoPng =
|
||||||
|
AssetGenImage('assets/spotube-logo.png');
|
||||||
|
static const String spotubeLogoSvg = 'assets/spotube-logo.svg';
|
||||||
static const AssetGenImage spotubeLogoAndroid12 =
|
static const AssetGenImage spotubeLogoAndroid12 =
|
||||||
AssetGenImage('assets/spotube-logo_android12.png');
|
AssetGenImage('assets/spotube-logo_android12.png');
|
||||||
static const AssetGenImage spotubeNightlyNotWallpaper =
|
static const AssetGenImage spotubeNightlyLogoForeground =
|
||||||
AssetGenImage('assets/spotube-nightly-notWallpaper.png');
|
AssetGenImage('assets/spotube-nightly-logo-foreground.jpg');
|
||||||
static const AssetGenImage spotubeNightlyRounded =
|
static const AssetGenImage spotubeNightlyLogoPng =
|
||||||
AssetGenImage('assets/spotube-nightly-rounded.png');
|
AssetGenImage('assets/spotube-nightly-logo.png');
|
||||||
static const AssetGenImage spotubeNightlyPng =
|
static const String spotubeNightlyLogoSvg = 'assets/spotube-nightly-logo.svg';
|
||||||
AssetGenImage('assets/spotube-nightly.png');
|
static const AssetGenImage spotubeNightlyLogoAndroid12 =
|
||||||
static const String spotubeNightlySvg = 'assets/spotube-nightly.svg';
|
AssetGenImage('assets/spotube-nightly-logo_android12.png');
|
||||||
static const AssetGenImage spotubeScreenshot =
|
static const AssetGenImage spotubeScreenshot =
|
||||||
AssetGenImage('assets/spotube-screenshot.png');
|
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 AssetGenImage success = AssetGenImage('assets/success.png');
|
||||||
static const $AssetsTutorialGen tutorial = $AssetsTutorialGen();
|
static const $AssetsTutorialGen tutorial = $AssetsTutorialGen();
|
||||||
static const AssetGenImage userPlaceholder =
|
static const AssetGenImage userPlaceholder =
|
||||||
@ -188,17 +196,22 @@ class Assets {
|
|||||||
likedTracks,
|
likedTracks,
|
||||||
placeholder,
|
placeholder,
|
||||||
spotubeHeroBanner,
|
spotubeHeroBanner,
|
||||||
spotubeIconRounded,
|
spotubeLogoForeground,
|
||||||
spotubeIcon,
|
|
||||||
spotubeLogoMacos,
|
spotubeLogoMacos,
|
||||||
spotubeLogoNotWallpaper,
|
spotubeLogoBmp,
|
||||||
spotubeLogoRounded,
|
spotubeLogoIco,
|
||||||
|
spotubeLogoPng,
|
||||||
|
spotubeLogoSvg,
|
||||||
spotubeLogoAndroid12,
|
spotubeLogoAndroid12,
|
||||||
spotubeNightlyNotWallpaper,
|
spotubeNightlyLogoForeground,
|
||||||
spotubeNightlyRounded,
|
spotubeNightlyLogoPng,
|
||||||
spotubeNightlyPng,
|
spotubeNightlyLogoSvg,
|
||||||
spotubeNightlySvg,
|
spotubeNightlyLogoAndroid12,
|
||||||
spotubeScreenshot,
|
spotubeScreenshot,
|
||||||
|
spotubeTallCapsule,
|
||||||
|
spotubeWideCapsuleLarge,
|
||||||
|
spotubeWideCapsuleSmall,
|
||||||
|
spotubeBanner,
|
||||||
success,
|
success,
|
||||||
userPlaceholder
|
userPlaceholder
|
||||||
];
|
];
|
||||||
|
|||||||
@ -19,7 +19,7 @@ abstract class Env {
|
|||||||
@EnviedField(varName: 'LASTFM_API_SECRET')
|
@EnviedField(varName: 'LASTFM_API_SECRET')
|
||||||
static final String lastFmApiSecret = _Env.lastFmApiSecret;
|
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 final int _hideDonations = _Env._hideDonations;
|
||||||
|
|
||||||
static bool get hideDonations => _hideDonations == 1;
|
static bool get hideDonations => _hideDonations == 1;
|
||||||
@ -32,23 +32,23 @@ abstract class Env {
|
|||||||
};
|
};
|
||||||
}).toList();
|
}).toList();
|
||||||
|
|
||||||
@EnviedField(varName: 'ENABLE_UPDATE_CHECK', defaultValue: 1)
|
@EnviedField(varName: 'ENABLE_UPDATE_CHECK', defaultValue: "1")
|
||||||
static final String _enableUpdateChecker = _Env._enableUpdateChecker;
|
static final String _enableUpdateChecker = _Env._enableUpdateChecker;
|
||||||
|
|
||||||
@EnviedField(varName: "RELEASE_CHANNEL", defaultValue: "nightly")
|
@EnviedField(varName: "RELEASE_CHANNEL", defaultValue: "nightly")
|
||||||
static final String _releaseChannel = _Env._releaseChannel;
|
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 final String _disableSpotifyImages = _Env._disableSpotifyImages;
|
||||||
|
|
||||||
static bool get disableSpotifyImages => _disableSpotifyImages == 1;
|
static bool get disableSpotifyImages => _disableSpotifyImages == "1";
|
||||||
|
|
||||||
static ReleaseChannel get releaseChannel => _releaseChannel == "stable"
|
static ReleaseChannel get releaseChannel => _releaseChannel == "stable"
|
||||||
? ReleaseChannel.stable
|
? ReleaseChannel.stable
|
||||||
: ReleaseChannel.nightly;
|
: ReleaseChannel.nightly;
|
||||||
|
|
||||||
static bool get enableUpdateChecker =>
|
static bool get enableUpdateChecker =>
|
||||||
kIsFlatpak || _enableUpdateChecker == 1;
|
kIsFlatpak || _enableUpdateChecker == "1";
|
||||||
|
|
||||||
static String discordAppId = "1176718791388975124";
|
static String discordAppId = "1176718791388975124";
|
||||||
}
|
}
|
||||||
|
|||||||
@ -99,8 +99,13 @@ mixin _$WebSocketLoadEventData {
|
|||||||
required TResult orElse(),
|
required TResult orElse(),
|
||||||
}) =>
|
}) =>
|
||||||
throw _privateConstructorUsedError;
|
throw _privateConstructorUsedError;
|
||||||
|
|
||||||
|
/// Serializes this WebSocketLoadEventData to a JSON map.
|
||||||
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
|
Map<String, dynamic> 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<WebSocketLoadEventData> get copyWith =>
|
$WebSocketLoadEventDataCopyWith<WebSocketLoadEventData> get copyWith =>
|
||||||
throw _privateConstructorUsedError;
|
throw _privateConstructorUsedError;
|
||||||
}
|
}
|
||||||
@ -127,6 +132,8 @@ class _$WebSocketLoadEventDataCopyWithImpl<$Res,
|
|||||||
// ignore: unused_field
|
// ignore: unused_field
|
||||||
final $Res Function($Val) _then;
|
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')
|
@pragma('vm:prefer-inline')
|
||||||
@override
|
@override
|
||||||
$Res call({
|
$Res call({
|
||||||
@ -171,6 +178,8 @@ class __$$WebSocketLoadEventDataPlaylistImplCopyWithImpl<$Res>
|
|||||||
$Res Function(_$WebSocketLoadEventDataPlaylistImpl) _then)
|
$Res Function(_$WebSocketLoadEventDataPlaylistImpl) _then)
|
||||||
: super(_value, _then);
|
: super(_value, _then);
|
||||||
|
|
||||||
|
/// Create a copy of WebSocketLoadEventData
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
@override
|
@override
|
||||||
$Res call({
|
$Res call({
|
||||||
@ -247,12 +256,14 @@ class _$WebSocketLoadEventDataPlaylistImpl
|
|||||||
other.initialIndex == initialIndex));
|
other.initialIndex == initialIndex));
|
||||||
}
|
}
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
@override
|
@override
|
||||||
int get hashCode => Object.hash(runtimeType,
|
int get hashCode => Object.hash(runtimeType,
|
||||||
const DeepCollectionEquality().hash(_tracks), collection, initialIndex);
|
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
|
@override
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
_$$WebSocketLoadEventDataPlaylistImplCopyWith<
|
_$$WebSocketLoadEventDataPlaylistImplCopyWith<
|
||||||
@ -372,8 +383,11 @@ abstract class WebSocketLoadEventDataPlaylist extends WebSocketLoadEventData {
|
|||||||
PlaylistSimple? get collection;
|
PlaylistSimple? get collection;
|
||||||
@override
|
@override
|
||||||
int? get initialIndex;
|
int? get initialIndex;
|
||||||
|
|
||||||
|
/// Create a copy of WebSocketLoadEventData
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@override
|
@override
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
_$$WebSocketLoadEventDataPlaylistImplCopyWith<
|
_$$WebSocketLoadEventDataPlaylistImplCopyWith<
|
||||||
_$WebSocketLoadEventDataPlaylistImpl>
|
_$WebSocketLoadEventDataPlaylistImpl>
|
||||||
get copyWith => throw _privateConstructorUsedError;
|
get copyWith => throw _privateConstructorUsedError;
|
||||||
@ -404,6 +418,8 @@ class __$$WebSocketLoadEventDataAlbumImplCopyWithImpl<$Res>
|
|||||||
$Res Function(_$WebSocketLoadEventDataAlbumImpl) _then)
|
$Res Function(_$WebSocketLoadEventDataAlbumImpl) _then)
|
||||||
: super(_value, _then);
|
: super(_value, _then);
|
||||||
|
|
||||||
|
/// Create a copy of WebSocketLoadEventData
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
@override
|
@override
|
||||||
$Res call({
|
$Res call({
|
||||||
@ -479,12 +495,14 @@ class _$WebSocketLoadEventDataAlbumImpl extends WebSocketLoadEventDataAlbum {
|
|||||||
other.initialIndex == initialIndex));
|
other.initialIndex == initialIndex));
|
||||||
}
|
}
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
@override
|
@override
|
||||||
int get hashCode => Object.hash(runtimeType,
|
int get hashCode => Object.hash(runtimeType,
|
||||||
const DeepCollectionEquality().hash(_tracks), collection, initialIndex);
|
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
|
@override
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
_$$WebSocketLoadEventDataAlbumImplCopyWith<_$WebSocketLoadEventDataAlbumImpl>
|
_$$WebSocketLoadEventDataAlbumImplCopyWith<_$WebSocketLoadEventDataAlbumImpl>
|
||||||
@ -603,8 +621,11 @@ abstract class WebSocketLoadEventDataAlbum extends WebSocketLoadEventData {
|
|||||||
AlbumSimple? get collection;
|
AlbumSimple? get collection;
|
||||||
@override
|
@override
|
||||||
int? get initialIndex;
|
int? get initialIndex;
|
||||||
|
|
||||||
|
/// Create a copy of WebSocketLoadEventData
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@override
|
@override
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
_$$WebSocketLoadEventDataAlbumImplCopyWith<_$WebSocketLoadEventDataAlbumImpl>
|
_$$WebSocketLoadEventDataAlbumImplCopyWith<_$WebSocketLoadEventDataAlbumImpl>
|
||||||
get copyWith => throw _privateConstructorUsedError;
|
get copyWith => throw _privateConstructorUsedError;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5964,8 +5964,7 @@ final class $$PlaylistTableTableReferences extends BaseReferences<_$AppDatabase,
|
|||||||
db.audioPlayerStateTable.createAlias($_aliasNameGenerator(
|
db.audioPlayerStateTable.createAlias($_aliasNameGenerator(
|
||||||
db.playlistTable.audioPlayerStateId, db.audioPlayerStateTable.id));
|
db.playlistTable.audioPlayerStateId, db.audioPlayerStateTable.id));
|
||||||
|
|
||||||
$$AudioPlayerStateTableTableProcessedTableManager? get audioPlayerStateId {
|
$$AudioPlayerStateTableTableProcessedTableManager get audioPlayerStateId {
|
||||||
if ($_item.audioPlayerStateId == null) return null;
|
|
||||||
final manager = $$AudioPlayerStateTableTableTableManager(
|
final manager = $$AudioPlayerStateTableTableTableManager(
|
||||||
$_db, $_db.audioPlayerStateTable)
|
$_db, $_db.audioPlayerStateTable)
|
||||||
.filter((f) => f.id($_item.audioPlayerStateId!));
|
.filter((f) => f.id($_item.audioPlayerStateId!));
|
||||||
@ -6291,8 +6290,7 @@ final class $$PlaylistMediaTableTableReferences extends BaseReferences<
|
|||||||
db.playlistTable.createAlias($_aliasNameGenerator(
|
db.playlistTable.createAlias($_aliasNameGenerator(
|
||||||
db.playlistMediaTable.playlistId, db.playlistTable.id));
|
db.playlistMediaTable.playlistId, db.playlistTable.id));
|
||||||
|
|
||||||
$$PlaylistTableTableProcessedTableManager? get playlistId {
|
$$PlaylistTableTableProcessedTableManager get playlistId {
|
||||||
if ($_item.playlistId == null) return null;
|
|
||||||
final manager = $$PlaylistTableTableTableManager($_db, $_db.playlistTable)
|
final manager = $$PlaylistTableTableTableManager($_db, $_db.playlistTable)
|
||||||
.filter((f) => f.id($_item.playlistId!));
|
.filter((f) => f.id($_item.playlistId!));
|
||||||
final item = $_typedResult.readTableOrNull(_playlistIdTable($_db));
|
final item = $_typedResult.readTableOrNull(_playlistIdTable($_db));
|
||||||
|
|||||||
@ -29,8 +29,12 @@ mixin _$SpotifySectionPlaylist {
|
|||||||
String get owner => throw _privateConstructorUsedError;
|
String get owner => throw _privateConstructorUsedError;
|
||||||
String get uri => throw _privateConstructorUsedError;
|
String get uri => throw _privateConstructorUsedError;
|
||||||
|
|
||||||
|
/// Serializes this SpotifySectionPlaylist to a JSON map.
|
||||||
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
|
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
|
||||||
@JsonKey(ignore: true)
|
|
||||||
|
/// Create a copy of SpotifySectionPlaylist
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
$SpotifySectionPlaylistCopyWith<SpotifySectionPlaylist> get copyWith =>
|
$SpotifySectionPlaylistCopyWith<SpotifySectionPlaylist> get copyWith =>
|
||||||
throw _privateConstructorUsedError;
|
throw _privateConstructorUsedError;
|
||||||
}
|
}
|
||||||
@ -61,6 +65,8 @@ class _$SpotifySectionPlaylistCopyWithImpl<$Res,
|
|||||||
// ignore: unused_field
|
// ignore: unused_field
|
||||||
final $Res Function($Val) _then;
|
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')
|
@pragma('vm:prefer-inline')
|
||||||
@override
|
@override
|
||||||
$Res call({
|
$Res call({
|
||||||
@ -128,6 +134,8 @@ class __$$SpotifySectionPlaylistImplCopyWithImpl<$Res>
|
|||||||
$Res Function(_$SpotifySectionPlaylistImpl) _then)
|
$Res Function(_$SpotifySectionPlaylistImpl) _then)
|
||||||
: super(_value, _then);
|
: super(_value, _then);
|
||||||
|
|
||||||
|
/// Create a copy of SpotifySectionPlaylist
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
@override
|
@override
|
||||||
$Res call({
|
$Res call({
|
||||||
@ -221,12 +229,14 @@ class _$SpotifySectionPlaylistImpl extends _SpotifySectionPlaylist {
|
|||||||
(identical(other.uri, uri) || other.uri == uri));
|
(identical(other.uri, uri) || other.uri == uri));
|
||||||
}
|
}
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
@override
|
@override
|
||||||
int get hashCode => Object.hash(runtimeType, description, format,
|
int get hashCode => Object.hash(runtimeType, description, format,
|
||||||
const DeepCollectionEquality().hash(_images), name, owner, uri);
|
const DeepCollectionEquality().hash(_images), name, owner, uri);
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
/// Create a copy of SpotifySectionPlaylist
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
@override
|
@override
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
_$$SpotifySectionPlaylistImplCopyWith<_$SpotifySectionPlaylistImpl>
|
_$$SpotifySectionPlaylistImplCopyWith<_$SpotifySectionPlaylistImpl>
|
||||||
@ -266,8 +276,11 @@ abstract class _SpotifySectionPlaylist extends SpotifySectionPlaylist {
|
|||||||
String get owner;
|
String get owner;
|
||||||
@override
|
@override
|
||||||
String get uri;
|
String get uri;
|
||||||
|
|
||||||
|
/// Create a copy of SpotifySectionPlaylist
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@override
|
@override
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
_$$SpotifySectionPlaylistImplCopyWith<_$SpotifySectionPlaylistImpl>
|
_$$SpotifySectionPlaylistImplCopyWith<_$SpotifySectionPlaylistImpl>
|
||||||
get copyWith => throw _privateConstructorUsedError;
|
get copyWith => throw _privateConstructorUsedError;
|
||||||
}
|
}
|
||||||
@ -283,8 +296,12 @@ mixin _$SpotifySectionArtist {
|
|||||||
List<SpotifySectionItemImage> get images =>
|
List<SpotifySectionItemImage> get images =>
|
||||||
throw _privateConstructorUsedError;
|
throw _privateConstructorUsedError;
|
||||||
|
|
||||||
|
/// Serializes this SpotifySectionArtist to a JSON map.
|
||||||
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
|
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
|
||||||
@JsonKey(ignore: true)
|
|
||||||
|
/// Create a copy of SpotifySectionArtist
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
$SpotifySectionArtistCopyWith<SpotifySectionArtist> get copyWith =>
|
$SpotifySectionArtistCopyWith<SpotifySectionArtist> get copyWith =>
|
||||||
throw _privateConstructorUsedError;
|
throw _privateConstructorUsedError;
|
||||||
}
|
}
|
||||||
@ -309,6 +326,8 @@ class _$SpotifySectionArtistCopyWithImpl<$Res,
|
|||||||
// ignore: unused_field
|
// ignore: unused_field
|
||||||
final $Res Function($Val) _then;
|
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')
|
@pragma('vm:prefer-inline')
|
||||||
@override
|
@override
|
||||||
$Res call({
|
$Res call({
|
||||||
@ -352,6 +371,8 @@ class __$$SpotifySectionArtistImplCopyWithImpl<$Res>
|
|||||||
$Res Function(_$SpotifySectionArtistImpl) _then)
|
$Res Function(_$SpotifySectionArtistImpl) _then)
|
||||||
: super(_value, _then);
|
: super(_value, _then);
|
||||||
|
|
||||||
|
/// Create a copy of SpotifySectionArtist
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
@override
|
@override
|
||||||
$Res call({
|
$Res call({
|
||||||
@ -416,12 +437,14 @@ class _$SpotifySectionArtistImpl extends _SpotifySectionArtist {
|
|||||||
const DeepCollectionEquality().equals(other._images, _images));
|
const DeepCollectionEquality().equals(other._images, _images));
|
||||||
}
|
}
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
@override
|
@override
|
||||||
int get hashCode => Object.hash(
|
int get hashCode => Object.hash(
|
||||||
runtimeType, name, uri, const DeepCollectionEquality().hash(_images));
|
runtimeType, name, uri, const DeepCollectionEquality().hash(_images));
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
/// Create a copy of SpotifySectionArtist
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
@override
|
@override
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
_$$SpotifySectionArtistImplCopyWith<_$SpotifySectionArtistImpl>
|
_$$SpotifySectionArtistImplCopyWith<_$SpotifySectionArtistImpl>
|
||||||
@ -454,8 +477,11 @@ abstract class _SpotifySectionArtist extends SpotifySectionArtist {
|
|||||||
String get uri;
|
String get uri;
|
||||||
@override
|
@override
|
||||||
List<SpotifySectionItemImage> get images;
|
List<SpotifySectionItemImage> get images;
|
||||||
|
|
||||||
|
/// Create a copy of SpotifySectionArtist
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@override
|
@override
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
_$$SpotifySectionArtistImplCopyWith<_$SpotifySectionArtistImpl>
|
_$$SpotifySectionArtistImplCopyWith<_$SpotifySectionArtistImpl>
|
||||||
get copyWith => throw _privateConstructorUsedError;
|
get copyWith => throw _privateConstructorUsedError;
|
||||||
}
|
}
|
||||||
@ -473,8 +499,12 @@ mixin _$SpotifySectionAlbum {
|
|||||||
String get name => throw _privateConstructorUsedError;
|
String get name => throw _privateConstructorUsedError;
|
||||||
String get uri => throw _privateConstructorUsedError;
|
String get uri => throw _privateConstructorUsedError;
|
||||||
|
|
||||||
|
/// Serializes this SpotifySectionAlbum to a JSON map.
|
||||||
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
|
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
|
||||||
@JsonKey(ignore: true)
|
|
||||||
|
/// Create a copy of SpotifySectionAlbum
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
$SpotifySectionAlbumCopyWith<SpotifySectionAlbum> get copyWith =>
|
$SpotifySectionAlbumCopyWith<SpotifySectionAlbum> get copyWith =>
|
||||||
throw _privateConstructorUsedError;
|
throw _privateConstructorUsedError;
|
||||||
}
|
}
|
||||||
@ -502,6 +532,8 @@ class _$SpotifySectionAlbumCopyWithImpl<$Res, $Val extends SpotifySectionAlbum>
|
|||||||
// ignore: unused_field
|
// ignore: unused_field
|
||||||
final $Res Function($Val) _then;
|
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')
|
@pragma('vm:prefer-inline')
|
||||||
@override
|
@override
|
||||||
$Res call({
|
$Res call({
|
||||||
@ -554,6 +586,8 @@ class __$$SpotifySectionAlbumImplCopyWithImpl<$Res>
|
|||||||
$Res Function(_$SpotifySectionAlbumImpl) _then)
|
$Res Function(_$SpotifySectionAlbumImpl) _then)
|
||||||
: super(_value, _then);
|
: super(_value, _then);
|
||||||
|
|
||||||
|
/// Create a copy of SpotifySectionAlbum
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
@override
|
@override
|
||||||
$Res call({
|
$Res call({
|
||||||
@ -635,7 +669,7 @@ class _$SpotifySectionAlbumImpl extends _SpotifySectionAlbum {
|
|||||||
(identical(other.uri, uri) || other.uri == uri));
|
(identical(other.uri, uri) || other.uri == uri));
|
||||||
}
|
}
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
@override
|
@override
|
||||||
int get hashCode => Object.hash(
|
int get hashCode => Object.hash(
|
||||||
runtimeType,
|
runtimeType,
|
||||||
@ -644,7 +678,9 @@ class _$SpotifySectionAlbumImpl extends _SpotifySectionAlbum {
|
|||||||
name,
|
name,
|
||||||
uri);
|
uri);
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
/// Create a copy of SpotifySectionAlbum
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
@override
|
@override
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
_$$SpotifySectionAlbumImplCopyWith<_$SpotifySectionAlbumImpl> get copyWith =>
|
_$$SpotifySectionAlbumImplCopyWith<_$SpotifySectionAlbumImpl> get copyWith =>
|
||||||
@ -678,8 +714,11 @@ abstract class _SpotifySectionAlbum extends SpotifySectionAlbum {
|
|||||||
String get name;
|
String get name;
|
||||||
@override
|
@override
|
||||||
String get uri;
|
String get uri;
|
||||||
|
|
||||||
|
/// Create a copy of SpotifySectionAlbum
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@override
|
@override
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
_$$SpotifySectionAlbumImplCopyWith<_$SpotifySectionAlbumImpl> get copyWith =>
|
_$$SpotifySectionAlbumImplCopyWith<_$SpotifySectionAlbumImpl> get copyWith =>
|
||||||
throw _privateConstructorUsedError;
|
throw _privateConstructorUsedError;
|
||||||
}
|
}
|
||||||
@ -694,8 +733,12 @@ mixin _$SpotifySectionAlbumArtist {
|
|||||||
String get name => throw _privateConstructorUsedError;
|
String get name => throw _privateConstructorUsedError;
|
||||||
String get uri => throw _privateConstructorUsedError;
|
String get uri => throw _privateConstructorUsedError;
|
||||||
|
|
||||||
|
/// Serializes this SpotifySectionAlbumArtist to a JSON map.
|
||||||
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
|
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
|
||||||
@JsonKey(ignore: true)
|
|
||||||
|
/// Create a copy of SpotifySectionAlbumArtist
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
$SpotifySectionAlbumArtistCopyWith<SpotifySectionAlbumArtist> get copyWith =>
|
$SpotifySectionAlbumArtistCopyWith<SpotifySectionAlbumArtist> get copyWith =>
|
||||||
throw _privateConstructorUsedError;
|
throw _privateConstructorUsedError;
|
||||||
}
|
}
|
||||||
@ -720,6 +763,8 @@ class _$SpotifySectionAlbumArtistCopyWithImpl<$Res,
|
|||||||
// ignore: unused_field
|
// ignore: unused_field
|
||||||
final $Res Function($Val) _then;
|
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')
|
@pragma('vm:prefer-inline')
|
||||||
@override
|
@override
|
||||||
$Res call({
|
$Res call({
|
||||||
@ -761,6 +806,8 @@ class __$$SpotifySectionAlbumArtistImplCopyWithImpl<$Res>
|
|||||||
$Res Function(_$SpotifySectionAlbumArtistImpl) _then)
|
$Res Function(_$SpotifySectionAlbumArtistImpl) _then)
|
||||||
: super(_value, _then);
|
: super(_value, _then);
|
||||||
|
|
||||||
|
/// Create a copy of SpotifySectionAlbumArtist
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
@override
|
@override
|
||||||
$Res call({
|
$Res call({
|
||||||
@ -808,11 +855,13 @@ class _$SpotifySectionAlbumArtistImpl extends _SpotifySectionAlbumArtist {
|
|||||||
(identical(other.uri, uri) || other.uri == uri));
|
(identical(other.uri, uri) || other.uri == uri));
|
||||||
}
|
}
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
@override
|
@override
|
||||||
int get hashCode => Object.hash(runtimeType, name, uri);
|
int get hashCode => Object.hash(runtimeType, name, uri);
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
/// Create a copy of SpotifySectionAlbumArtist
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
@override
|
@override
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
_$$SpotifySectionAlbumArtistImplCopyWith<_$SpotifySectionAlbumArtistImpl>
|
_$$SpotifySectionAlbumArtistImplCopyWith<_$SpotifySectionAlbumArtistImpl>
|
||||||
@ -840,8 +889,11 @@ abstract class _SpotifySectionAlbumArtist extends SpotifySectionAlbumArtist {
|
|||||||
String get name;
|
String get name;
|
||||||
@override
|
@override
|
||||||
String get uri;
|
String get uri;
|
||||||
|
|
||||||
|
/// Create a copy of SpotifySectionAlbumArtist
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@override
|
@override
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
_$$SpotifySectionAlbumArtistImplCopyWith<_$SpotifySectionAlbumArtistImpl>
|
_$$SpotifySectionAlbumArtistImplCopyWith<_$SpotifySectionAlbumArtistImpl>
|
||||||
get copyWith => throw _privateConstructorUsedError;
|
get copyWith => throw _privateConstructorUsedError;
|
||||||
}
|
}
|
||||||
@ -857,8 +909,12 @@ mixin _$SpotifySectionItemImage {
|
|||||||
String get url => throw _privateConstructorUsedError;
|
String get url => throw _privateConstructorUsedError;
|
||||||
num? get width => throw _privateConstructorUsedError;
|
num? get width => throw _privateConstructorUsedError;
|
||||||
|
|
||||||
|
/// Serializes this SpotifySectionItemImage to a JSON map.
|
||||||
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
|
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
|
||||||
@JsonKey(ignore: true)
|
|
||||||
|
/// Create a copy of SpotifySectionItemImage
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
$SpotifySectionItemImageCopyWith<SpotifySectionItemImage> get copyWith =>
|
$SpotifySectionItemImageCopyWith<SpotifySectionItemImage> get copyWith =>
|
||||||
throw _privateConstructorUsedError;
|
throw _privateConstructorUsedError;
|
||||||
}
|
}
|
||||||
@ -883,6 +939,8 @@ class _$SpotifySectionItemImageCopyWithImpl<$Res,
|
|||||||
// ignore: unused_field
|
// ignore: unused_field
|
||||||
final $Res Function($Val) _then;
|
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')
|
@pragma('vm:prefer-inline')
|
||||||
@override
|
@override
|
||||||
$Res call({
|
$Res call({
|
||||||
@ -929,6 +987,8 @@ class __$$SpotifySectionItemImageImplCopyWithImpl<$Res>
|
|||||||
$Res Function(_$SpotifySectionItemImageImpl) _then)
|
$Res Function(_$SpotifySectionItemImageImpl) _then)
|
||||||
: super(_value, _then);
|
: super(_value, _then);
|
||||||
|
|
||||||
|
/// Create a copy of SpotifySectionItemImage
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
@override
|
@override
|
||||||
$Res call({
|
$Res call({
|
||||||
@ -985,11 +1045,13 @@ class _$SpotifySectionItemImageImpl extends _SpotifySectionItemImage {
|
|||||||
(identical(other.width, width) || other.width == width));
|
(identical(other.width, width) || other.width == width));
|
||||||
}
|
}
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
@override
|
@override
|
||||||
int get hashCode => Object.hash(runtimeType, height, url, width);
|
int get hashCode => Object.hash(runtimeType, height, url, width);
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
/// Create a copy of SpotifySectionItemImage
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
@override
|
@override
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
_$$SpotifySectionItemImageImplCopyWith<_$SpotifySectionItemImageImpl>
|
_$$SpotifySectionItemImageImplCopyWith<_$SpotifySectionItemImageImpl>
|
||||||
@ -1020,8 +1082,11 @@ abstract class _SpotifySectionItemImage extends SpotifySectionItemImage {
|
|||||||
String get url;
|
String get url;
|
||||||
@override
|
@override
|
||||||
num? get width;
|
num? get width;
|
||||||
|
|
||||||
|
/// Create a copy of SpotifySectionItemImage
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@override
|
@override
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
_$$SpotifySectionItemImageImplCopyWith<_$SpotifySectionItemImageImpl>
|
_$$SpotifySectionItemImageImplCopyWith<_$SpotifySectionItemImageImpl>
|
||||||
get copyWith => throw _privateConstructorUsedError;
|
get copyWith => throw _privateConstructorUsedError;
|
||||||
}
|
}
|
||||||
@ -1038,8 +1103,12 @@ mixin _$SpotifyHomeFeedSectionItem {
|
|||||||
SpotifySectionArtist? get artist => throw _privateConstructorUsedError;
|
SpotifySectionArtist? get artist => throw _privateConstructorUsedError;
|
||||||
SpotifySectionAlbum? get album => throw _privateConstructorUsedError;
|
SpotifySectionAlbum? get album => throw _privateConstructorUsedError;
|
||||||
|
|
||||||
|
/// Serializes this SpotifyHomeFeedSectionItem to a JSON map.
|
||||||
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
|
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
|
||||||
@JsonKey(ignore: true)
|
|
||||||
|
/// Create a copy of SpotifyHomeFeedSectionItem
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
$SpotifyHomeFeedSectionItemCopyWith<SpotifyHomeFeedSectionItem>
|
$SpotifyHomeFeedSectionItemCopyWith<SpotifyHomeFeedSectionItem>
|
||||||
get copyWith => throw _privateConstructorUsedError;
|
get copyWith => throw _privateConstructorUsedError;
|
||||||
}
|
}
|
||||||
@ -1073,6 +1142,8 @@ class _$SpotifyHomeFeedSectionItemCopyWithImpl<$Res,
|
|||||||
// ignore: unused_field
|
// ignore: unused_field
|
||||||
final $Res Function($Val) _then;
|
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')
|
@pragma('vm:prefer-inline')
|
||||||
@override
|
@override
|
||||||
$Res call({
|
$Res call({
|
||||||
@ -1101,6 +1172,8 @@ class _$SpotifyHomeFeedSectionItemCopyWithImpl<$Res,
|
|||||||
) as $Val);
|
) as $Val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Create a copy of SpotifyHomeFeedSectionItem
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@override
|
@override
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
$SpotifySectionPlaylistCopyWith<$Res>? get playlist {
|
$SpotifySectionPlaylistCopyWith<$Res>? get playlist {
|
||||||
@ -1113,6 +1186,8 @@ class _$SpotifyHomeFeedSectionItemCopyWithImpl<$Res,
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Create a copy of SpotifyHomeFeedSectionItem
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@override
|
@override
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
$SpotifySectionArtistCopyWith<$Res>? get artist {
|
$SpotifySectionArtistCopyWith<$Res>? get artist {
|
||||||
@ -1125,6 +1200,8 @@ class _$SpotifyHomeFeedSectionItemCopyWithImpl<$Res,
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Create a copy of SpotifyHomeFeedSectionItem
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@override
|
@override
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
$SpotifySectionAlbumCopyWith<$Res>? get album {
|
$SpotifySectionAlbumCopyWith<$Res>? get album {
|
||||||
@ -1171,6 +1248,8 @@ class __$$SpotifyHomeFeedSectionItemImplCopyWithImpl<$Res>
|
|||||||
$Res Function(_$SpotifyHomeFeedSectionItemImpl) _then)
|
$Res Function(_$SpotifyHomeFeedSectionItemImpl) _then)
|
||||||
: super(_value, _then);
|
: super(_value, _then);
|
||||||
|
|
||||||
|
/// Create a copy of SpotifyHomeFeedSectionItem
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
@override
|
@override
|
||||||
$Res call({
|
$Res call({
|
||||||
@ -1237,12 +1316,14 @@ class _$SpotifyHomeFeedSectionItemImpl implements _SpotifyHomeFeedSectionItem {
|
|||||||
(identical(other.album, album) || other.album == album));
|
(identical(other.album, album) || other.album == album));
|
||||||
}
|
}
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
@override
|
@override
|
||||||
int get hashCode =>
|
int get hashCode =>
|
||||||
Object.hash(runtimeType, typename, playlist, artist, album);
|
Object.hash(runtimeType, typename, playlist, artist, album);
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
/// Create a copy of SpotifyHomeFeedSectionItem
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
@override
|
@override
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
_$$SpotifyHomeFeedSectionItemImplCopyWith<_$SpotifyHomeFeedSectionItemImpl>
|
_$$SpotifyHomeFeedSectionItemImplCopyWith<_$SpotifyHomeFeedSectionItemImpl>
|
||||||
@ -1276,8 +1357,11 @@ abstract class _SpotifyHomeFeedSectionItem
|
|||||||
SpotifySectionArtist? get artist;
|
SpotifySectionArtist? get artist;
|
||||||
@override
|
@override
|
||||||
SpotifySectionAlbum? get album;
|
SpotifySectionAlbum? get album;
|
||||||
|
|
||||||
|
/// Create a copy of SpotifyHomeFeedSectionItem
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@override
|
@override
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
_$$SpotifyHomeFeedSectionItemImplCopyWith<_$SpotifyHomeFeedSectionItemImpl>
|
_$$SpotifyHomeFeedSectionItemImplCopyWith<_$SpotifyHomeFeedSectionItemImpl>
|
||||||
get copyWith => throw _privateConstructorUsedError;
|
get copyWith => throw _privateConstructorUsedError;
|
||||||
}
|
}
|
||||||
@ -1295,8 +1379,12 @@ mixin _$SpotifyHomeFeedSection {
|
|||||||
List<SpotifyHomeFeedSectionItem> get items =>
|
List<SpotifyHomeFeedSectionItem> get items =>
|
||||||
throw _privateConstructorUsedError;
|
throw _privateConstructorUsedError;
|
||||||
|
|
||||||
|
/// Serializes this SpotifyHomeFeedSection to a JSON map.
|
||||||
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
|
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
|
||||||
@JsonKey(ignore: true)
|
|
||||||
|
/// Create a copy of SpotifyHomeFeedSection
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
$SpotifyHomeFeedSectionCopyWith<SpotifyHomeFeedSection> get copyWith =>
|
$SpotifyHomeFeedSectionCopyWith<SpotifyHomeFeedSection> get copyWith =>
|
||||||
throw _privateConstructorUsedError;
|
throw _privateConstructorUsedError;
|
||||||
}
|
}
|
||||||
@ -1325,6 +1413,8 @@ class _$SpotifyHomeFeedSectionCopyWithImpl<$Res,
|
|||||||
// ignore: unused_field
|
// ignore: unused_field
|
||||||
final $Res Function($Val) _then;
|
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')
|
@pragma('vm:prefer-inline')
|
||||||
@override
|
@override
|
||||||
$Res call({
|
$Res call({
|
||||||
@ -1380,6 +1470,8 @@ class __$$SpotifyHomeFeedSectionImplCopyWithImpl<$Res>
|
|||||||
$Res Function(_$SpotifyHomeFeedSectionImpl) _then)
|
$Res Function(_$SpotifyHomeFeedSectionImpl) _then)
|
||||||
: super(_value, _then);
|
: super(_value, _then);
|
||||||
|
|
||||||
|
/// Create a copy of SpotifyHomeFeedSection
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
@override
|
@override
|
||||||
$Res call({
|
$Res call({
|
||||||
@ -1453,12 +1545,14 @@ class _$SpotifyHomeFeedSectionImpl implements _SpotifyHomeFeedSection {
|
|||||||
const DeepCollectionEquality().equals(other._items, _items));
|
const DeepCollectionEquality().equals(other._items, _items));
|
||||||
}
|
}
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
@override
|
@override
|
||||||
int get hashCode => Object.hash(runtimeType, typename, title, uri,
|
int get hashCode => Object.hash(runtimeType, typename, title, uri,
|
||||||
const DeepCollectionEquality().hash(_items));
|
const DeepCollectionEquality().hash(_items));
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
/// Create a copy of SpotifyHomeFeedSection
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
@override
|
@override
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
_$$SpotifyHomeFeedSectionImplCopyWith<_$SpotifyHomeFeedSectionImpl>
|
_$$SpotifyHomeFeedSectionImplCopyWith<_$SpotifyHomeFeedSectionImpl>
|
||||||
@ -1492,8 +1586,11 @@ abstract class _SpotifyHomeFeedSection implements SpotifyHomeFeedSection {
|
|||||||
String get uri;
|
String get uri;
|
||||||
@override
|
@override
|
||||||
List<SpotifyHomeFeedSectionItem> get items;
|
List<SpotifyHomeFeedSectionItem> get items;
|
||||||
|
|
||||||
|
/// Create a copy of SpotifyHomeFeedSection
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@override
|
@override
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
_$$SpotifyHomeFeedSectionImplCopyWith<_$SpotifyHomeFeedSectionImpl>
|
_$$SpotifyHomeFeedSectionImplCopyWith<_$SpotifyHomeFeedSectionImpl>
|
||||||
get copyWith => throw _privateConstructorUsedError;
|
get copyWith => throw _privateConstructorUsedError;
|
||||||
}
|
}
|
||||||
@ -1508,8 +1605,12 @@ mixin _$SpotifyHomeFeed {
|
|||||||
List<SpotifyHomeFeedSection> get sections =>
|
List<SpotifyHomeFeedSection> get sections =>
|
||||||
throw _privateConstructorUsedError;
|
throw _privateConstructorUsedError;
|
||||||
|
|
||||||
|
/// Serializes this SpotifyHomeFeed to a JSON map.
|
||||||
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
|
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
|
||||||
@JsonKey(ignore: true)
|
|
||||||
|
/// Create a copy of SpotifyHomeFeed
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
$SpotifyHomeFeedCopyWith<SpotifyHomeFeed> get copyWith =>
|
$SpotifyHomeFeedCopyWith<SpotifyHomeFeed> get copyWith =>
|
||||||
throw _privateConstructorUsedError;
|
throw _privateConstructorUsedError;
|
||||||
}
|
}
|
||||||
@ -1533,6 +1634,8 @@ class _$SpotifyHomeFeedCopyWithImpl<$Res, $Val extends SpotifyHomeFeed>
|
|||||||
// ignore: unused_field
|
// ignore: unused_field
|
||||||
final $Res Function($Val) _then;
|
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')
|
@pragma('vm:prefer-inline')
|
||||||
@override
|
@override
|
||||||
$Res call({
|
$Res call({
|
||||||
@ -1571,6 +1674,8 @@ class __$$SpotifyHomeFeedImplCopyWithImpl<$Res>
|
|||||||
_$SpotifyHomeFeedImpl _value, $Res Function(_$SpotifyHomeFeedImpl) _then)
|
_$SpotifyHomeFeedImpl _value, $Res Function(_$SpotifyHomeFeedImpl) _then)
|
||||||
: super(_value, _then);
|
: super(_value, _then);
|
||||||
|
|
||||||
|
/// Create a copy of SpotifyHomeFeed
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
@override
|
@override
|
||||||
$Res call({
|
$Res call({
|
||||||
@ -1626,12 +1731,14 @@ class _$SpotifyHomeFeedImpl implements _SpotifyHomeFeed {
|
|||||||
const DeepCollectionEquality().equals(other._sections, _sections));
|
const DeepCollectionEquality().equals(other._sections, _sections));
|
||||||
}
|
}
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
@override
|
@override
|
||||||
int get hashCode => Object.hash(
|
int get hashCode => Object.hash(
|
||||||
runtimeType, greeting, const DeepCollectionEquality().hash(_sections));
|
runtimeType, greeting, const DeepCollectionEquality().hash(_sections));
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
/// Create a copy of SpotifyHomeFeed
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
@override
|
@override
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
_$$SpotifyHomeFeedImplCopyWith<_$SpotifyHomeFeedImpl> get copyWith =>
|
_$$SpotifyHomeFeedImplCopyWith<_$SpotifyHomeFeedImpl> get copyWith =>
|
||||||
@ -1659,8 +1766,11 @@ abstract class _SpotifyHomeFeed implements SpotifyHomeFeed {
|
|||||||
String get greeting;
|
String get greeting;
|
||||||
@override
|
@override
|
||||||
List<SpotifyHomeFeedSection> get sections;
|
List<SpotifyHomeFeedSection> get sections;
|
||||||
|
|
||||||
|
/// Create a copy of SpotifyHomeFeed
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@override
|
@override
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
_$$SpotifyHomeFeedImplCopyWith<_$SpotifyHomeFeedImpl> get copyWith =>
|
_$$SpotifyHomeFeedImplCopyWith<_$SpotifyHomeFeedImpl> get copyWith =>
|
||||||
throw _privateConstructorUsedError;
|
throw _privateConstructorUsedError;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,7 +24,9 @@ mixin _$GeneratePlaylistProviderInput {
|
|||||||
RecommendationSeeds? get min => throw _privateConstructorUsedError;
|
RecommendationSeeds? get min => throw _privateConstructorUsedError;
|
||||||
RecommendationSeeds? get target => throw _privateConstructorUsedError;
|
RecommendationSeeds? get target => throw _privateConstructorUsedError;
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
/// Create a copy of GeneratePlaylistProviderInput
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
$GeneratePlaylistProviderInputCopyWith<GeneratePlaylistProviderInput>
|
$GeneratePlaylistProviderInputCopyWith<GeneratePlaylistProviderInput>
|
||||||
get copyWith => throw _privateConstructorUsedError;
|
get copyWith => throw _privateConstructorUsedError;
|
||||||
}
|
}
|
||||||
@ -62,6 +64,8 @@ class _$GeneratePlaylistProviderInputCopyWithImpl<$Res,
|
|||||||
// ignore: unused_field
|
// ignore: unused_field
|
||||||
final $Res Function($Val) _then;
|
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')
|
@pragma('vm:prefer-inline')
|
||||||
@override
|
@override
|
||||||
$Res call({
|
$Res call({
|
||||||
@ -105,6 +109,8 @@ class _$GeneratePlaylistProviderInputCopyWithImpl<$Res,
|
|||||||
) as $Val);
|
) as $Val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Create a copy of GeneratePlaylistProviderInput
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@override
|
@override
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
$RecommendationSeedsCopyWith<$Res>? get max {
|
$RecommendationSeedsCopyWith<$Res>? get max {
|
||||||
@ -117,6 +123,8 @@ class _$GeneratePlaylistProviderInputCopyWithImpl<$Res,
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Create a copy of GeneratePlaylistProviderInput
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@override
|
@override
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
$RecommendationSeedsCopyWith<$Res>? get min {
|
$RecommendationSeedsCopyWith<$Res>? get min {
|
||||||
@ -129,6 +137,8 @@ class _$GeneratePlaylistProviderInputCopyWithImpl<$Res,
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Create a copy of GeneratePlaylistProviderInput
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@override
|
@override
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
$RecommendationSeedsCopyWith<$Res>? get target {
|
$RecommendationSeedsCopyWith<$Res>? get target {
|
||||||
@ -178,6 +188,8 @@ class __$$GeneratePlaylistProviderInputImplCopyWithImpl<$Res>
|
|||||||
$Res Function(_$GeneratePlaylistProviderInputImpl) _then)
|
$Res Function(_$GeneratePlaylistProviderInputImpl) _then)
|
||||||
: super(_value, _then);
|
: super(_value, _then);
|
||||||
|
|
||||||
|
/// Create a copy of GeneratePlaylistProviderInput
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
@override
|
@override
|
||||||
$Res call({
|
$Res call({
|
||||||
@ -283,7 +295,9 @@ class _$GeneratePlaylistProviderInputImpl
|
|||||||
min,
|
min,
|
||||||
target);
|
target);
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
/// Create a copy of GeneratePlaylistProviderInput
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
@override
|
@override
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
_$$GeneratePlaylistProviderInputImplCopyWith<
|
_$$GeneratePlaylistProviderInputImplCopyWith<
|
||||||
@ -317,8 +331,11 @@ abstract class _GeneratePlaylistProviderInput
|
|||||||
RecommendationSeeds? get min;
|
RecommendationSeeds? get min;
|
||||||
@override
|
@override
|
||||||
RecommendationSeeds? get target;
|
RecommendationSeeds? get target;
|
||||||
|
|
||||||
|
/// Create a copy of GeneratePlaylistProviderInput
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@override
|
@override
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
_$$GeneratePlaylistProviderInputImplCopyWith<
|
_$$GeneratePlaylistProviderInputImplCopyWith<
|
||||||
_$GeneratePlaylistProviderInputImpl>
|
_$GeneratePlaylistProviderInputImpl>
|
||||||
get copyWith => throw _privateConstructorUsedError;
|
get copyWith => throw _privateConstructorUsedError;
|
||||||
@ -347,8 +364,12 @@ mixin _$RecommendationSeeds {
|
|||||||
num? get timeSignature => throw _privateConstructorUsedError;
|
num? get timeSignature => throw _privateConstructorUsedError;
|
||||||
num? get valence => throw _privateConstructorUsedError;
|
num? get valence => throw _privateConstructorUsedError;
|
||||||
|
|
||||||
|
/// Serializes this RecommendationSeeds to a JSON map.
|
||||||
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
|
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
|
||||||
@JsonKey(ignore: true)
|
|
||||||
|
/// Create a copy of RecommendationSeeds
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
$RecommendationSeedsCopyWith<RecommendationSeeds> get copyWith =>
|
$RecommendationSeedsCopyWith<RecommendationSeeds> get copyWith =>
|
||||||
throw _privateConstructorUsedError;
|
throw _privateConstructorUsedError;
|
||||||
}
|
}
|
||||||
@ -386,6 +407,8 @@ class _$RecommendationSeedsCopyWithImpl<$Res, $Val extends RecommendationSeeds>
|
|||||||
// ignore: unused_field
|
// ignore: unused_field
|
||||||
final $Res Function($Val) _then;
|
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')
|
@pragma('vm:prefer-inline')
|
||||||
@override
|
@override
|
||||||
$Res call({
|
$Res call({
|
||||||
@ -498,6 +521,8 @@ class __$$RecommendationSeedsImplCopyWithImpl<$Res>
|
|||||||
$Res Function(_$RecommendationSeedsImpl) _then)
|
$Res Function(_$RecommendationSeedsImpl) _then)
|
||||||
: super(_value, _then);
|
: super(_value, _then);
|
||||||
|
|
||||||
|
/// Create a copy of RecommendationSeeds
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
@override
|
@override
|
||||||
$Res call({
|
$Res call({
|
||||||
@ -665,7 +690,7 @@ class _$RecommendationSeedsImpl implements _RecommendationSeeds {
|
|||||||
(identical(other.valence, valence) || other.valence == valence));
|
(identical(other.valence, valence) || other.valence == valence));
|
||||||
}
|
}
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
@override
|
@override
|
||||||
int get hashCode => Object.hash(
|
int get hashCode => Object.hash(
|
||||||
runtimeType,
|
runtimeType,
|
||||||
@ -684,7 +709,9 @@ class _$RecommendationSeedsImpl implements _RecommendationSeeds {
|
|||||||
timeSignature,
|
timeSignature,
|
||||||
valence);
|
valence);
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
/// Create a copy of RecommendationSeeds
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
@override
|
@override
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
_$$RecommendationSeedsImplCopyWith<_$RecommendationSeedsImpl> get copyWith =>
|
_$$RecommendationSeedsImplCopyWith<_$RecommendationSeedsImpl> get copyWith =>
|
||||||
@ -749,8 +776,11 @@ abstract class _RecommendationSeeds implements RecommendationSeeds {
|
|||||||
num? get timeSignature;
|
num? get timeSignature;
|
||||||
@override
|
@override
|
||||||
num? get valence;
|
num? get valence;
|
||||||
|
|
||||||
|
/// Create a copy of RecommendationSeeds
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@override
|
@override
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
_$$RecommendationSeedsImplCopyWith<_$RecommendationSeedsImpl> get copyWith =>
|
_$$RecommendationSeedsImplCopyWith<_$RecommendationSeedsImpl> get copyWith =>
|
||||||
throw _privateConstructorUsedError;
|
throw _privateConstructorUsedError;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,7 +26,7 @@ class Sidebar extends HookConsumerWidget {
|
|||||||
color: Colors.black,
|
color: Colors.black,
|
||||||
borderRadius: BorderRadius.circular(50),
|
borderRadius: BorderRadius.circular(50),
|
||||||
),
|
),
|
||||||
child: Assets.spotubeLogoNotWallpaper.image(height: 50),
|
child: Assets.spotubeLogoPng.image(height: 50),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -17,7 +17,7 @@ class GettingStartedPageGreetingSection extends HookConsumerWidget {
|
|||||||
child: Column(
|
child: Column(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: [
|
children: [
|
||||||
Assets.spotubeLogoNotWallpaper.image(height: 200),
|
Assets.spotubeLogoPng.image(height: 200),
|
||||||
const Gap(24),
|
const Gap(24),
|
||||||
const Text("Spotube").semiBold().h4(),
|
const Text("Spotube").semiBold().h4(),
|
||||||
const Gap(4),
|
const Gap(4),
|
||||||
|
|||||||
@ -45,7 +45,7 @@ class HomePage extends HookConsumerWidget {
|
|||||||
if (mediaQuery.smAndDown || layoutMode == LayoutMode.compact)
|
if (mediaQuery.smAndDown || layoutMode == LayoutMode.compact)
|
||||||
SliverAppBar(
|
SliverAppBar(
|
||||||
floating: true,
|
floating: true,
|
||||||
title: Assets.spotubeLogoNotWallpaper.image(height: 45),
|
title: Assets.spotubeLogoPng.image(height: 45),
|
||||||
backgroundColor: context.theme.colorScheme.background,
|
backgroundColor: context.theme.colorScheme.background,
|
||||||
foregroundColor: context.theme.colorScheme.foreground,
|
foregroundColor: context.theme.colorScheme.foreground,
|
||||||
actions: [
|
actions: [
|
||||||
|
|||||||
@ -45,7 +45,7 @@ class AboutSpotubePage extends HookConsumerWidget {
|
|||||||
padding: const EdgeInsets.symmetric(horizontal: 16.0),
|
padding: const EdgeInsets.symmetric(horizontal: 16.0),
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
Assets.spotubeLogoNotWallpaper.image(
|
Assets.spotubeLogoPng.image(
|
||||||
height: 200,
|
height: 200,
|
||||||
width: 200,
|
width: 200,
|
||||||
),
|
),
|
||||||
|
|||||||
@ -30,8 +30,12 @@ mixin _$SongLink {
|
|||||||
String? get nativeAppUriMobile => throw _privateConstructorUsedError;
|
String? get nativeAppUriMobile => throw _privateConstructorUsedError;
|
||||||
String? get nativeAppUriDesktop => throw _privateConstructorUsedError;
|
String? get nativeAppUriDesktop => throw _privateConstructorUsedError;
|
||||||
|
|
||||||
|
/// Serializes this SongLink to a JSON map.
|
||||||
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
|
Map<String, dynamic> 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<SongLink> get copyWith =>
|
$SongLinkCopyWith<SongLink> get copyWith =>
|
||||||
throw _privateConstructorUsedError;
|
throw _privateConstructorUsedError;
|
||||||
}
|
}
|
||||||
@ -63,6 +67,8 @@ class _$SongLinkCopyWithImpl<$Res, $Val extends SongLink>
|
|||||||
// ignore: unused_field
|
// ignore: unused_field
|
||||||
final $Res Function($Val) _then;
|
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')
|
@pragma('vm:prefer-inline')
|
||||||
@override
|
@override
|
||||||
$Res call({
|
$Res call({
|
||||||
@ -145,6 +151,8 @@ class __$$SongLinkImplCopyWithImpl<$Res>
|
|||||||
_$SongLinkImpl _value, $Res Function(_$SongLinkImpl) _then)
|
_$SongLinkImpl _value, $Res Function(_$SongLinkImpl) _then)
|
||||||
: super(_value, _then);
|
: super(_value, _then);
|
||||||
|
|
||||||
|
/// Create a copy of SongLink
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
@override
|
@override
|
||||||
$Res call({
|
$Res call({
|
||||||
@ -261,12 +269,14 @@ class _$SongLinkImpl implements _SongLink {
|
|||||||
other.nativeAppUriDesktop == nativeAppUriDesktop));
|
other.nativeAppUriDesktop == nativeAppUriDesktop));
|
||||||
}
|
}
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
@override
|
@override
|
||||||
int get hashCode => Object.hash(runtimeType, displayName, linkId, platform,
|
int get hashCode => Object.hash(runtimeType, displayName, linkId, platform,
|
||||||
show, uniqueId, country, url, nativeAppUriMobile, nativeAppUriDesktop);
|
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
|
@override
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
_$$SongLinkImplCopyWith<_$SongLinkImpl> get copyWith =>
|
_$$SongLinkImplCopyWith<_$SongLinkImpl> get copyWith =>
|
||||||
@ -313,8 +323,11 @@ abstract class _SongLink implements SongLink {
|
|||||||
String? get nativeAppUriMobile;
|
String? get nativeAppUriMobile;
|
||||||
@override
|
@override
|
||||||
String? get nativeAppUriDesktop;
|
String? get nativeAppUriDesktop;
|
||||||
|
|
||||||
|
/// Create a copy of SongLink
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@override
|
@override
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
_$$SongLinkImplCopyWith<_$SongLinkImpl> get copyWith =>
|
_$$SongLinkImplCopyWith<_$SongLinkImpl> get copyWith =>
|
||||||
throw _privateConstructorUsedError;
|
throw _privateConstructorUsedError;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,19 +1,11 @@
|
|||||||
# Project-level configuration.
|
cmake_minimum_required(VERSION 3.10)
|
||||||
cmake_minimum_required(VERSION 3.13)
|
|
||||||
project(runner LANGUAGES CXX)
|
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")
|
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")
|
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)
|
cmake_policy(SET CMP0063 NEW)
|
||||||
|
|
||||||
# Load bundled libraries from the lib/ directory relative to the binary.
|
|
||||||
set(CMAKE_INSTALL_RPATH "$ORIGIN/lib")
|
set(CMAKE_INSTALL_RPATH "$ORIGIN/lib")
|
||||||
|
|
||||||
# Root filesystem for cross-building.
|
# Root filesystem for cross-building.
|
||||||
@ -26,7 +18,7 @@ if(FLUTTER_TARGET_PLATFORM_SYSROOT)
|
|||||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Define build configuration options.
|
# Configure build options.
|
||||||
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
||||||
set(CMAKE_BUILD_TYPE "Debug" CACHE
|
set(CMAKE_BUILD_TYPE "Debug" CACHE
|
||||||
STRING "Flutter build mode" FORCE)
|
STRING "Flutter build mode" FORCE)
|
||||||
@ -35,31 +27,35 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Compilation settings that should be applied to most targets.
|
# 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)
|
function(APPLY_STANDARD_SETTINGS TARGET)
|
||||||
target_compile_features(${TARGET} PUBLIC cxx_std_14)
|
target_compile_features(${TARGET} PUBLIC cxx_std_14)
|
||||||
target_compile_options(${TARGET} PRIVATE -Wall -Werror)
|
target_compile_options(${TARGET} PRIVATE -Wall -Werror)
|
||||||
target_compile_options(${TARGET} PRIVATE "$<$<NOT:$<CONFIG:Debug>>:-O3>")
|
target_compile_options(${TARGET} PRIVATE "$<$<NOT:$<CONFIG:Debug>>:-O3>")
|
||||||
target_compile_definitions(${TARGET} PRIVATE "$<$<NOT:$<CONFIG:Debug>>:NDEBUG>")
|
target_compile_definitions(${TARGET} PRIVATE "$<$<NOT:$<CONFIG:Debug>>:NDEBUG>")
|
||||||
|
target_compile_options(${TARGET} PRIVATE -Wno-error=deprecated-declarations)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# Flutter library and tool build rules.
|
|
||||||
set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter")
|
set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter")
|
||||||
|
|
||||||
|
# Flutter library and tool build rules.
|
||||||
add_subdirectory(${FLUTTER_MANAGED_DIR})
|
add_subdirectory(${FLUTTER_MANAGED_DIR})
|
||||||
|
|
||||||
# System-level dependencies.
|
# System-level dependencies.
|
||||||
find_package(PkgConfig REQUIRED)
|
find_package(PkgConfig REQUIRED)
|
||||||
pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0)
|
pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0)
|
||||||
|
|
||||||
# Application build; see runner/CMakeLists.txt.
|
add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}")
|
||||||
add_subdirectory("runner")
|
|
||||||
|
|
||||||
# Run the Flutter tool portions of the build. This must not be removed.
|
# 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)
|
||||||
add_dependencies(${BINARY_NAME} flutter_assemble)
|
add_dependencies(${BINARY_NAME} flutter_assemble)
|
||||||
|
|
||||||
# Only the install-generated bundle's copy of the executable will launch
|
# Only the install-generated bundle's copy of the executable will launch
|
||||||
# correctly, since the resources must in the right relative locations. To avoid
|
# 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
|
# people trying to run the unbundled copy, put it in a subdirectory instead of
|
||||||
@ -69,11 +65,12 @@ set_target_properties(${BINARY_NAME}
|
|||||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run"
|
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
# Generated plugin build rules, which manage building the plugins and adding
|
# Generated plugin build rules, which manage building the plugins and adding
|
||||||
# them to the application.
|
# them to the application.
|
||||||
include(flutter/generated_plugins.cmake)
|
include(flutter/generated_plugins.cmake)
|
||||||
|
|
||||||
|
target_link_libraries(${BINARY_NAME} PRIVATE ${MIMALLOC_LIB})
|
||||||
|
|
||||||
|
|
||||||
# === Installation ===
|
# === Installation ===
|
||||||
# By default, "installing" just makes a relocatable bundle in the build
|
# By default, "installing" just makes a relocatable bundle in the build
|
||||||
@ -100,17 +97,11 @@ install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}
|
|||||||
install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
|
install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
|
||||||
COMPONENT Runtime)
|
COMPONENT Runtime)
|
||||||
|
|
||||||
foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES})
|
if(PLUGIN_BUNDLED_LIBRARIES)
|
||||||
install(FILES "${bundled_library}"
|
install(FILES "${PLUGIN_BUNDLED_LIBRARIES}"
|
||||||
DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
|
DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
|
||||||
COMPONENT Runtime)
|
COMPONENT Runtime)
|
||||||
endforeach(bundled_library)
|
endif()
|
||||||
|
|
||||||
# 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
|
# Fully re-copy the assets directory on each build to avoid having stale files
|
||||||
# from a previous install.
|
# from a previous install.
|
||||||
|
|||||||
72
linux/com.github.KRTirtho.Spotube.appdata.xml
Normal file
72
linux/com.github.KRTirtho.Spotube.appdata.xml
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<component type="desktop-application">
|
||||||
|
<id>com.github.KRTirtho.Spotube</id>
|
||||||
|
<name>Spotube</name>
|
||||||
|
<summary>
|
||||||
|
Freedom of music
|
||||||
|
</summary>
|
||||||
|
<metadata_license>CC0-1.0</metadata_license>
|
||||||
|
<project_license>BSD-4-Clause</project_license>
|
||||||
|
<recommends>
|
||||||
|
<control>pointing</control>
|
||||||
|
<control>keyboard</control>
|
||||||
|
<control>touch</control>
|
||||||
|
</recommends>
|
||||||
|
<developer_name>Kingkor Roy Tirtho</developer_name>
|
||||||
|
<url type="bugtracker">https://github.com/krtirtho/spotube/issues</url>
|
||||||
|
<url type="homepage">https://spotube.krtirtho.dev</url>
|
||||||
|
<url type="donation">https://opencollective.com/spotube</url>
|
||||||
|
<description>
|
||||||
|
<p>Open source Spotify client that doesn't require Premium nor uses Electron! Available for
|
||||||
|
both desktop & mobile!</p>
|
||||||
|
<p>Following are the features that currently spotube offers:</p>
|
||||||
|
<ul>
|
||||||
|
<li>🚫 No ads, thanks to the use of public & free Spotify and YT Music APIs¹</li>
|
||||||
|
<li>⬇️ Downloadable tracks</li>
|
||||||
|
<li>🖥️ 📱 Cross-platform support</li>
|
||||||
|
<li>🪶 Small size & less data usage</li>
|
||||||
|
<li>🕵️ Anonymous/guest login</li>
|
||||||
|
<li>🕒 Time synced lyrics</li>
|
||||||
|
<li>✋ No telemetry, diagnostics or user data collection</li>
|
||||||
|
<li>🚀 Native performance</li>
|
||||||
|
<li>📖 Open source/libre software</li>
|
||||||
|
<li>🔉 Playback control is done locally, not on the server</li>
|
||||||
|
</ul>
|
||||||
|
</description>
|
||||||
|
<screenshots>
|
||||||
|
<screenshot type="default">
|
||||||
|
<image type="source">
|
||||||
|
https://rawcdn.githack.com/KRTirtho/spotube/refs/heads/master/assets/spotube-screenshot.png
|
||||||
|
</image>
|
||||||
|
<caption>Spotube screenshot</caption>
|
||||||
|
</screenshot>
|
||||||
|
</screenshots>
|
||||||
|
<launchable type="desktop-id">com.github.KRTirtho.Spotube.desktop</launchable>
|
||||||
|
<releases> %{{APPDATA_RELEASE}}% <release version="2.6.0" date="2022-12-09" />
|
||||||
|
<release
|
||||||
|
version="2.5.0" date="2022-10-13" />
|
||||||
|
<release version="2.4.1" date="2022-09-13" />
|
||||||
|
<release
|
||||||
|
version="2.4.0" date="2022-09-09" />
|
||||||
|
<release version="2.3.1" date="2022-07-11" />
|
||||||
|
<release
|
||||||
|
version="2.2.1" date="2022-06-09" />
|
||||||
|
<release version="2.2.0" date="2022-06-05" />
|
||||||
|
<release
|
||||||
|
version="2.1.0" date="2022-05-10" />
|
||||||
|
<release version="2.0.0" date="2022-03-24" />
|
||||||
|
<release
|
||||||
|
version="1.2.0" date="2022-02-02" />
|
||||||
|
<release version="1.1.0" date="2022-01-27" />
|
||||||
|
<release
|
||||||
|
version="1.0.1" date="2022-01-15" />
|
||||||
|
<release version="1.0.0" date="2022-01-14" />
|
||||||
|
<release
|
||||||
|
version="0.0.3" date="2021-05-08" />
|
||||||
|
<release version="0.0.2" date="2021-03-31" />
|
||||||
|
<release
|
||||||
|
version="0.0.1" date="2021-03-20" />
|
||||||
|
</releases>
|
||||||
|
<content_rating type="oars-1.1" />
|
||||||
|
<update_contact>krtirtho@gmail.com</update_contact>
|
||||||
|
</component>
|
||||||
@ -1,4 +1,3 @@
|
|||||||
# This file controls Flutter-level build steps. It should not be edited.
|
|
||||||
cmake_minimum_required(VERSION 3.10)
|
cmake_minimum_required(VERSION 3.10)
|
||||||
|
|
||||||
set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral")
|
set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral")
|
||||||
|
|||||||
@ -17,6 +17,13 @@ G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION)
|
|||||||
// Implements GApplication::activate.
|
// Implements GApplication::activate.
|
||||||
static void my_application_activate(GApplication* application) {
|
static void my_application_activate(GApplication* application) {
|
||||||
MyApplication* self = MY_APPLICATION(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 =
|
GtkWindow* window =
|
||||||
GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application)));
|
GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application)));
|
||||||
|
|
||||||
@ -51,7 +58,8 @@ static void my_application_activate(GApplication* application) {
|
|||||||
gtk_widget_show(GTK_WIDGET(window));
|
gtk_widget_show(GTK_WIDGET(window));
|
||||||
|
|
||||||
g_autoptr(FlDartProject) project = fl_dart_project_new();
|
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);
|
FlView* view = fl_view_new(project);
|
||||||
gtk_widget_show(GTK_WIDGET(view));
|
gtk_widget_show(GTK_WIDGET(view));
|
||||||
@ -63,40 +71,24 @@ static void my_application_activate(GApplication* application) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Implements GApplication::local_command_line.
|
// 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);
|
MyApplication* self = MY_APPLICATION(application);
|
||||||
// Strip out the first argument as it is the binary name.
|
// Strip out the first argument as it is the binary name.
|
||||||
self->dart_entrypoint_arguments = g_strdupv(*arguments + 1);
|
self->dart_entrypoint_arguments = g_strdupv(*arguments + 1);
|
||||||
|
|
||||||
g_autoptr(GError) error = nullptr;
|
g_autoptr(GError) error = nullptr;
|
||||||
if (!g_application_register(application, nullptr, &error)) {
|
if (!g_application_register(application, nullptr, &error)) {
|
||||||
g_warning("Failed to register: %s", error->message);
|
g_warning("Failed to register: %s", error->message);
|
||||||
*exit_status = 1;
|
*exit_status = 1;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_application_activate(application);
|
g_application_activate(application);
|
||||||
*exit_status = 0;
|
*exit_status = 0;
|
||||||
|
|
||||||
return TRUE;
|
return FALSE;
|
||||||
}
|
|
||||||
|
|
||||||
// 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.
|
// Implements GObject::dispose.
|
||||||
@ -108,23 +100,31 @@ static void my_application_dispose(GObject* object) {
|
|||||||
|
|
||||||
static void my_application_class_init(MyApplicationClass* klass) {
|
static void my_application_class_init(MyApplicationClass* klass) {
|
||||||
G_APPLICATION_CLASS(klass)->activate = my_application_activate;
|
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 =
|
||||||
G_APPLICATION_CLASS(klass)->startup = my_application_startup;
|
my_application_local_command_line;
|
||||||
G_APPLICATION_CLASS(klass)->shutdown = my_application_shutdown;
|
|
||||||
G_OBJECT_CLASS(klass)->dispose = my_application_dispose;
|
G_OBJECT_CLASS(klass)->dispose = my_application_dispose;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void my_application_init(MyApplication* self) {}
|
static void my_application_init(MyApplication* self) {}
|
||||||
|
|
||||||
MyApplication* my_application_new() {
|
bool is_flatpak(void) {
|
||||||
// Set the program name to the application ID, which helps various systems
|
if (getenv("container") || getenv("FLATPAK_ID") || getenv("FLATPAK")) {
|
||||||
// like GTK and desktop environments map this running application to its
|
/* flatpak */
|
||||||
// corresponding .desktop file. This ensures better integration by allowing
|
return true;
|
||||||
// the application to be recognized beyond its binary name.
|
}
|
||||||
g_set_prgname(APPLICATION_ID);
|
return false; /* No container detected */
|
||||||
|
|
||||||
return MY_APPLICATION(g_object_new(my_application_get_type(),
|
|
||||||
"application-id", APPLICATION_ID,
|
|
||||||
"flags", G_APPLICATION_NON_UNIQUE,
|
|
||||||
nullptr));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MyApplication* my_application_new() {
|
||||||
|
// gchar based alternate MY_APPLICATION_ID
|
||||||
|
const char* my_application_id = 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));
|
||||||
|
}
|
||||||
16
linux/packaging/appimage/make_config.yaml
Normal file
16
linux/packaging/appimage/make_config.yaml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
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
|
||||||
47
linux/packaging/deb/make_config.yaml
Normal file
47
linux/packaging/deb/make_config.yaml
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
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
|
||||||
38
linux/packaging/rpm/make_config.yaml
Normal file
38
linux/packaging/rpm/make_config.yaml
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
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
|
||||||
@ -1,26 +0,0 @@
|
|||||||
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}")
|
|
||||||
9
linux/spotube.desktop
Normal file
9
linux/spotube.desktop
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
[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;
|
||||||
@ -1,12 +0,0 @@
|
|||||||
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.
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
57
pubspec.lock
57
pubspec.lock
@ -5,18 +5,23 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: _fe_analyzer_shared
|
name: _fe_analyzer_shared
|
||||||
sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7"
|
sha256: "16e298750b6d0af7ce8a3ba7c18c69c3785d11b15ec83f6dcd0ad2a0009b3cab"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "67.0.0"
|
version: "76.0.0"
|
||||||
|
_macros:
|
||||||
|
dependency: transitive
|
||||||
|
description: dart
|
||||||
|
source: sdk
|
||||||
|
version: "0.3.3"
|
||||||
analyzer:
|
analyzer:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: analyzer
|
name: analyzer
|
||||||
sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d"
|
sha256: "1f14db053a8c23e260789e9b0980fa27f2680dd640932cae5e1137cce0e46e1e"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.4.1"
|
version: "6.11.0"
|
||||||
analyzer_plugin:
|
analyzer_plugin:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -478,10 +483,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: dart_style
|
name: dart_style
|
||||||
sha256: "99e066ce75c89d6b29903d788a7bb9369cf754f7b24bf70bf4b6d6d6b26853b9"
|
sha256: "7856d364b589d1f08986e140938578ed36ed948581fbc3bc9aef1805039ac5ab"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.6"
|
version: "2.3.7"
|
||||||
dartx:
|
dartx:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -577,18 +582,18 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: drift
|
name: drift
|
||||||
sha256: df027d168a2985a2e9da900adeba2ab0136f0d84436592cf3cd5135f82c8579c
|
sha256: c2d073d35ad441730812f4ea05b5dd031fb81c5f9786a4f5fb77ecd6307b6f74
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.21.0"
|
version: "2.22.1"
|
||||||
drift_dev:
|
drift_dev:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
name: drift_dev
|
name: drift_dev
|
||||||
sha256: "623649abe932fc17bd32e578e7e05f7ac5e7dd0b33e6c8669a0634105d1389bf"
|
sha256: f4ab5d6976b1e31551ceb82ff597a505bda7818ff4f7be08a1da9d55eb6e730c
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.21.2"
|
version: "2.22.1"
|
||||||
duration:
|
duration:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -804,10 +809,10 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: flutter_form_builder
|
name: flutter_form_builder
|
||||||
sha256: "375da52998c72f80dec9187bd93afa7ab202b89d5d066699368ff96d39fd4876"
|
sha256: "39aee5a2548df0b3979a83eea38468116a888341fbca8a92c4be18a486a7bb57"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "9.7.0"
|
version: "9.6.0"
|
||||||
flutter_gen_core:
|
flutter_gen_core:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1044,10 +1049,10 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: form_builder_validators
|
name: form_builder_validators
|
||||||
sha256: cd617fa346250293ff3e2709961d0faf7b80e6e4f0ff7b500126b28d7422dd67
|
sha256: "517fb884183fff7a0ef3db7d375981011da26ee452f20fb3d2e788ad527ad01d"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "11.1.2"
|
version: "11.1.1"
|
||||||
form_validator:
|
form_validator:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -1060,10 +1065,10 @@ packages:
|
|||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
name: freezed
|
name: freezed
|
||||||
sha256: a434911f643466d78462625df76fd9eb13e57348ff43fe1f77bbe909522c67a1
|
sha256: "44c19278dd9d89292cf46e97dc0c1e52ce03275f40a97c5a348e802a924bf40e"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.5.2"
|
version: "2.5.7"
|
||||||
freezed_annotation:
|
freezed_annotation:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -1374,10 +1379,10 @@ packages:
|
|||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
name: json_serializable
|
name: json_serializable
|
||||||
sha256: ea1432d167339ea9b5bb153f0571d0039607a873d6e04e0117af043f14a1fd4b
|
sha256: c2fcb3920cf2b6ae6845954186420fca40bc0a8abcc84903b7801f17d7050d7c
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.8.0"
|
version: "6.9.0"
|
||||||
leak_tracker:
|
leak_tracker:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1442,6 +1447,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.2"
|
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:
|
matcher:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -2276,10 +2289,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: sqlparser
|
name: sqlparser
|
||||||
sha256: d77749237609784e337ec36c979d41f6f38a7b279df98622ae23929c8eb954a4
|
sha256: "4cad4b2c5f63dc9ea1a8dcffb58cf762322bea5dd8836870164a65e913bdae41"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.39.2"
|
version: "0.40.0"
|
||||||
stack_trace:
|
stack_trace:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -2436,10 +2449,10 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: tray_manager
|
name: tray_manager
|
||||||
sha256: "80be6c508159a6f3c57983de795209ac13453e9832fd574143b06dceee188ed2"
|
sha256: c2da0f0f1ddb455e721cf68d05d1281fec75cf5df0a1d3cb67b6ca0bdfd5709d
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.3.2"
|
version: "0.4.0"
|
||||||
type_plus:
|
type_plus:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
@ -102,7 +102,7 @@ dependencies:
|
|||||||
ref: dart-3-support
|
ref: dart-3-support
|
||||||
url: https://github.com/KRTirtho/scrobblenaut.git
|
url: https://github.com/KRTirtho/scrobblenaut.git
|
||||||
scroll_to_index: ^3.0.1
|
scroll_to_index: ^3.0.1
|
||||||
shadcn_flutter: ^0.0.26
|
shadcn_flutter: ^0.0.32
|
||||||
shared_preferences: ^2.2.3
|
shared_preferences: ^2.2.3
|
||||||
shelf: ^1.4.1
|
shelf: ^1.4.1
|
||||||
shelf_router: ^1.1.4
|
shelf_router: ^1.1.4
|
||||||
@ -120,7 +120,7 @@ dependencies:
|
|||||||
test: ^1.25.7
|
test: ^1.25.7
|
||||||
timezone: ^0.10.0
|
timezone: ^0.10.0
|
||||||
titlebar_buttons: ^1.0.0
|
titlebar_buttons: ^1.0.0
|
||||||
tray_manager: ^0.3.0
|
tray_manager: ^0.4.0
|
||||||
url_launcher: ^6.2.6
|
url_launcher: ^6.2.6
|
||||||
uuid: ^4.4.0
|
uuid: ^4.4.0
|
||||||
version: ^3.0.2
|
version: ^3.0.2
|
||||||
@ -212,4 +212,4 @@ flutter_native_splash:
|
|||||||
image: assets/spotube-logo_android12.png
|
image: assets/spotube-logo_android12.png
|
||||||
branding: assets/branding.png
|
branding: assets/branding.png
|
||||||
color: "#000000"
|
color: "#000000"
|
||||||
icon_background_color: "#000000"
|
icon_background_color: "#000000"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user