forked from Nexus/nexus
Remove flutter chat (#26)
Had to squash merge manually as Forgejo was erroring
This commit is contained in:
parent
bd1d5ea745
commit
16cf126df4
111 changed files with 3162 additions and 2366 deletions
|
|
@ -4,37 +4,44 @@ import "package:flutter_riverpod/flutter_riverpod.dart";
|
|||
import "package:nexus/controllers/members_controller.dart";
|
||||
import "package:nexus/controllers/profile_controller.dart";
|
||||
import "package:nexus/helpers/extensions/get_localpart.dart";
|
||||
import "package:nexus/models/membership.dart";
|
||||
import "package:nexus/models/configs/user_config.dart";
|
||||
import "package:nexus/models/content/membership.dart";
|
||||
import "package:nexus/models/membership_status.dart";
|
||||
|
||||
class UserController extends AsyncNotifier<Membership?> {
|
||||
final String userId;
|
||||
UserController(this.userId);
|
||||
class UserController extends AsyncNotifier<MembershipContent> {
|
||||
final UserConfig config;
|
||||
UserController(this.config);
|
||||
|
||||
@override
|
||||
Future<Membership?> build() async {
|
||||
final member = await ref.watch(
|
||||
MembersController.provider.selectAsync(
|
||||
(value) =>
|
||||
value.firstWhereOrNull((membership) => membership.userId == userId),
|
||||
),
|
||||
Future<MembershipContent> build() async {
|
||||
final member = config.roomId == null
|
||||
? null
|
||||
: await ref.watch(
|
||||
MembersController.provider(config.roomId!).selectAsync(
|
||||
(value) => value.firstWhereOrNull(
|
||||
(membership) => membership.stateKey == config.userId,
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
if (member?.content case final MembershipContent content) {
|
||||
return content;
|
||||
}
|
||||
|
||||
final profile = await ref.watch(
|
||||
ProfileController.provider(config.userId).future,
|
||||
);
|
||||
|
||||
if (member != null) return member;
|
||||
|
||||
final profile = await ref.watch(ProfileController.provider(userId).future);
|
||||
return Membership(
|
||||
return MembershipContent(
|
||||
status: MembershipStatus.leave,
|
||||
avatarUrl: profile.avatarUrl == null
|
||||
? null
|
||||
: Uri.tryParse(profile.avatarUrl!),
|
||||
displayName: profile.displayName ?? userId.localpart,
|
||||
userId: userId,
|
||||
avatarUrl: profile.avatarUrl,
|
||||
displayName: profile.displayName ?? config.userId.localpart,
|
||||
);
|
||||
}
|
||||
|
||||
static final provider =
|
||||
AsyncNotifierProvider.family<UserController, Membership?, String>(
|
||||
UserController.new,
|
||||
);
|
||||
AsyncNotifierProvider.family<
|
||||
UserController,
|
||||
MembershipContent,
|
||||
UserConfig
|
||||
>(UserController.new);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue