♻️ Refactored publisher subscription

This commit is contained in:
2025-12-23 00:23:25 +08:00
parent 33686b83e3
commit 0a179acb13
12 changed files with 563 additions and 414 deletions

View File

@@ -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

View File

@@ -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,