import 'package:flutter/material.dart'; import '../../../../api/marianumcloud/talk/getParticipants/getParticipantsCache.dart'; import '../../../../api/marianumcloud/talk/getParticipants/getParticipantsResponse.dart'; import '../../../../api/marianumcloud/talk/room/getRoomResponse.dart'; import '../../../../widget/largeProfilePictureView.dart'; import '../../../../widget/loadingSpinner.dart'; import '../../../../widget/userAvatar.dart'; import '../talkNavigator.dart'; import 'participants/participantsListView.dart'; class ChatInfo extends StatefulWidget { final GetRoomResponseObject room; const ChatInfo(this.room, {super.key}); @override State createState() => _ChatInfoState(); } class _ChatInfoState extends State { GetParticipantsResponse? participants; @override void initState() { GetParticipantsCache( chatToken: widget.room.token, onUpdate: (GetParticipantsResponse data) { setState(() { participants = data; }); } ); super.initState(); } @override Widget build(BuildContext context) { bool isGroup = widget.room.type != GetRoomResponseObjectConversationType.oneToOne; return Scaffold( appBar: AppBar( title: Text(widget.room.displayName), ), body: Center( child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ const SizedBox(height: 30), GestureDetector( child: UserAvatar( id: isGroup ? widget.room.token : widget.room.name, isGroup: isGroup, size: 80, ), onTap: () { if(isGroup) return; TalkNavigator.pushSplitView(context, LargeProfilePictureView(widget.room.name)); }, ), const SizedBox(height: 30), Text(widget.room.displayName, textAlign: TextAlign.center, style: const TextStyle(fontSize: 30)), if(!isGroup) Text(widget.room.name), const SizedBox(height: 10), if(isGroup) Text(widget.room.description, textAlign: TextAlign.center), const SizedBox(height: 30), if(participants == null) const LoadingSpinner(), if(participants != null) ...[ ListTile( leading: const Icon(Icons.supervised_user_circle), title: Text('${participants!.data.length} Teilnehmer'), trailing: const Icon(Icons.arrow_right), onTap: () => TalkNavigator.pushSplitView(context, ParticipantsListView(participants!)), ), ], ], ), ), ); } }