spotube/lib/provider/metadata_plugin/artist/related.dart

37 lines
1.1 KiB
Dart

import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:spotube/models/metadata/metadata.dart';
import 'package:spotube/provider/metadata_plugin/metadata_plugin_provider.dart';
import 'package:spotube/provider/metadata_plugin/utils/family_paginated.dart';
class MetadataPluginArtistRelatedArtistsNotifier
extends FamilyPaginatedAsyncNotifier<SpotubeFullArtistObject, String> {
@override
Future<SpotubeFlattenedPaginationObject<SpotubeFullArtistObject>> fetch(
int offset,
int limit,
) async {
return await (await metadataPlugin)
.artist
.related(
id: arg,
limit: limit,
offset: offset,
mpscTx: await mpscTx,
)
.then((a) => a.flatten());
}
@override
build(arg) async {
ref.watch(metadataPluginProvider);
return await fetch(0, 20);
}
}
final metadataPluginArtistRelatedArtistsProvider = AsyncNotifierProviderFamily<
MetadataPluginArtistRelatedArtistsNotifier,
SpotubeFlattenedPaginationObject<SpotubeFullArtistObject>,
String>(
() => MetadataPluginArtistRelatedArtistsNotifier(),
);