diff --git a/lib/helpers/extensions/show_user_popover.dart b/lib/helpers/extensions/show_user_popover.dart index 1698879..1ef68e9 100644 --- a/lib/helpers/extensions/show_user_popover.dart +++ b/lib/helpers/extensions/show_user_popover.dart @@ -1,18 +1,24 @@ import "package:flutter/material.dart"; import "package:nexus/helpers/extensions/show_context_menu.dart"; -import "package:nexus/models/membership.dart"; +import "package:nexus/models/content/membership.dart"; import "package:nexus/widgets/chat_page/user_popover.dart"; extension ShowUserPopover on BuildContext { - void showUserPopover(Membership member, {required Offset globalPosition}) => - showContextMenu( - globalPosition: globalPosition, - children: [ - PopupMenuItem( - enabled: false, - padding: EdgeInsets.symmetric(horizontal: 16, vertical: 8), - child: IconTheme(data: IconThemeData(), child: UserPopover(member)), - ), - ], - ); + void showUserPopover( + MembershipContent member, + String userId, { + required Offset globalPosition, + }) => showContextMenu( + globalPosition: globalPosition, + children: [ + PopupMenuItem( + enabled: false, + padding: EdgeInsets.symmetric(horizontal: 16, vertical: 8), + child: IconTheme( + data: IconThemeData(), + child: UserPopover(member, userId), + ), + ), + ], + ); } diff --git a/lib/widgets/chat_page/user_popover.dart b/lib/widgets/chat_page/user_popover.dart index a9a4799..115bcda 100644 --- a/lib/widgets/chat_page/user_popover.dart +++ b/lib/widgets/chat_page/user_popover.dart @@ -9,7 +9,7 @@ import "package:nexus/controllers/profile_controller.dart"; import "package:nexus/controllers/selected_room_controller.dart"; import "package:nexus/helpers/extensions/better_when.dart"; import "package:nexus/models/configs/power_level_config.dart"; -import "package:nexus/models/membership.dart"; +import "package:nexus/models/content/membership.dart"; import "package:nexus/models/membership_status.dart"; import "package:nexus/models/requests/membership_action.dart"; import "package:nexus/models/requests/set_membership_request.dart"; @@ -19,8 +19,9 @@ import "package:nexus/widgets/chat_page/expandable_image.dart"; import "package:nexus/widgets/form_text_input.dart"; class UserPopover extends ConsumerWidget { - final Membership member; - const UserPopover(this.member, {super.key}); + final MembershipContent member; + final String userId; + const UserPopover(this.member, this.userId, {super.key}); @override Widget build(BuildContext context, WidgetRef ref) { @@ -37,16 +38,12 @@ class UserPopover extends ConsumerWidget { builder: (context) { final actionReasonController = useTextEditingController(); return AlertDialog( - title: Text( - "${toBeginningOfSentenceCase(action.name)} ${member.userId}", - ), + title: Text("${toBeginningOfSentenceCase(action.name)} $userId"), content: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - "Are you sure you want to ${action.name} ${member.userId}?", - ), + Text("Are you sure you want to ${action.name} $userId?"), SizedBox(height: 12), FormTextInput( required: false, @@ -67,7 +64,7 @@ class UserPopover extends ConsumerWidget { client .setMembership( SetMembershipRequest( - userId: member.userId, + userId: userId, roomId: roomId!, action: action, reason: actionReasonController.text, @@ -107,10 +104,10 @@ class UserPopover extends ConsumerWidget { member.displayName, style: textTheme.headlineSmall, ), - SelectableText(member.userId, style: textTheme.titleSmall), + SelectableText(userId, style: textTheme.titleSmall), SizedBox(height: 4), ref - .watch(ProfileController.provider(member.userId)) + .watch(ProfileController.provider(userId)) .betterWhen( loading: SizedBox.shrink, data: (profile) => Wrap( @@ -145,8 +142,7 @@ class UserPopover extends ConsumerWidget { ), ], ), - if (member.userId != - ref.watch(ClientStateController.provider)?.userId && + if (userId != ref.watch(ClientStateController.provider)?.userId && roomId != null) Wrap( spacing: 8, @@ -160,7 +156,7 @@ class UserPopover extends ConsumerWidget { eventType: "m.room.member", action: MembershipAction.kick, isStateEvent: true, - targetUser: member.userId, + targetUser: userId, ), ), ) && @@ -184,7 +180,7 @@ class UserPopover extends ConsumerWidget { eventType: "m.room.member", action: MembershipAction.ban, isStateEvent: true, - targetUser: member.userId, + targetUser: userId, ), ), ))