import 'package:comunic/enums/likes_type.dart';
import 'package:comunic/models/displayed_content.dart';
import 'package:comunic/models/like_element.dart';
import 'package:comunic/utils/account_utils.dart' as account;
import 'package:meta/meta.dart';

/// Comments
///
/// Contains information about a single comment
///
/// @author Pierre HUBERT

class Comment implements LikeElement {
  final int id;
  final int userID;
  final int postID;
  final int timeSent;
  DisplayedString content;
  final String imageURL;
  int likes;
  bool userLike;

  Comment({
    @required this.id,
    @required this.userID,
    @required this.postID,
    @required this.timeSent,
    @required this.content,
    @required this.imageURL,
    @required this.likes,
    @required this.userLike,
  })  : assert(id != null),
        assert(userID != null),
        assert(postID != null),
        assert(timeSent != null),
        assert(content != null),
        assert(likes != null),
        assert(userLike != null);

  bool get hasContent =>
      content != null && !content.isNull && content.length > 0;

  bool get hasImage => imageURL != null;

  bool get isOwner => userID == account.userID();

  @override
  LikesType get likeType => LikesType.COMMENT;
}