mirror of
https://gitlab.com/comunic/comunicmobile
synced 2024-11-25 22:39:22 +00:00
Update navbar
This commit is contained in:
parent
7497fc5c65
commit
662c4ab3eb
@ -34,4 +34,9 @@ class MembershipList extends AbstractList<Membership> {
|
||||
/// Remove a friend membership from the list
|
||||
void removeFriend(int friendID) => remove(firstWhere(
|
||||
(f) => f.type == MembershipType.FRIEND && f.friend.id == friendID));
|
||||
|
||||
/// Get the list of conversations of a group
|
||||
Set<Membership> getGroupConversations(int groupID) => where((element) =>
|
||||
element.type == MembershipType.CONVERSATION &&
|
||||
element.conversation.groupID == groupID).toSet();
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ import 'package:comunic/lists/groups_list.dart';
|
||||
import 'package:comunic/lists/memberships_list.dart';
|
||||
import 'package:comunic/lists/users_list.dart';
|
||||
import 'package:comunic/models/friend.dart';
|
||||
import 'package:comunic/models/group.dart';
|
||||
import 'package:comunic/models/membership.dart';
|
||||
import 'package:comunic/ui/routes/main_route/main_route.dart';
|
||||
import 'package:comunic/ui/routes/main_route/page_info.dart';
|
||||
@ -159,8 +160,26 @@ class _MembershipsPanelState extends SafeState<MembershipsPanel> {
|
||||
Widget _buildGroupMembership(Membership membership) {
|
||||
final group = _groupsList.getGroup(membership.groupID);
|
||||
|
||||
Widget subtitle;
|
||||
return Container(
|
||||
color: widget.currentPage.type == PageType.GROUP_PAGE &&
|
||||
widget.currentPage.id == group.id
|
||||
? Colors.grey.shade800
|
||||
: null,
|
||||
child: Column(
|
||||
children: [_buildMainGroupInformationTile(membership, group)]
|
||||
..addAll(_membershipList
|
||||
.getGroupConversations(group.id)
|
||||
.map((e) => Padding(
|
||||
padding: const EdgeInsets.only(left: 30.0),
|
||||
child: _buildConversationMembership(e, true),
|
||||
))
|
||||
.toList()),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildMainGroupInformationTile(Membership membership, Group group) {
|
||||
Widget subtitle;
|
||||
if (!group.isAtLeastMember) {
|
||||
subtitle = GroupMembershipWidget(
|
||||
group: group,
|
||||
@ -169,14 +188,9 @@ class _MembershipsPanelState extends SafeState<MembershipsPanel> {
|
||||
);
|
||||
} else {
|
||||
subtitle = Text(diffTimeFromNowToStr(membership.lastActive));
|
||||
}
|
||||
} // Main group information
|
||||
|
||||
return Container(
|
||||
color: widget.currentPage.type == PageType.GROUP_PAGE &&
|
||||
widget.currentPage.id == group.id
|
||||
? Colors.grey.shade800
|
||||
: null,
|
||||
child: ListTile(
|
||||
return ListTile(
|
||||
leading: GroupIcon(
|
||||
group: group,
|
||||
width: _MembershipIconsWidth,
|
||||
@ -184,13 +198,15 @@ class _MembershipsPanelState extends SafeState<MembershipsPanel> {
|
||||
title: Text(group.displayName),
|
||||
subtitle: subtitle,
|
||||
onTap: () => MainController.of(context).openGroup(group.id),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildConversationMembership(Membership membership) {
|
||||
Widget _buildConversationMembership(Membership membership,
|
||||
[bool allowGroup = false]) {
|
||||
final conversation = membership.conversation;
|
||||
|
||||
if (conversation.isGroupConversation && !allowGroup) return Container();
|
||||
|
||||
Color color;
|
||||
if (conversation.isHavingCall)
|
||||
color = Color(0xFF815d1d);
|
||||
@ -222,8 +238,7 @@ class _MembershipsPanelState extends SafeState<MembershipsPanel> {
|
||||
),
|
||||
subtitle: Text(diffTimeFromNowToStr(membership.lastActive) +
|
||||
(conversation.isHavingCall ? "\n" + tr("Ongoing call") : "")),
|
||||
onTap: () => MainController.of(context)
|
||||
.openConversationById(conversation.id, fullScreen: true),
|
||||
onTap: () => MainController.of(context).openConversation(conversation),
|
||||
trailing: conversation.isHavingCall
|
||||
? FloatingActionButton(
|
||||
heroTag: null,
|
||||
|
Loading…
Reference in New Issue
Block a user