import 'package:comunic/helpers/groups_helper.dart'; import 'package:comunic/models/group.dart'; import 'package:comunic/ui/widgets/safe_state.dart'; import 'package:comunic/utils/intl_utils.dart'; import 'package:comunic/utils/ui_utils.dart'; import 'package:flutter/material.dart'; /// Group following status widget /// /// @author Pierre Hubert class GroupFollowingWidget extends StatefulWidget { final Group group; final Function() onUpdated; const GroupFollowingWidget( {Key key, @required this.group, @required this.onUpdated}) : assert(group != null), assert(onUpdated != null), super(key: key); @override _GroupFollowingWidgetState createState() => _GroupFollowingWidgetState(); } class _GroupFollowingWidgetState extends SafeState { Group get _group => widget.group; @override Widget build(BuildContext context) { if (!_group.isAtLeastMember) return Container(); return InkWell( child: Text( _group.following ? tr("Following") : tr("Follow"), style: TextStyle(color: Colors.blue), ), onTap: () => _toggleFollowing(), ); } /// Toggle following status void _toggleFollowing() async { if (!await GroupsHelper().setFollowing(_group.id, !_group.following)) { showSimpleSnack(context, tr("Could not update following status!")); return; } setState(() { _group.following = !_group.following; this.widget.onUpdated(); }); } }