mirror of
https://gitlab.com/comunic/comunicmobile
synced 2025-02-16 21:52:38 +00:00
Add more actions
This commit is contained in:
parent
e7181c1f59
commit
bf2ba03912
@ -162,6 +162,8 @@ class UsersHelper {
|
|||||||
customEmojies: _parseCustomEmojies(data["customEmojis"]),
|
customEmojies: _parseCustomEmojies(data["customEmojis"]),
|
||||||
publicNote: data["publicNote"],
|
publicNote: data["publicNote"],
|
||||||
canPostTexts: data["can_post_texts"],
|
canPostTexts: data["can_post_texts"],
|
||||||
|
isFriendsListPublic: data["friend_list_public"],
|
||||||
|
numberFriends: data["number_friends"],
|
||||||
likes: data["pageLikes"],
|
likes: data["pageLikes"],
|
||||||
userLike: data["user_like_page"],
|
userLike: data["user_like_page"],
|
||||||
);
|
);
|
||||||
|
@ -12,6 +12,8 @@ import 'package:meta/meta.dart';
|
|||||||
class AdvancedUserInfo extends User implements LikeElement {
|
class AdvancedUserInfo extends User implements LikeElement {
|
||||||
final String publicNote;
|
final String publicNote;
|
||||||
final bool canPostTexts;
|
final bool canPostTexts;
|
||||||
|
final bool isFriendsListPublic;
|
||||||
|
final int numberFriends;
|
||||||
bool userLike;
|
bool userLike;
|
||||||
int likes;
|
int likes;
|
||||||
|
|
||||||
@ -25,10 +27,14 @@ class AdvancedUserInfo extends User implements LikeElement {
|
|||||||
@required CustomEmojiesList customEmojies,
|
@required CustomEmojiesList customEmojies,
|
||||||
@required this.publicNote,
|
@required this.publicNote,
|
||||||
@required this.canPostTexts,
|
@required this.canPostTexts,
|
||||||
|
@required this.isFriendsListPublic,
|
||||||
|
@required this.numberFriends,
|
||||||
@required this.userLike,
|
@required this.userLike,
|
||||||
@required this.likes,
|
@required this.likes,
|
||||||
}) : assert(publicNote != null),
|
}) : assert(publicNote != null),
|
||||||
assert(canPostTexts != null),
|
assert(canPostTexts != null),
|
||||||
|
assert(isFriendsListPublic != null),
|
||||||
|
assert(numberFriends != null),
|
||||||
assert(userLike != null),
|
assert(userLike != null),
|
||||||
assert(likes != null),
|
assert(likes != null),
|
||||||
super(
|
super(
|
||||||
|
@ -1,9 +1,12 @@
|
|||||||
|
import 'package:comunic/helpers/friends_helper.dart';
|
||||||
import 'package:comunic/helpers/users_helper.dart';
|
import 'package:comunic/helpers/users_helper.dart';
|
||||||
import 'package:comunic/models/advanced_user_info.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/routes/main_route/main_route.dart';
|
||||||
import 'package:comunic/ui/widgets/mobile_mode/user_page_mobile.dart';
|
import 'package:comunic/ui/widgets/mobile_mode/user_page_mobile.dart';
|
||||||
import 'package:comunic/ui/widgets/safe_state.dart';
|
import 'package:comunic/ui/widgets/safe_state.dart';
|
||||||
import 'package:comunic/ui/widgets/tablet_mode/user_page_tablet.dart';
|
import 'package:comunic/ui/widgets/tablet_mode/user_page_tablet.dart';
|
||||||
|
import 'package:comunic/utils/account_utils.dart';
|
||||||
import 'package:comunic/utils/intl_utils.dart';
|
import 'package:comunic/utils/intl_utils.dart';
|
||||||
import 'package:comunic/utils/ui_utils.dart';
|
import 'package:comunic/utils/ui_utils.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
@ -32,6 +35,7 @@ class _UserPageScreenState extends SafeState<UserPageScreen> {
|
|||||||
// Objects members
|
// Objects members
|
||||||
_PageStatus _status = _PageStatus.LOADING;
|
_PageStatus _status = _PageStatus.LOADING;
|
||||||
AdvancedUserInfo _userInfo;
|
AdvancedUserInfo _userInfo;
|
||||||
|
FriendStatus _frienshipStatus;
|
||||||
final _refreshIndicatorKey = GlobalKey<RefreshIndicatorState>();
|
final _refreshIndicatorKey = GlobalKey<RefreshIndicatorState>();
|
||||||
|
|
||||||
_setStatus(_PageStatus s) => setState(() => _status = s);
|
_setStatus(_PageStatus s) => setState(() => _status = s);
|
||||||
@ -47,9 +51,13 @@ class _UserPageScreenState extends SafeState<UserPageScreen> {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
final user = await usersHelper.getAdvancedInfo(widget.userID);
|
final user = await usersHelper.getAdvancedInfo(widget.userID);
|
||||||
|
final status = widget.userID == userID()
|
||||||
|
? null
|
||||||
|
: await FriendsHelper().getFriendshipStatus(widget.userID);
|
||||||
|
|
||||||
setState(() {
|
setState(() {
|
||||||
_userInfo = user;
|
_userInfo = user;
|
||||||
|
_frienshipStatus = status;
|
||||||
});
|
});
|
||||||
|
|
||||||
_setStatus(_PageStatus.READY);
|
_setStatus(_PageStatus.READY);
|
||||||
@ -61,6 +69,9 @@ class _UserPageScreenState extends SafeState<UserPageScreen> {
|
|||||||
controller.popPage();
|
controller.popPage();
|
||||||
controller.openUserAccessDeniedPage(widget.userID);
|
controller.openUserAccessDeniedPage(widget.userID);
|
||||||
}
|
}
|
||||||
|
} catch (e, s) {
|
||||||
|
print("Could not refresh user information! $e\n$s");
|
||||||
|
_setStatus(_PageStatus.ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,6 +115,7 @@ class _UserPageScreenState extends SafeState<UserPageScreen> {
|
|||||||
? UserPageTablet(
|
? UserPageTablet(
|
||||||
userInfo: _userInfo,
|
userInfo: _userInfo,
|
||||||
onNeedRefresh: () => _refreshIndicatorKey.currentState.show(),
|
onNeedRefresh: () => _refreshIndicatorKey.currentState.show(),
|
||||||
|
friendshipStatus: _frienshipStatus,
|
||||||
)
|
)
|
||||||
: UserMobilePage(
|
: UserMobilePage(
|
||||||
userInfo: _userInfo,
|
userInfo: _userInfo,
|
||||||
|
@ -1,10 +1,15 @@
|
|||||||
import 'package:comunic/enums/post_target.dart';
|
import 'package:comunic/enums/post_target.dart';
|
||||||
import 'package:comunic/helpers/posts_helper.dart';
|
import 'package:comunic/helpers/posts_helper.dart';
|
||||||
import 'package:comunic/models/advanced_user_info.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/account_image_widget.dart';
|
||||||
import 'package:comunic/ui/widgets/like_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/post_create_form_widget.dart';
|
||||||
import 'package:comunic/ui/widgets/posts_list_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/material.dart';
|
||||||
import 'package:flutter/rendering.dart';
|
import 'package:flutter/rendering.dart';
|
||||||
|
|
||||||
@ -14,11 +19,13 @@ import 'package:flutter/rendering.dart';
|
|||||||
|
|
||||||
class UserPageTablet extends StatefulWidget {
|
class UserPageTablet extends StatefulWidget {
|
||||||
final AdvancedUserInfo userInfo;
|
final AdvancedUserInfo userInfo;
|
||||||
|
final FriendStatus friendshipStatus;
|
||||||
final void Function() onNeedRefresh;
|
final void Function() onNeedRefresh;
|
||||||
|
|
||||||
const UserPageTablet({
|
const UserPageTablet({
|
||||||
Key key,
|
Key key,
|
||||||
@required this.userInfo,
|
@required this.userInfo,
|
||||||
|
@required this.friendshipStatus,
|
||||||
@required this.onNeedRefresh,
|
@required this.onNeedRefresh,
|
||||||
}) : assert(userInfo != null),
|
}) : assert(userInfo != null),
|
||||||
assert(onNeedRefresh != null),
|
assert(onNeedRefresh != null),
|
||||||
@ -31,6 +38,8 @@ class UserPageTablet extends StatefulWidget {
|
|||||||
class _UserPageTabletState extends State<UserPageTablet> {
|
class _UserPageTabletState extends State<UserPageTablet> {
|
||||||
AdvancedUserInfo get _userInfo => widget.userInfo;
|
AdvancedUserInfo get _userInfo => widget.userInfo;
|
||||||
|
|
||||||
|
bool get _isCurrentUser => _userInfo.id == userID();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) => Flex(
|
Widget build(BuildContext context) => Flex(
|
||||||
direction: Axis.horizontal,
|
direction: Axis.horizontal,
|
||||||
@ -44,6 +53,7 @@ class _UserPageTabletState extends State<UserPageTablet> {
|
|||||||
Widget _buildLeftColumn() => Column(
|
Widget _buildLeftColumn() => Column(
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
_buildMainCard(),
|
_buildMainCard(),
|
||||||
|
_buildActionsCard(),
|
||||||
_buildAboutCard(),
|
_buildAboutCard(),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
@ -66,29 +76,63 @@ class _UserPageTabletState extends State<UserPageTablet> {
|
|||||||
);
|
);
|
||||||
|
|
||||||
/// Main user information card
|
/// Main user information card
|
||||||
Widget _buildMainCard() => ConstrainedBox(
|
Widget _buildMainCard() => _LeftPaneContainer(
|
||||||
constraints: BoxConstraints(maxWidth: 200),
|
child: Column(
|
||||||
child: Card(
|
children: <Widget>[
|
||||||
child: Padding(
|
Center(child: AccountImageWidget(user: _userInfo, width: 75)),
|
||||||
padding: const EdgeInsets.all(8.0),
|
_MainCardSpacer(),
|
||||||
child: Column(
|
Text(
|
||||||
children: <Widget>[
|
_userInfo.displayName,
|
||||||
Center(child: AccountImageWidget(user: _userInfo, width: 75)),
|
textAlign: TextAlign.center,
|
||||||
_MainCardSpacer(),
|
style: TextStyle(fontSize: 20),
|
||||||
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(),
|
||||||
|
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();
|
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 {
|
class _MainCardSpacer extends StatelessWidget {
|
||||||
final bool visible;
|
final bool visible;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user