mirror of
				https://gitlab.com/comunic/comunicmobile
				synced 2025-11-03 19:54:12 +00:00 
			
		
		
		
	Display the list of members of a conversation
This commit is contained in:
		
							
								
								
									
										66
									
								
								lib/ui/screens/conversation_members_screen.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								lib/ui/screens/conversation_members_screen.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,66 @@
 | 
				
			|||||||
 | 
					import 'package:comunic/helpers/conversations_helper.dart';
 | 
				
			||||||
 | 
					import 'package:comunic/helpers/users_helper.dart';
 | 
				
			||||||
 | 
					import 'package:comunic/lists/users_list.dart';
 | 
				
			||||||
 | 
					import 'package:comunic/models/conversation.dart';
 | 
				
			||||||
 | 
					import 'package:comunic/ui/widgets/account_image_widget.dart';
 | 
				
			||||||
 | 
					import 'package:comunic/ui/widgets/async_screen_widget.dart';
 | 
				
			||||||
 | 
					import 'package:comunic/utils/intl_utils.dart';
 | 
				
			||||||
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Conversation members screen
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// @author Pierre Hubert
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class ConversationMembersScreen extends StatefulWidget {
 | 
				
			||||||
 | 
					  final int convID;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const ConversationMembersScreen({
 | 
				
			||||||
 | 
					    Key key,
 | 
				
			||||||
 | 
					    @required this.convID,
 | 
				
			||||||
 | 
					  })  : assert(convID != null),
 | 
				
			||||||
 | 
					        super(key: key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  _ConversationMembersScreenState createState() =>
 | 
				
			||||||
 | 
					      _ConversationMembersScreenState();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class _ConversationMembersScreenState extends State<ConversationMembersScreen> {
 | 
				
			||||||
 | 
					  Conversation _conversation;
 | 
				
			||||||
 | 
					  UsersList _members;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<void> _refresh() async {
 | 
				
			||||||
 | 
					    _conversation =
 | 
				
			||||||
 | 
					        await ConversationsHelper().getSingle(widget.convID, force: true);
 | 
				
			||||||
 | 
					    _members =
 | 
				
			||||||
 | 
					        await UsersHelper().getListWithThrow(_conversation.members.toSet());
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
 | 
					    return Scaffold(
 | 
				
			||||||
 | 
					      appBar: AppBar(title: Text(tr("Conversation members"))),
 | 
				
			||||||
 | 
					      body: AsyncScreenWidget(
 | 
				
			||||||
 | 
					        onReload: _refresh,
 | 
				
			||||||
 | 
					        onBuild: _buildMembersList,
 | 
				
			||||||
 | 
					        errorMessage:
 | 
				
			||||||
 | 
					            tr("Could not load the list of members of this conversation!"),
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Widget _buildMembersList() => ListView.builder(
 | 
				
			||||||
 | 
					        itemBuilder: _buildItem,
 | 
				
			||||||
 | 
					        itemCount: _conversation.members.length,
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Widget _buildItem(BuildContext context, int index) {
 | 
				
			||||||
 | 
					    final user = _members.getUser(_conversation.members[index]);
 | 
				
			||||||
 | 
					    return ListTile(
 | 
				
			||||||
 | 
					      leading: AccountImageWidget(user: user),
 | 
				
			||||||
 | 
					      title: Text(user.displayName),
 | 
				
			||||||
 | 
					      subtitle:
 | 
				
			||||||
 | 
					          Text(_conversation.ownerID == user.id ? tr("Owner") : tr("Member")),
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -2,8 +2,8 @@ import 'package:comunic/helpers/conversations_helper.dart';
 | 
				
			|||||||
import 'package:comunic/helpers/events_helper.dart';
 | 
					import 'package:comunic/helpers/events_helper.dart';
 | 
				
			||||||
import 'package:comunic/models/conversation.dart';
 | 
					import 'package:comunic/models/conversation.dart';
 | 
				
			||||||
import 'package:comunic/ui/dialogs/screen_dialog.dart';
 | 
					import 'package:comunic/ui/dialogs/screen_dialog.dart';
 | 
				
			||||||
 | 
					import 'package:comunic/ui/screens/conversation_members_screen.dart';
 | 
				
			||||||
import 'package:comunic/ui/screens/conversation_screen.dart';
 | 
					import 'package:comunic/ui/screens/conversation_screen.dart';
 | 
				
			||||||
import 'package:comunic/ui/screens/user_page_screen.dart';
 | 
					 | 
				
			||||||
import 'package:comunic/ui/widgets/safe_state.dart';
 | 
					import 'package:comunic/ui/widgets/safe_state.dart';
 | 
				
			||||||
import 'package:comunic/ui/widgets/tablet_mode/conversations/conversation_window_container.dart';
 | 
					import 'package:comunic/ui/widgets/tablet_mode/conversations/conversation_window_container.dart';
 | 
				
			||||||
import 'package:comunic/utils/account_utils.dart';
 | 
					import 'package:comunic/utils/account_utils.dart';
 | 
				
			||||||
@@ -151,7 +151,6 @@ class _ConversationWindowState extends SafeState<ConversationWindow> {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void _openMembersList() {
 | 
					  void _openMembersList() {
 | 
				
			||||||
    // dummy test
 | 
					    showScreenDialog(context, ConversationMembersScreen(convID: _convID));
 | 
				
			||||||
    showScreenDialog(context, UserPageScreen(userID: 1));
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user