mirror of
				https://gitlab.com/comunic/comunicmobile
				synced 2025-11-04 04:04:18 +00:00 
			
		
		
		
	Simplify use of like widget
This commit is contained in:
		lib
@@ -1,5 +1,5 @@
 | 
			
		||||
import 'package:comunic/enums/likes_type.dart';
 | 
			
		||||
import 'package:comunic/helpers/likes_helper.dart';
 | 
			
		||||
import 'package:comunic/models/like_element.dart';
 | 
			
		||||
import 'package:comunic/ui/widgets/safe_state.dart';
 | 
			
		||||
import 'package:comunic/utils/intl_utils.dart';
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
@@ -14,24 +14,12 @@ import 'package:flutter/material.dart';
 | 
			
		||||
typedef UpdatedLikingCallBack = Function(int, bool);
 | 
			
		||||
 | 
			
		||||
class LikeWidget extends StatefulWidget {
 | 
			
		||||
  final LikesType likeType;
 | 
			
		||||
  final int likeID;
 | 
			
		||||
  int likesCount;
 | 
			
		||||
  bool isLiking;
 | 
			
		||||
  final UpdatedLikingCallBack onUpdatedLikings;
 | 
			
		||||
  final LikeElement likeElement;
 | 
			
		||||
 | 
			
		||||
  LikeWidget({
 | 
			
		||||
  const LikeWidget({
 | 
			
		||||
    Key key,
 | 
			
		||||
    @required this.likeType,
 | 
			
		||||
    @required this.likeID,
 | 
			
		||||
    @required this.likesCount,
 | 
			
		||||
    @required this.isLiking,
 | 
			
		||||
    @required this.onUpdatedLikings,
 | 
			
		||||
  })  : assert(likeType != null),
 | 
			
		||||
        assert(likeID != null),
 | 
			
		||||
        assert(likesCount != null),
 | 
			
		||||
        assert(isLiking != null),
 | 
			
		||||
        assert(onUpdatedLikings != null),
 | 
			
		||||
    @required this.likeElement,
 | 
			
		||||
  })  : assert(likeElement != null),
 | 
			
		||||
        super(key: key);
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
@@ -39,8 +27,10 @@ class LikeWidget extends StatefulWidget {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class _LikeWidgetState extends SafeState<LikeWidget> {
 | 
			
		||||
  LikeElement get elem => widget.likeElement;
 | 
			
		||||
 | 
			
		||||
  String get _likeString {
 | 
			
		||||
    switch (widget.likesCount) {
 | 
			
		||||
    switch (elem.likes) {
 | 
			
		||||
      case 0:
 | 
			
		||||
        return tr("Like");
 | 
			
		||||
 | 
			
		||||
@@ -48,7 +38,7 @@ class _LikeWidgetState extends SafeState<LikeWidget> {
 | 
			
		||||
        return tr("1 Like");
 | 
			
		||||
 | 
			
		||||
      default:
 | 
			
		||||
        return tr("%num% likes", args: {"num": widget.likesCount.toString()});
 | 
			
		||||
        return tr("%num% likes", args: {"num": elem.likes.toString()});
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@@ -62,7 +52,7 @@ class _LikeWidgetState extends SafeState<LikeWidget> {
 | 
			
		||||
            children: <Widget>[
 | 
			
		||||
              Icon(
 | 
			
		||||
                Icons.thumb_up,
 | 
			
		||||
                color: widget.isLiking ? Colors.blue : null,
 | 
			
		||||
                color: elem.userLike ? Colors.blue : null,
 | 
			
		||||
                size: 15.0,
 | 
			
		||||
              ),
 | 
			
		||||
              SizedBox(
 | 
			
		||||
@@ -79,14 +69,12 @@ class _LikeWidgetState extends SafeState<LikeWidget> {
 | 
			
		||||
  /// Toggle like status
 | 
			
		||||
  void _toggleLike() async {
 | 
			
		||||
    // As like are not really important, we ignore failures
 | 
			
		||||
    if (await LikesHelper().setLiking(
 | 
			
		||||
        type: widget.likeType, like: !widget.isLiking, id: widget.likeID)) {
 | 
			
		||||
    if (await LikesHelper()
 | 
			
		||||
        .setLiking(type: elem.likeType, like: !elem.userLike, id: elem.id)) {
 | 
			
		||||
      setState(() {
 | 
			
		||||
        widget.isLiking = !widget.isLiking;
 | 
			
		||||
        elem.userLike = !elem.userLike;
 | 
			
		||||
 | 
			
		||||
        widget.likesCount += widget.isLiking ? 1 : -1;
 | 
			
		||||
 | 
			
		||||
        widget.onUpdatedLikings(widget.likesCount, widget.isLiking);
 | 
			
		||||
        elem.likes += elem.userLike ? 1 : -1;
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user