mirror of
https://gitlab.com/comunic/comunicmobile
synced 2024-11-22 21:09:21 +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
|
/// Remove a friend membership from the list
|
||||||
void removeFriend(int friendID) => remove(firstWhere(
|
void removeFriend(int friendID) => remove(firstWhere(
|
||||||
(f) => f.type == MembershipType.FRIEND && f.friend.id == friendID));
|
(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/memberships_list.dart';
|
||||||
import 'package:comunic/lists/users_list.dart';
|
import 'package:comunic/lists/users_list.dart';
|
||||||
import 'package:comunic/models/friend.dart';
|
import 'package:comunic/models/friend.dart';
|
||||||
|
import 'package:comunic/models/group.dart';
|
||||||
import 'package:comunic/models/membership.dart';
|
import 'package:comunic/models/membership.dart';
|
||||||
import 'package:comunic/ui/routes/main_route/main_route.dart';
|
import 'package:comunic/ui/routes/main_route/main_route.dart';
|
||||||
import 'package:comunic/ui/routes/main_route/page_info.dart';
|
import 'package:comunic/ui/routes/main_route/page_info.dart';
|
||||||
@ -159,8 +160,26 @@ class _MembershipsPanelState extends SafeState<MembershipsPanel> {
|
|||||||
Widget _buildGroupMembership(Membership membership) {
|
Widget _buildGroupMembership(Membership membership) {
|
||||||
final group = _groupsList.getGroup(membership.groupID);
|
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) {
|
if (!group.isAtLeastMember) {
|
||||||
subtitle = GroupMembershipWidget(
|
subtitle = GroupMembershipWidget(
|
||||||
group: group,
|
group: group,
|
||||||
@ -169,14 +188,9 @@ class _MembershipsPanelState extends SafeState<MembershipsPanel> {
|
|||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
subtitle = Text(diffTimeFromNowToStr(membership.lastActive));
|
subtitle = Text(diffTimeFromNowToStr(membership.lastActive));
|
||||||
}
|
} // Main group information
|
||||||
|
|
||||||
return Container(
|
return ListTile(
|
||||||
color: widget.currentPage.type == PageType.GROUP_PAGE &&
|
|
||||||
widget.currentPage.id == group.id
|
|
||||||
? Colors.grey.shade800
|
|
||||||
: null,
|
|
||||||
child: ListTile(
|
|
||||||
leading: GroupIcon(
|
leading: GroupIcon(
|
||||||
group: group,
|
group: group,
|
||||||
width: _MembershipIconsWidth,
|
width: _MembershipIconsWidth,
|
||||||
@ -184,13 +198,15 @@ class _MembershipsPanelState extends SafeState<MembershipsPanel> {
|
|||||||
title: Text(group.displayName),
|
title: Text(group.displayName),
|
||||||
subtitle: subtitle,
|
subtitle: subtitle,
|
||||||
onTap: () => MainController.of(context).openGroup(group.id),
|
onTap: () => MainController.of(context).openGroup(group.id),
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildConversationMembership(Membership membership) {
|
Widget _buildConversationMembership(Membership membership,
|
||||||
|
[bool allowGroup = false]) {
|
||||||
final conversation = membership.conversation;
|
final conversation = membership.conversation;
|
||||||
|
|
||||||
|
if (conversation.isGroupConversation && !allowGroup) return Container();
|
||||||
|
|
||||||
Color color;
|
Color color;
|
||||||
if (conversation.isHavingCall)
|
if (conversation.isHavingCall)
|
||||||
color = Color(0xFF815d1d);
|
color = Color(0xFF815d1d);
|
||||||
@ -222,8 +238,7 @@ class _MembershipsPanelState extends SafeState<MembershipsPanel> {
|
|||||||
),
|
),
|
||||||
subtitle: Text(diffTimeFromNowToStr(membership.lastActive) +
|
subtitle: Text(diffTimeFromNowToStr(membership.lastActive) +
|
||||||
(conversation.isHavingCall ? "\n" + tr("Ongoing call") : "")),
|
(conversation.isHavingCall ? "\n" + tr("Ongoing call") : "")),
|
||||||
onTap: () => MainController.of(context)
|
onTap: () => MainController.of(context).openConversation(conversation),
|
||||||
.openConversationById(conversation.id, fullScreen: true),
|
|
||||||
trailing: conversation.isHavingCall
|
trailing: conversation.isHavingCall
|
||||||
? FloatingActionButton(
|
? FloatingActionButton(
|
||||||
heroTag: null,
|
heroTag: null,
|
||||||
|
Loading…
Reference in New Issue
Block a user