1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2024-12-27 21:38:51 +00:00
comunicmobile/lib/models/post.dart

92 lines
2.6 KiB
Dart

import 'package:comunic/enums/likes_type.dart';
import 'package:comunic/enums/post_kind.dart';
import 'package:comunic/enums/post_visibility_level.dart';
import 'package:comunic/enums/user_access_levels.dart';
import 'package:comunic/lists/comments_list.dart';
import 'package:comunic/models/displayed_content.dart';
import 'package:comunic/models/like_element.dart';
import 'package:comunic/models/survey.dart';
import 'package:meta/meta.dart';
/// Single post information
///
/// @author Pierre HUBERT
class Post implements LikeElement {
final int id;
final int userID;
final int userPageID;
final int groupID;
final int timeSent;
DisplayedString content;
PostVisibilityLevel visibilityLevel;
final PostKind kind;
final int fileSize;
final String fileType;
final String filePath;
final String fileURL;
final int timeEnd;
final String linkURL;
final String linkTitle;
final String linkDescription;
final String linkImage;
int likes;
bool userLike;
final UserAccessLevels access;
final CommentsList comments;
final Survey survey;
Post(
{@required this.id,
@required this.userID,
@required this.userPageID,
@required this.groupID,
@required this.timeSent,
@required this.content,
@required this.visibilityLevel,
@required this.kind,
@required this.fileSize,
@required this.fileType,
@required this.filePath,
@required this.fileURL,
@required this.timeEnd,
@required this.linkURL,
@required this.linkTitle,
@required this.linkDescription,
@required this.linkImage,
@required this.likes,
@required this.userLike,
@required this.access,
@required this.comments,
@required this.survey})
: assert(id != null),
assert(userID != null),
assert(userPageID != 0 || groupID != 0),
assert(timeSent != null),
assert(kind != PostKind.TEXT || content != null),
assert(visibilityLevel != null),
assert(kind != null),
assert(kind != PostKind.COUNTDOWN || timeEnd != null),
assert(kind != PostKind.SURVEY || survey != null),
assert(likes != null),
assert(userLike != null),
assert(access != null);
bool get isGroupPost => groupID != null && groupID > 0;
bool get hasContent => content != null && !content.isNull;
bool get hasComments => comments != null;
bool get canUpdate => access == UserAccessLevels.FULL;
bool get hasLinkImage => linkImage != null;
bool get canDelete =>
access == UserAccessLevels.FULL ||
access == UserAccessLevels.INTERMEDIATE;
@override
LikesType get likeType => LikesType.POST;
}