mirror of
				https://gitlab.com/comunic/comunicmobile
				synced 2025-11-03 19:54:12 +00:00 
			
		
		
		
	Add more actions
This commit is contained in:
		@@ -1,10 +1,15 @@
 | 
			
		||||
import 'package:comunic/enums/post_target.dart';
 | 
			
		||||
import 'package:comunic/helpers/posts_helper.dart';
 | 
			
		||||
import 'package:comunic/models/advanced_user_info.dart';
 | 
			
		||||
import 'package:comunic/models/friend_status.dart';
 | 
			
		||||
import 'package:comunic/ui/routes/main_route/main_route.dart';
 | 
			
		||||
import 'package:comunic/ui/widgets/FrienshipStatusWidget.dart';
 | 
			
		||||
import 'package:comunic/ui/widgets/account_image_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:comunic/utils/account_utils.dart';
 | 
			
		||||
import 'package:comunic/utils/conversations_utils.dart';
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:flutter/rendering.dart';
 | 
			
		||||
 | 
			
		||||
@@ -14,11 +19,13 @@ import 'package:flutter/rendering.dart';
 | 
			
		||||
 | 
			
		||||
class UserPageTablet extends StatefulWidget {
 | 
			
		||||
  final AdvancedUserInfo userInfo;
 | 
			
		||||
  final FriendStatus friendshipStatus;
 | 
			
		||||
  final void Function() onNeedRefresh;
 | 
			
		||||
 | 
			
		||||
  const UserPageTablet({
 | 
			
		||||
    Key key,
 | 
			
		||||
    @required this.userInfo,
 | 
			
		||||
    @required this.friendshipStatus,
 | 
			
		||||
    @required this.onNeedRefresh,
 | 
			
		||||
  })  : assert(userInfo != null),
 | 
			
		||||
        assert(onNeedRefresh != null),
 | 
			
		||||
@@ -31,6 +38,8 @@ class UserPageTablet extends StatefulWidget {
 | 
			
		||||
class _UserPageTabletState extends State<UserPageTablet> {
 | 
			
		||||
  AdvancedUserInfo get _userInfo => widget.userInfo;
 | 
			
		||||
 | 
			
		||||
  bool get _isCurrentUser => _userInfo.id == userID();
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget build(BuildContext context) => Flex(
 | 
			
		||||
        direction: Axis.horizontal,
 | 
			
		||||
@@ -44,6 +53,7 @@ class _UserPageTabletState extends State<UserPageTablet> {
 | 
			
		||||
  Widget _buildLeftColumn() => Column(
 | 
			
		||||
        children: <Widget>[
 | 
			
		||||
          _buildMainCard(),
 | 
			
		||||
          _buildActionsCard(),
 | 
			
		||||
          _buildAboutCard(),
 | 
			
		||||
        ],
 | 
			
		||||
      );
 | 
			
		||||
@@ -66,29 +76,63 @@ class _UserPageTabletState extends State<UserPageTablet> {
 | 
			
		||||
      );
 | 
			
		||||
 | 
			
		||||
  /// Main user information card
 | 
			
		||||
  Widget _buildMainCard() => ConstrainedBox(
 | 
			
		||||
        constraints: BoxConstraints(maxWidth: 200),
 | 
			
		||||
        child: Card(
 | 
			
		||||
          child: Padding(
 | 
			
		||||
            padding: const EdgeInsets.all(8.0),
 | 
			
		||||
            child: Column(
 | 
			
		||||
              children: <Widget>[
 | 
			
		||||
                Center(child: AccountImageWidget(user: _userInfo, width: 75)),
 | 
			
		||||
                _MainCardSpacer(),
 | 
			
		||||
                Text(
 | 
			
		||||
                  _userInfo.displayName,
 | 
			
		||||
                  textAlign: TextAlign.center,
 | 
			
		||||
                  style: TextStyle(fontSize: 20),
 | 
			
		||||
                ),
 | 
			
		||||
                _MainCardSpacer(),
 | 
			
		||||
                Container(
 | 
			
		||||
                    child: _userInfo.hasVirtualDirectory
 | 
			
		||||
                        ? Text("@${_userInfo.virtualDirectory}")
 | 
			
		||||
                        : null),
 | 
			
		||||
                _MainCardSpacer(visible: _userInfo.hasVirtualDirectory),
 | 
			
		||||
                LikeWidget(likeElement: _userInfo),
 | 
			
		||||
              ],
 | 
			
		||||
  Widget _buildMainCard() => _LeftPaneContainer(
 | 
			
		||||
        child: Column(
 | 
			
		||||
          children: <Widget>[
 | 
			
		||||
            Center(child: AccountImageWidget(user: _userInfo, width: 75)),
 | 
			
		||||
            _MainCardSpacer(),
 | 
			
		||||
            Text(
 | 
			
		||||
              _userInfo.displayName,
 | 
			
		||||
              textAlign: TextAlign.center,
 | 
			
		||||
              style: TextStyle(fontSize: 20),
 | 
			
		||||
            ),
 | 
			
		||||
            _MainCardSpacer(),
 | 
			
		||||
            Container(
 | 
			
		||||
                child: _userInfo.hasVirtualDirectory
 | 
			
		||||
                    ? Text("@${_userInfo.virtualDirectory}")
 | 
			
		||||
                    : null),
 | 
			
		||||
            _MainCardSpacer(visible: _userInfo.hasVirtualDirectory),
 | 
			
		||||
            LikeWidget(likeElement: _userInfo),
 | 
			
		||||
            _MainCardSpacer(visible: !_isCurrentUser),
 | 
			
		||||
            _isCurrentUser
 | 
			
		||||
                ? Container()
 | 
			
		||||
                : FriendshipStatusWidget(
 | 
			
		||||
                    status: widget.friendshipStatus,
 | 
			
		||||
                    onFriendshipUpdated: widget.onNeedRefresh,
 | 
			
		||||
                  )
 | 
			
		||||
          ],
 | 
			
		||||
        ),
 | 
			
		||||
      );
 | 
			
		||||
 | 
			
		||||
  /// Actions card
 | 
			
		||||
  Widget _buildActionsCard() => _LeftPaneContainer(
 | 
			
		||||
        child: ButtonTheme(
 | 
			
		||||
          minWidth: 30,
 | 
			
		||||
          padding: EdgeInsets.all(0),
 | 
			
		||||
          child: Row(
 | 
			
		||||
            children: <Widget>[
 | 
			
		||||
              // Friends list of the user
 | 
			
		||||
              _userInfo.isFriendsListPublic
 | 
			
		||||
                  ? Expanded(
 | 
			
		||||
                      child: OutlineButton.icon(
 | 
			
		||||
                        onPressed: () => MainController.of(context)
 | 
			
		||||
                            .openUserFriendsList(_userInfo.id),
 | 
			
		||||
                        icon: Icon(Icons.group),
 | 
			
		||||
                        label: Text("${_userInfo.numberFriends}"),
 | 
			
		||||
                      ),
 | 
			
		||||
                    )
 | 
			
		||||
                  : Container(),
 | 
			
		||||
 | 
			
		||||
              // Private messages
 | 
			
		||||
              !_isCurrentUser
 | 
			
		||||
                  ? Expanded(
 | 
			
		||||
                      child: OutlineButton(
 | 
			
		||||
                      onPressed: () =>
 | 
			
		||||
                          openPrivateConversation(context, _userInfo.id),
 | 
			
		||||
                      child: Icon(Icons.message),
 | 
			
		||||
                    ))
 | 
			
		||||
                  : Container(),
 | 
			
		||||
            ],
 | 
			
		||||
          ),
 | 
			
		||||
        ),
 | 
			
		||||
      );
 | 
			
		||||
@@ -97,6 +141,25 @@ class _UserPageTabletState extends State<UserPageTablet> {
 | 
			
		||||
  Widget _buildAboutCard() => Container();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class _LeftPaneContainer extends StatelessWidget {
 | 
			
		||||
  final Widget child;
 | 
			
		||||
 | 
			
		||||
  const _LeftPaneContainer({Key key, this.child}) : super(key: key);
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget build(BuildContext context) {
 | 
			
		||||
    return ConstrainedBox(
 | 
			
		||||
      constraints: BoxConstraints(maxWidth: 200),
 | 
			
		||||
      child: Card(
 | 
			
		||||
        child: Padding(
 | 
			
		||||
          padding: const EdgeInsets.all(8.0),
 | 
			
		||||
          child: child,
 | 
			
		||||
        ),
 | 
			
		||||
      ),
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class _MainCardSpacer extends StatelessWidget {
 | 
			
		||||
  final bool visible;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user