mirror of
https://gitlab.com/comunic/comunicmobile
synced 2024-11-30 00:36:28 +00:00
70 lines
1.8 KiB
Dart
70 lines
1.8 KiB
Dart
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;
|
|
final Color inactiveColor;
|
|
final Color activeColor;
|
|
|
|
const GroupFollowingWidget({
|
|
Key key,
|
|
@required this.group,
|
|
@required this.onUpdated,
|
|
this.activeColor,
|
|
this.inactiveColor,
|
|
}) : assert(group != null),
|
|
assert(onUpdated != null),
|
|
super(key: key);
|
|
|
|
@override
|
|
_GroupFollowingWidgetState createState() => _GroupFollowingWidgetState();
|
|
}
|
|
|
|
class _GroupFollowingWidgetState extends SafeState<GroupFollowingWidget> {
|
|
Group get _group => widget.group;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
if (!_group.isAtLeastMember) return Container();
|
|
|
|
return InkWell(
|
|
child: RichText(
|
|
text: TextSpan(children: [
|
|
WidgetSpan(
|
|
child: Icon(
|
|
Icons.notifications,
|
|
size: 16.0,
|
|
color: _group.following ? widget.activeColor : widget.inactiveColor,
|
|
)),
|
|
TextSpan(
|
|
text: " " + (_group.following ? tr("Following") : tr("Follow"))),
|
|
]),
|
|
),
|
|
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();
|
|
});
|
|
}
|
|
}
|