mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-13 07:55:18 +00:00
fix: local track not working and images of local not showing up
This commit is contained in:
parent
c615d48e27
commit
5add53e269
@ -74,6 +74,7 @@ class TrackTile extends HookConsumerWidget {
|
||||
|
||||
final isSelected = isPlaying || isLoading.value;
|
||||
|
||||
print('track.album.images: ${track.album.images}');
|
||||
final imageProvider = useMemoized(
|
||||
() => UniversalImage.imageProvider(
|
||||
(track.album.images).smallest(ImagePlaceholder.albumArt),
|
||||
|
@ -60,6 +60,14 @@ class SpotubeTrackObject with _$SpotubeTrackObject {
|
||||
],
|
||||
releaseDate:
|
||||
metadata?.year != null ? "${metadata!.year}-01-01" : "1970-01-01",
|
||||
images: [
|
||||
if (art != null)
|
||||
SpotubeImageObject(
|
||||
url: art,
|
||||
width: 300,
|
||||
height: 300,
|
||||
),
|
||||
],
|
||||
),
|
||||
durationMs: metadata?.durationMs?.toInt() ?? 0,
|
||||
path: file.path,
|
||||
|
@ -39,8 +39,9 @@ class TrackSourceQuery with _$TrackSourceQuery {
|
||||
/// Parses [SpotubeMedia]'s [uri] property to create a [TrackSourceQuery].
|
||||
factory TrackSourceQuery.parseUri(String url) {
|
||||
final uri = Uri.parse(url);
|
||||
final isLocal = uri.queryParameters.isEmpty;
|
||||
return TrackSourceQuery(
|
||||
id: uri.pathSegments.last,
|
||||
id: isLocal ? uri.path : uri.pathSegments.last,
|
||||
title: uri.queryParameters['title'] ?? '',
|
||||
artists: uri.queryParameters['artists']?.split(',') ?? [],
|
||||
album: uri.queryParameters['album'] ?? '',
|
||||
|
@ -11,10 +11,15 @@ final queryingTrackInfoProvider = Provider<bool>((ref) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (audioPlayer.activeTrack is! SpotubeFullTrackObject) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return ref
|
||||
.watch(trackSourcesProvider(
|
||||
TrackSourceQuery.fromTrack(
|
||||
audioPlayer.activeTrack! as SpotubeFullTrackObject),
|
||||
audioPlayer.activeTrack! as SpotubeFullTrackObject,
|
||||
),
|
||||
))
|
||||
.isLoading;
|
||||
});
|
||||
|
@ -80,13 +80,16 @@ Future<void> _sendActiveTrack(SpotubeTrackObject? track) async {
|
||||
|
||||
final jsonTrack = track.toJson();
|
||||
|
||||
final image = track.album?.images.first;
|
||||
final cachedImage = await DefaultCacheManager().getSingleFile(image!.url);
|
||||
final image = track.album.images.firstOrNull;
|
||||
final cachedImage = image == null
|
||||
? null
|
||||
: await DefaultCacheManager().getSingleFile(image.url);
|
||||
final data = {
|
||||
...jsonTrack,
|
||||
"album": {
|
||||
...jsonTrack["album"],
|
||||
"images": [
|
||||
if (cachedImage != null && image != null)
|
||||
{
|
||||
...image.toJson(),
|
||||
"path": cachedImage.path,
|
||||
|
@ -35,6 +35,12 @@ const imgMimeToExt = {
|
||||
"image/gif": ".gif",
|
||||
};
|
||||
|
||||
typedef MetadataFile = ({
|
||||
Metadata? metadata,
|
||||
File file,
|
||||
String? art,
|
||||
});
|
||||
|
||||
final localTracksProvider =
|
||||
FutureProvider<Map<String, List<SpotubeLocalTrackObject>>>((ref) async {
|
||||
try {
|
||||
@ -89,7 +95,7 @@ final localTracksProvider =
|
||||
}
|
||||
}
|
||||
|
||||
final List<Map<dynamic, dynamic>> filesWithMetadata = await Future.wait(
|
||||
final List<MetadataFile> filesWithMetadata = await Future.wait(
|
||||
entities.map((file) async {
|
||||
try {
|
||||
final metadata = await MetadataGod.readMetadata(file: file.path);
|
||||
@ -111,10 +117,10 @@ final localTracksProvider =
|
||||
);
|
||||
}
|
||||
|
||||
return {"metadata": metadata, "file": file, "art": imageFile.path};
|
||||
return (metadata: metadata, file: file, art: imageFile.path);
|
||||
} catch (e, stack) {
|
||||
if (e case FrbException() || TimeoutException()) {
|
||||
return {"file": file};
|
||||
return (file: file, metadata: null, art: null);
|
||||
}
|
||||
AppLogger.reportError(e, stack);
|
||||
return null;
|
||||
@ -125,9 +131,9 @@ final localTracksProvider =
|
||||
final tracksFromMetadata = filesWithMetadata
|
||||
.map(
|
||||
(fileWithMetadata) => SpotubeTrackObject.localTrackFromFile(
|
||||
fileWithMetadata["file"] as File,
|
||||
metadata: fileWithMetadata["metadata"] as Metadata?,
|
||||
art: fileWithMetadata["art"] as String?,
|
||||
fileWithMetadata.file,
|
||||
metadata: fileWithMetadata.metadata,
|
||||
art: fileWithMetadata.art,
|
||||
) as SpotubeLocalTrackObject,
|
||||
)
|
||||
.toList();
|
||||
|
35
pubspec.lock
35
pubspec.lock
@ -670,10 +670,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: ffi
|
||||
sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6"
|
||||
sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.3"
|
||||
version: "2.1.4"
|
||||
file:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -795,10 +795,11 @@ packages:
|
||||
flutter_discord_rpc:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_discord_rpc
|
||||
sha256: "9363a803863d56fd89c0a21639c70b126245fcbafaeb0a3d091e7ac06951d03f"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
path: "packages/flutter_discord_rpc"
|
||||
ref: HEAD
|
||||
resolved-ref: "4896f78d32eab4d2508e914ad80a9537f035e407"
|
||||
url: "https://github.com/KRTirtho/frb_plugins.git"
|
||||
source: git
|
||||
version: "1.0.0"
|
||||
flutter_displaymode:
|
||||
dependency: "direct main"
|
||||
@ -983,10 +984,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_rust_bridge
|
||||
sha256: "0ad5079de35d317650fec59b26cb4d0c116ebc2ce703a29f9367513b8a91c287"
|
||||
sha256: "37ef40bc6f863652e865f0b2563ea07f0d3c58d8efad803cc01933a4b2ee067e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.5.0"
|
||||
version: "2.11.1"
|
||||
flutter_secure_storage:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@ -1638,10 +1639,11 @@ packages:
|
||||
metadata_god:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: metadata_god
|
||||
sha256: "025d8149059f62f44108ab9d74ebd77aa8f0af98b238f3f25121a4711ee3e5d0"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
path: "packages/metadata_god"
|
||||
ref: HEAD
|
||||
resolved-ref: "4896f78d32eab4d2508e914ad80a9537f035e407"
|
||||
url: "https://github.com/KRTirtho/frb_plugins.git"
|
||||
source: git
|
||||
version: "1.0.0"
|
||||
mime:
|
||||
dependency: "direct main"
|
||||
@ -2260,10 +2262,11 @@ packages:
|
||||
smtc_windows:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: smtc_windows
|
||||
sha256: "80f7c10867da485ffdf87f842bf27e6763589933c18c11af5dc1cd1e158c3154"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
path: "packages/smtc_windows"
|
||||
ref: HEAD
|
||||
resolved-ref: "4896f78d32eab4d2508e914ad80a9537f035e407"
|
||||
url: "https://github.com/KRTirtho/frb_plugins.git"
|
||||
source: git
|
||||
version: "1.0.0"
|
||||
source_gen:
|
||||
dependency: transitive
|
||||
|
15
pubspec.yaml
15
pubspec.yaml
@ -52,7 +52,10 @@ dependencies:
|
||||
url: https://github.com/KRTirtho/flutter_broadcasts.git
|
||||
ref: 63931dfe06733d4fb7452e9981e1f0b23414d97a
|
||||
flutter_cache_manager: ^3.3.0
|
||||
flutter_discord_rpc: ^1.0.0
|
||||
flutter_discord_rpc:
|
||||
git:
|
||||
url: https://github.com/KRTirtho/frb_plugins.git
|
||||
path: packages/flutter_discord_rpc
|
||||
flutter_displaymode: ^0.6.0
|
||||
flutter_feather_icons: ^2.0.0+1
|
||||
flutter_form_builder: ^9.6.0
|
||||
@ -87,7 +90,10 @@ dependencies:
|
||||
lrc: ^1.0.2
|
||||
media_kit: ^1.1.10+1
|
||||
media_kit_libs_audio: ^1.0.4
|
||||
metadata_god: ^1.0.0
|
||||
metadata_god:
|
||||
git:
|
||||
url: https://github.com/KRTirtho/frb_plugins.git
|
||||
path: packages/metadata_god
|
||||
mime: ^2.0.0
|
||||
open_file: ^3.5.10
|
||||
package_info_plus: ^6.0.0
|
||||
@ -111,7 +117,10 @@ dependencies:
|
||||
skeletonizer: ^2.1.0+1
|
||||
sliding_up_panel: ^2.0.0+1
|
||||
sliver_tools: ^0.2.12
|
||||
smtc_windows: ^1.0.0
|
||||
smtc_windows:
|
||||
git:
|
||||
url: https://github.com/KRTirtho/frb_plugins.git
|
||||
path: packages/smtc_windows
|
||||
sqlite3: ^2.4.3
|
||||
sqlite3_flutter_libs: ^0.5.23
|
||||
stroke_text: ^0.0.2
|
||||
|
Loading…
Reference in New Issue
Block a user