From f5914a8d34bafe229fdd3229fba6ff2a7ad543b3 Mon Sep 17 00:00:00 2001 From: Pierre HUBERT Date: Thu, 16 Apr 2020 08:52:26 +0200 Subject: [PATCH] Add group create post form --- lib/models/group.dart | 6 ++ .../screens/authorized_group_page_screen.dart | 89 +++++++++++-------- 2 files changed, 60 insertions(+), 35 deletions(-) diff --git a/lib/models/group.dart b/lib/models/group.dart index 79bb0d6..07b05dd 100644 --- a/lib/models/group.dart +++ b/lib/models/group.dart @@ -58,4 +58,10 @@ class Group { membershipLevel == GroupMembershipLevel.ADMINISTRATOR || membershipLevel == GroupMembershipLevel.MODERATOR || membershipLevel == GroupMembershipLevel.MEMBER; + + bool get canCreatePost => + membershipLevel == GroupMembershipLevel.ADMINISTRATOR || + membershipLevel == GroupMembershipLevel.MODERATOR || + (membershipLevel == GroupMembershipLevel.MEMBER && + postCreationLevel == GroupPostCreationLevel.MEMBERS); } diff --git a/lib/ui/screens/authorized_group_page_screen.dart b/lib/ui/screens/authorized_group_page_screen.dart index 31ed35e..5407f22 100644 --- a/lib/ui/screens/authorized_group_page_screen.dart +++ b/lib/ui/screens/authorized_group_page_screen.dart @@ -1,9 +1,11 @@ +import 'package:comunic/enums/post_target.dart'; import 'package:comunic/helpers/posts_helper.dart'; import 'package:comunic/models/advanced_group_info.dart'; import 'package:comunic/ui/widgets/group_following_widget.dart'; import 'package:comunic/ui/widgets/group_icon_widget.dart'; import 'package:comunic/ui/widgets/group_membership_widget.dart'; import 'package:comunic/ui/widgets/like_widget.dart'; +import 'package:comunic/ui/widgets/post_create_form_widget.dart'; import 'package:comunic/ui/widgets/posts_list_widget.dart'; import 'package:flutter/material.dart'; @@ -38,51 +40,68 @@ class _AuthorizedGroupPageScreenState extends State { return RefreshIndicator( onRefresh: () => widget.needRefresh(), child: ListView( - children: [_buildGroupPageHeader(), _buildGroupPagePostsList()], + children: [ + _buildGroupPageHeader(), + _buildPostCreationArea(), + _buildGroupPagePostsList() + ], ), ); } /// Build group page header Widget _buildGroupPageHeader() { - return Padding( - padding: const EdgeInsets.all(8.0), - child: Row( - children: [ - GroupIcon( - group: _group, - ), - Text( - " ${_group.displayName}", - style: TextStyle(fontSize: 20), - ), - Spacer(), - Column( - children: [ - GroupMembershipWidget( - group: _group, - onUpdated: () => widget.needRefresh(), - ), - Container( - height: 4, - ), - GroupFollowingWidget( - group: _group, - onUpdated: () => widget.needRefresh(), - ), - Container( - height: 2, - ), - LikeWidget( - likeElement: _group, - ) - ], - ) - ], + return Container( + color: Colors.black45, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Row( + children: [ + GroupIcon( + group: _group, + ), + Text( + " ${_group.displayName}", + style: TextStyle(fontSize: 20), + ), + Spacer(), + Column( + children: [ + GroupMembershipWidget( + group: _group, + onUpdated: () => widget.needRefresh(), + ), + Container( + height: 4, + ), + GroupFollowingWidget( + group: _group, + onUpdated: () => widget.needRefresh(), + ), + Container( + height: 2, + ), + LikeWidget( + likeElement: _group, + ) + ], + ) + ], + ), ), ); } + /// Add create post target + Widget _buildPostCreationArea() { + if (!_group.canCreatePost) return Container(); + + return PostCreateFormWidget( + postTarget: PostTarget.GROUP_PAGE, + targetID: _group.id, + onCreated: () => widget.needRefresh()); + } + /// Build the list of posts of the group Widget _buildGroupPagePostsList() { return PostsListWidget(