Developer app basis

This commit is contained in:
2025-06-29 23:00:51 +08:00
parent 450d5ebc81
commit 356b7bf01a
15 changed files with 1813 additions and 92 deletions

View File

@ -356,13 +356,7 @@ class CreatorHubScreen extends HookConsumerWidget {
),
ListTile(
minTileHeight: 48,
title: Text('members').plural(
ref
.watch(publisherMemberStateProvider(
currentPublisher.value!.name,
))
.total,
),
title: Text('publisherMembers').tr(),
trailing: Icon(Symbols.chevron_right),
leading: const Icon(Symbols.group),
contentPadding: EdgeInsets.symmetric(
@ -537,23 +531,22 @@ class PublisherMemberState {
}
final publisherMemberStateProvider = StateNotifierProvider.family<
PublisherMemberNotifier, PublisherMemberState, String>(
(ref, publisherUname) {
final apiClient = ref.watch(apiClientProvider);
return PublisherMemberNotifier(apiClient, publisherUname);
},
);
PublisherMemberNotifier,
PublisherMemberState,
String
>((ref, publisherUname) {
final apiClient = ref.watch(apiClientProvider);
return PublisherMemberNotifier(apiClient, publisherUname);
});
class PublisherMemberNotifier extends StateNotifier<PublisherMemberState> {
final String publisherUname;
final Dio _apiClient;
PublisherMemberNotifier(this._apiClient, this.publisherUname)
: super(const PublisherMemberState(
members: [],
isLoading: false,
total: 0,
));
: super(
const PublisherMemberState(members: [], isLoading: false, total: 0),
);
Future<void> loadMore({int offset = 0, int take = 20}) async {
if (state.isLoading) return;
@ -569,8 +562,7 @@ class PublisherMemberNotifier extends StateNotifier<PublisherMemberState> {
final total = int.parse(response.headers.value('X-Total') ?? '0');
final List<dynamic> data = response.data;
final members =
data.map((e) => SnPublisherMember.fromJson(e)).toList();
final members = data.map((e) => SnPublisherMember.fromJson(e)).toList();
state = state.copyWith(
members: [...state.members, ...members],
@ -596,8 +588,9 @@ class _PublisherMemberListSheet extends HookConsumerWidget {
final publisherIdentity = ref.watch(
publisherIdentityProvider(publisherUname),
);
final memberListProvider =
publisherMemberListNotifierProvider(publisherUname);
final memberListProvider = publisherMemberListNotifierProvider(
publisherUname,
);
final memberState = ref.watch(publisherMemberStateProvider(publisherUname));
final memberNotifier = ref.read(
publisherMemberStateProvider(publisherUname).notifier,
@ -642,9 +635,9 @@ class _PublisherMemberListSheet extends HookConsumerWidget {
Text(
'members'.plural(memberState.total),
style: Theme.of(context).textTheme.headlineSmall?.copyWith(
fontWeight: FontWeight.w600,
letterSpacing: -0.5,
),
fontWeight: FontWeight.w600,
letterSpacing: -0.5,
),
),
const Spacer(),
IconButton(