mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-13 16:05:18 +00:00
fix: use chosen market for new release
This commit is contained in:
parent
60a5847ae6
commit
c6bf9b6799
@ -8,6 +8,7 @@ import 'package:spotube/components/album/album_card.dart';
|
|||||||
import 'package:spotube/components/playlist/playlist_card.dart';
|
import 'package:spotube/components/playlist/playlist_card.dart';
|
||||||
import 'package:spotube/components/shared/shimmers/shimmer_playbutton_card.dart';
|
import 'package:spotube/components/shared/shimmers/shimmer_playbutton_card.dart';
|
||||||
import 'package:spotube/components/shared/waypoint.dart';
|
import 'package:spotube/components/shared/waypoint.dart';
|
||||||
|
import 'package:spotube/hooks/use_async_effect.dart';
|
||||||
import 'package:spotube/models/logger.dart';
|
import 'package:spotube/models/logger.dart';
|
||||||
import 'package:spotube/services/queries/queries.dart';
|
import 'package:spotube/services/queries/queries.dart';
|
||||||
import 'package:spotube/utils/type_conversion_utils.dart';
|
import 'package:spotube/utils/type_conversion_utils.dart';
|
||||||
@ -106,6 +107,15 @@ class PersonalizedPage extends HookConsumerWidget {
|
|||||||
|
|
||||||
final newReleases = useQueries.album.newReleases(ref);
|
final newReleases = useQueries.album.newReleases(ref);
|
||||||
|
|
||||||
|
useAsyncEffect(() async {
|
||||||
|
final releases = newReleases.pages.expand(
|
||||||
|
(page) => page.items ?? const Iterable<AlbumSimple>.empty(),
|
||||||
|
);
|
||||||
|
if (releases.isEmpty) {
|
||||||
|
await newReleases.fetchNext();
|
||||||
|
}
|
||||||
|
}, null, [newReleases.pages]);
|
||||||
|
|
||||||
return ListView(
|
return ListView(
|
||||||
children: [
|
children: [
|
||||||
PersonalizedItemCard(
|
PersonalizedItemCard(
|
||||||
|
@ -4,6 +4,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|||||||
import 'package:spotify/spotify.dart';
|
import 'package:spotify/spotify.dart';
|
||||||
import 'package:spotube/hooks/use_spotify_infinite_query.dart';
|
import 'package:spotube/hooks/use_spotify_infinite_query.dart';
|
||||||
import 'package:spotube/hooks/use_spotify_query.dart';
|
import 'package:spotube/hooks/use_spotify_query.dart';
|
||||||
|
import 'package:spotube/provider/user_preferences_provider.dart';
|
||||||
|
|
||||||
class AlbumQueries {
|
class AlbumQueries {
|
||||||
const AlbumQueries();
|
const AlbumQueries();
|
||||||
@ -48,17 +49,17 @@ class AlbumQueries {
|
|||||||
}
|
}
|
||||||
|
|
||||||
InfiniteQuery<Page<AlbumSimple>, dynamic, int> newReleases(WidgetRef ref) {
|
InfiniteQuery<Page<AlbumSimple>, dynamic, int> newReleases(WidgetRef ref) {
|
||||||
|
final market = ref
|
||||||
|
.watch(userPreferencesProvider.select((s) => s.recommendationMarket));
|
||||||
|
|
||||||
return useSpotifyInfiniteQuery<Page<AlbumSimple>, dynamic, int>(
|
return useSpotifyInfiniteQuery<Page<AlbumSimple>, dynamic, int>(
|
||||||
"new-releases",
|
"new-releases",
|
||||||
(pageParam, spotify) async {
|
(pageParam, spotify) async {
|
||||||
try {
|
try {
|
||||||
final albums = await Pages(
|
final albums = await spotify.browse
|
||||||
spotify,
|
.getNewReleases(country: market)
|
||||||
'v1/browse/new-releases',
|
.getPage(5, pageParam);
|
||||||
(json) => AlbumSimple.fromJson(json),
|
|
||||||
'albums',
|
|
||||||
(json) => AlbumSimple.fromJson(json),
|
|
||||||
).getPage(5, pageParam);
|
|
||||||
return albums;
|
return albums;
|
||||||
} catch (e, stack) {
|
} catch (e, stack) {
|
||||||
Catcher.reportCheckedError(e, stack);
|
Catcher.reportCheckedError(e, stack);
|
||||||
@ -68,7 +69,7 @@ class AlbumQueries {
|
|||||||
ref: ref,
|
ref: ref,
|
||||||
initialPage: 0,
|
initialPage: 0,
|
||||||
nextPage: (lastPage, lastPageData) {
|
nextPage: (lastPage, lastPageData) {
|
||||||
if (lastPageData.isLast || (lastPageData.items ?? []).length < 5) {
|
if (lastPageData.isLast) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return lastPageData.nextOffset;
|
return lastPageData.nextOffset;
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import 'package:fl_query/fl_query.dart';
|
import 'package:fl_query/fl_query.dart';
|
||||||
|
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
import 'package:spotify/spotify.dart';
|
import 'package:spotify/spotify.dart';
|
||||||
import 'package:spotube/extensions/map.dart';
|
import 'package:spotube/extensions/map.dart';
|
||||||
@ -10,6 +11,8 @@ class CategoryQueries {
|
|||||||
|
|
||||||
InfiniteQuery<Page<Category>, dynamic, int> list(
|
InfiniteQuery<Page<Category>, dynamic, int> list(
|
||||||
WidgetRef ref, String recommendationMarket) {
|
WidgetRef ref, String recommendationMarket) {
|
||||||
|
final context = useContext();
|
||||||
|
|
||||||
return useSpotifyInfiniteQuery<Page<Category>, dynamic, int>(
|
return useSpotifyInfiniteQuery<Page<Category>, dynamic, int>(
|
||||||
"category-playlists",
|
"category-playlists",
|
||||||
(pageParam, spotify) async {
|
(pageParam, spotify) async {
|
||||||
@ -35,6 +38,10 @@ class CategoryQueries {
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
refreshConfig: RefreshConfig.withDefaults(
|
||||||
|
context,
|
||||||
|
staleDuration: const Duration(minutes: 30),
|
||||||
|
),
|
||||||
ref: ref,
|
ref: ref,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
11
pubspec.lock
11
pubspec.lock
@ -1481,11 +1481,12 @@ packages:
|
|||||||
spotify:
|
spotify:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: spotify
|
path: "."
|
||||||
sha256: db51b46216465631f90218581b97ea08b7bf5c93f1c9a7066fbf3499fe32c774
|
ref: "9e8ef4556942d42d74874de5491253156e7e6f43"
|
||||||
url: "https://pub.dev"
|
resolved-ref: "9e8ef4556942d42d74874de5491253156e7e6f43"
|
||||||
source: hosted
|
url: "https://github.com/rinukkusu/spotify-dart"
|
||||||
version: "0.8.0"
|
source: git
|
||||||
|
version: "0.9.0"
|
||||||
sqflite:
|
sqflite:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -79,7 +79,10 @@ dependencies:
|
|||||||
scroll_to_index: ^3.0.1
|
scroll_to_index: ^3.0.1
|
||||||
shared_preferences: ^2.0.11
|
shared_preferences: ^2.0.11
|
||||||
skeleton_text: ^3.0.0
|
skeleton_text: ^3.0.0
|
||||||
spotify: ^0.8.0
|
spotify:
|
||||||
|
git:
|
||||||
|
url: https://github.com/rinukkusu/spotify-dart
|
||||||
|
ref: 9e8ef4556942d42d74874de5491253156e7e6f43
|
||||||
tuple: ^2.0.1
|
tuple: ^2.0.1
|
||||||
url_launcher: ^6.1.7
|
url_launcher: ^6.1.7
|
||||||
uuid: ^3.0.7
|
uuid: ^3.0.7
|
||||||
|
Loading…
Reference in New Issue
Block a user