♻️ Refactored publisher subscription
This commit is contained in:
@@ -33,7 +33,7 @@ part 'publisher_profile.g.dart';
|
||||
|
||||
class _PublisherBasisWidget extends StatelessWidget {
|
||||
final SnPublisher data;
|
||||
final AsyncValue<SnSubscriptionStatus> subStatus;
|
||||
final AsyncValue<SnPublisherSubscription?> subStatus;
|
||||
final ValueNotifier<bool> subscribing;
|
||||
final VoidCallback subscribe;
|
||||
final VoidCallback unsubscribe;
|
||||
@@ -208,16 +208,16 @@ class _PublisherBasisWidget extends StatelessWidget {
|
||||
data: (status) => FilledButton.icon(
|
||||
onPressed: subscribing.value
|
||||
? null
|
||||
: (status.isSubscribed
|
||||
: (status != null
|
||||
? unsubscribe
|
||||
: subscribe),
|
||||
icon: Icon(
|
||||
status.isSubscribed
|
||||
status != null
|
||||
? Symbols.remove_circle
|
||||
: Symbols.add_circle,
|
||||
),
|
||||
label: Text(
|
||||
status.isSubscribed
|
||||
status != null
|
||||
? 'unsubscribe'
|
||||
: 'subscribe',
|
||||
).tr(),
|
||||
@@ -366,13 +366,16 @@ Future<List<SnAccountBadge>> publisherBadges(Ref ref, String pubName) async {
|
||||
}
|
||||
|
||||
@riverpod
|
||||
Future<SnSubscriptionStatus> publisherSubscriptionStatus(
|
||||
Future<SnPublisherSubscription?> publisherSubscriptionStatus(
|
||||
Ref ref,
|
||||
String pubName,
|
||||
) async {
|
||||
final apiClient = ref.watch(apiClientProvider);
|
||||
final resp = await apiClient.get("/sphere/publishers/$pubName/subscription");
|
||||
return SnSubscriptionStatus.fromJson(resp.data);
|
||||
if (resp.statusCode == 200) {
|
||||
return SnPublisherSubscription.fromJson(resp.data);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@riverpod
|
||||
|
||||
@@ -168,13 +168,13 @@ const publisherSubscriptionStatusProvider =
|
||||
final class PublisherSubscriptionStatusProvider
|
||||
extends
|
||||
$FunctionalProvider<
|
||||
AsyncValue<SnSubscriptionStatus>,
|
||||
SnSubscriptionStatus,
|
||||
FutureOr<SnSubscriptionStatus>
|
||||
AsyncValue<SnPublisherSubscription?>,
|
||||
SnPublisherSubscription?,
|
||||
FutureOr<SnPublisherSubscription?>
|
||||
>
|
||||
with
|
||||
$FutureModifier<SnSubscriptionStatus>,
|
||||
$FutureProvider<SnSubscriptionStatus> {
|
||||
$FutureModifier<SnPublisherSubscription?>,
|
||||
$FutureProvider<SnPublisherSubscription?> {
|
||||
const PublisherSubscriptionStatusProvider._({
|
||||
required PublisherSubscriptionStatusFamily super.from,
|
||||
required String super.argument,
|
||||
@@ -198,12 +198,12 @@ final class PublisherSubscriptionStatusProvider
|
||||
|
||||
@$internal
|
||||
@override
|
||||
$FutureProviderElement<SnSubscriptionStatus> $createElement(
|
||||
$FutureProviderElement<SnPublisherSubscription?> $createElement(
|
||||
$ProviderPointer pointer,
|
||||
) => $FutureProviderElement(pointer);
|
||||
|
||||
@override
|
||||
FutureOr<SnSubscriptionStatus> create(Ref ref) {
|
||||
FutureOr<SnPublisherSubscription?> create(Ref ref) {
|
||||
final argument = this.argument as String;
|
||||
return publisherSubscriptionStatus(ref, argument);
|
||||
}
|
||||
@@ -221,10 +221,10 @@ final class PublisherSubscriptionStatusProvider
|
||||
}
|
||||
|
||||
String _$publisherSubscriptionStatusHash() =>
|
||||
r'634262ce519e1c8288267df11e08e1d4acaa4a44';
|
||||
r'accf6a0cdf98f8b0474d94ac575e8b20448adc79';
|
||||
|
||||
final class PublisherSubscriptionStatusFamily extends $Family
|
||||
with $FunctionalFamilyOverride<FutureOr<SnSubscriptionStatus>, String> {
|
||||
with $FunctionalFamilyOverride<FutureOr<SnPublisherSubscription?>, String> {
|
||||
const PublisherSubscriptionStatusFamily._()
|
||||
: super(
|
||||
retry: null,
|
||||
|
||||
Reference in New Issue
Block a user