diff --git a/lib/models/user.dart b/lib/models/user.dart index d72f974..c0ebf6a 100644 --- a/lib/models/user.dart +++ b/lib/models/user.dart @@ -3,6 +3,7 @@ import 'dart:convert'; import 'package:comunic/enums/user_page_visibility.dart'; import 'package:comunic/helpers/serialization/base_serialization_helper.dart'; import 'package:comunic/lists/custom_emojies_list.dart'; +import 'package:comunic/utils/account_utils.dart'; import 'package:comunic/utils/ui_utils.dart'; import 'package:meta/meta.dart'; @@ -44,6 +45,8 @@ class User implements SerializableElement { bool get hasVirtualDirectory => virtualDirectory != null && virtualDirectory.length > 0; + bool get isCurrentUser => id == userID(); + Map toJson() => { "id": id, "firstName": firstName, diff --git a/lib/ui/screens/friends_list_screen.dart b/lib/ui/screens/friends_list_screen.dart index cbc8526..a7a9f90 100644 --- a/lib/ui/screens/friends_list_screen.dart +++ b/lib/ui/screens/friends_list_screen.dart @@ -20,6 +20,10 @@ import 'package:flutter/material.dart'; enum _ErrorsLevel { NONE, MINOR, MAJOR } class FriendsListScreen extends StatefulWidget { + final bool showAppBar; + + const FriendsListScreen({Key key, this.showAppBar = true}) : super(key: key); + @override State createState() => _FriendsListScreenState(); } @@ -103,9 +107,11 @@ class _FriendsListScreenState extends SafeState { @override Widget build(BuildContext context) => Scaffold( - appBar: AppBar( - title: Text(tr("Your friends list")), - ), + appBar: widget.showAppBar + ? AppBar( + title: Text(tr("Your friends list")), + ) + : null, body: _buildBody(), ); diff --git a/lib/ui/screens/other_friends_lists_screen.dart b/lib/ui/screens/other_friends_lists_screen.dart index 7601ec3..0017d80 100644 --- a/lib/ui/screens/other_friends_lists_screen.dart +++ b/lib/ui/screens/other_friends_lists_screen.dart @@ -13,11 +13,14 @@ import 'package:flutter/material.dart'; class OtherUserFriendsListScreen extends StatefulWidget { final int userID; + final bool enableAppBar; const OtherUserFriendsListScreen({ Key key, @required this.userID, + this.enableAppBar = true, }) : assert(userID != null), + assert(enableAppBar != null), super(key: key); @override @@ -74,9 +77,11 @@ class _OtherUserFriendsListScreenState if (_usersInfo == null) return buildCenteredProgressBar(); return Scaffold( - appBar: AppBar( - title: Text(_routeName), - ), + appBar: widget.enableAppBar + ? AppBar( + title: Text(_routeName), + ) + : null, body: ListView.builder( itemCount: _friendsList.length, itemBuilder: (c, i) => SimpleUserTile( diff --git a/lib/ui/widgets/mobile_mode/user_page_mobile.dart b/lib/ui/widgets/mobile_mode/user_page_mobile.dart index 4bd0e7d..2344c64 100644 --- a/lib/ui/widgets/mobile_mode/user_page_mobile.dart +++ b/lib/ui/widgets/mobile_mode/user_page_mobile.dart @@ -1,4 +1,6 @@ import 'package:comunic/models/advanced_user_info.dart'; +import 'package:comunic/ui/screens/friends_list_screen.dart'; +import 'package:comunic/ui/screens/other_friends_lists_screen.dart'; import 'package:comunic/ui/screens/user_page_sections/user_page_header.dart'; import 'package:comunic/ui/screens/user_page_sections/user_posts_section.dart'; import 'package:comunic/utils/intl_utils.dart'; @@ -36,7 +38,21 @@ class _UserMobilePageState extends State user: widget.userInfo, ), ), - ]; + + // User friends + UserPageTab( + label: tr("Friends"), + onBuild: (c) => widget.userInfo.isCurrentUser + ? FriendsListScreen( + showAppBar: false, + ) + : OtherUserFriendsListScreen( + userID: widget.userInfo.id, + enableAppBar: false, + ), + visible: widget.userInfo.isFriendsListPublic || + widget.userInfo.isCurrentUser), + ].where((element) => element.visible).toList(); @override void initState() { @@ -85,12 +101,15 @@ class _UserMobilePageState extends State class UserPageTab { final String label; final WidgetBuilder onBuild; + final bool visible; UserPageTab({ @required this.label, @required this.onBuild, + this.visible = true, }) : assert(label != null), - assert(onBuild != null); + assert(onBuild != null), + assert(visible != null); Tab get tab => Tab(text: label); }