Remove flutter chat #26

Manually merged
Henry-Hiles merged 108 commits from remove-flutter-chat into main 2026-05-22 15:26:28 -04:00
2 changed files with 30 additions and 28 deletions
Showing only changes of commit 788900d852 - Show all commits

fix all helpers

Henry Hiles 2026-05-16 15:35:45 -04:00
Signed by: Henry-Hiles
SSH key fingerprint: SHA256:VKQUdS31Q90KvX7EkKMHMBpUspcmItAh86a+v7PGiIs

View file

@ -1,18 +1,24 @@
import "package:flutter/material.dart"; import "package:flutter/material.dart";
import "package:nexus/helpers/extensions/show_context_menu.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"; import "package:nexus/widgets/chat_page/user_popover.dart";
extension ShowUserPopover on BuildContext { extension ShowUserPopover on BuildContext {
void showUserPopover(Membership member, {required Offset globalPosition}) => void showUserPopover(
showContextMenu( MembershipContent member,
globalPosition: globalPosition, String userId, {
children: [ required Offset globalPosition,
PopupMenuItem( }) => showContextMenu(
enabled: false, globalPosition: globalPosition,
padding: EdgeInsets.symmetric(horizontal: 16, vertical: 8), children: [
child: IconTheme(data: IconThemeData(), child: UserPopover(member)), PopupMenuItem(
), enabled: false,
], padding: EdgeInsets.symmetric(horizontal: 16, vertical: 8),
); child: IconTheme(
data: IconThemeData(),
child: UserPopover(member, userId),
),
),
],
);
} }

View file

@ -9,7 +9,7 @@ import "package:nexus/controllers/profile_controller.dart";
import "package:nexus/controllers/selected_room_controller.dart"; import "package:nexus/controllers/selected_room_controller.dart";
import "package:nexus/helpers/extensions/better_when.dart"; import "package:nexus/helpers/extensions/better_when.dart";
import "package:nexus/models/configs/power_level_config.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/membership_status.dart";
import "package:nexus/models/requests/membership_action.dart"; import "package:nexus/models/requests/membership_action.dart";
import "package:nexus/models/requests/set_membership_request.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"; import "package:nexus/widgets/form_text_input.dart";
class UserPopover extends ConsumerWidget { class UserPopover extends ConsumerWidget {
final Membership member; final MembershipContent member;
const UserPopover(this.member, {super.key}); final String userId;
const UserPopover(this.member, this.userId, {super.key});
@override @override
Widget build(BuildContext context, WidgetRef ref) { Widget build(BuildContext context, WidgetRef ref) {
@ -37,16 +38,12 @@ class UserPopover extends ConsumerWidget {
builder: (context) { builder: (context) {
final actionReasonController = useTextEditingController(); final actionReasonController = useTextEditingController();
return AlertDialog( return AlertDialog(
title: Text( title: Text("${toBeginningOfSentenceCase(action.name)} $userId"),
"${toBeginningOfSentenceCase(action.name)} ${member.userId}",
),
content: Column( content: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text("Are you sure you want to ${action.name} $userId?"),
"Are you sure you want to ${action.name} ${member.userId}?",
),
SizedBox(height: 12), SizedBox(height: 12),
FormTextInput( FormTextInput(
required: false, required: false,
@ -67,7 +64,7 @@ class UserPopover extends ConsumerWidget {
client client
.setMembership( .setMembership(
SetMembershipRequest( SetMembershipRequest(
userId: member.userId, userId: userId,
roomId: roomId!, roomId: roomId!,
action: action, action: action,
reason: actionReasonController.text, reason: actionReasonController.text,
@ -107,10 +104,10 @@ class UserPopover extends ConsumerWidget {
member.displayName, member.displayName,
style: textTheme.headlineSmall, style: textTheme.headlineSmall,
), ),
SelectableText(member.userId, style: textTheme.titleSmall), SelectableText(userId, style: textTheme.titleSmall),
SizedBox(height: 4), SizedBox(height: 4),
ref ref
.watch(ProfileController.provider(member.userId)) .watch(ProfileController.provider(userId))
.betterWhen( .betterWhen(
loading: SizedBox.shrink, loading: SizedBox.shrink,
data: (profile) => Wrap( data: (profile) => Wrap(
@ -145,8 +142,7 @@ class UserPopover extends ConsumerWidget {
), ),
], ],
), ),
if (member.userId != if (userId != ref.watch(ClientStateController.provider)?.userId &&
ref.watch(ClientStateController.provider)?.userId &&
roomId != null) roomId != null)
Wrap( Wrap(
spacing: 8, spacing: 8,
@ -160,7 +156,7 @@ class UserPopover extends ConsumerWidget {
eventType: "m.room.member", eventType: "m.room.member",
action: MembershipAction.kick, action: MembershipAction.kick,
isStateEvent: true, isStateEvent: true,
targetUser: member.userId, targetUser: userId,
), ),
), ),
) && ) &&
@ -184,7 +180,7 @@ class UserPopover extends ConsumerWidget {
eventType: "m.room.member", eventType: "m.room.member",
action: MembershipAction.ban, action: MembershipAction.ban,
isStateEvent: true, isStateEvent: true,
targetUser: member.userId, targetUser: userId,
), ),
), ),
)) ))