From b3cf639ee2f970f4df9b394b260c3ad8a5732a9c Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Tue, 26 Sep 2023 22:34:21 +0600 Subject: [PATCH] fix(android ): file_selector getDirectoryPath returns unusable content urls #720 --- lib/extensions/track.dart | 2 +- lib/pages/settings/settings.dart | 7 ++++++- lib/services/queries/playlist.dart | 5 +++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/extensions/track.dart b/lib/extensions/track.dart index 19935e89..e17e851e 100644 --- a/lib/extensions/track.dart +++ b/lib/extensions/track.dart @@ -7,7 +7,7 @@ extension TrackJson on Track { return { "album": album?.toJson(), "artists": artists?.map((artist) => artist.toJson()).toList(), - "availableMarkets": availableMarkets, + "availableMarkets": availableMarkets?.map((e) => e.name).toList(), "discNumber": discNumber, "duration": duration.toString(), "durationMs": durationMs, diff --git a/lib/pages/settings/settings.dart b/lib/pages/settings/settings.dart index 05c9a7c8..7019de80 100644 --- a/lib/pages/settings/settings.dart +++ b/lib/pages/settings/settings.dart @@ -47,10 +47,15 @@ class SettingsPage extends HookConsumerWidget { }, []); final pickDownloadLocation = useCallback(() async { - final dirStr = await getDirectoryPath( + await openFile(); + String? dirStr = await getDirectoryPath( initialDirectory: preferences.downloadLocation, ); if (dirStr == null) return; + if (DesktopTools.platform.isAndroid && dirStr.startsWith("content://")) { + dirStr = + "/storage/emulated/0/${Uri.decodeFull(dirStr).split("primary:").last}"; + } preferences.setDownloadLocation(dirStr); }, [preferences.downloadLocation]); diff --git a/lib/services/queries/playlist.dart b/lib/services/queries/playlist.dart index a51eab54..16d9d079 100644 --- a/lib/services/queries/playlist.dart +++ b/lib/services/queries/playlist.dart @@ -119,8 +119,9 @@ class PlaylistQueries { return useSpotifyQuery( "playlist-is-followed/$playlistId/$userId", (spotify) async { - final result = await spotify.playlists.followedBy(playlistId, [userId]); - return result.first; + final result = + await spotify.playlists.followedByUsers(playlistId, [userId]); + return result[userId] ?? false; }, ref: ref, );