1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2024-10-23 15:03:22 +00:00
comunicmobile/lib/models/membership.dart

52 lines
1.3 KiB
Dart

import 'package:comunic/models/conversation.dart';
import 'package:comunic/models/friend.dart';
import 'package:flutter/material.dart';
/// Membership information
///
/// @author Pierre Hubert
enum MembershipType { FRIEND, GROUP, CONVERSATION }
class Membership {
final MembershipType type;
final Conversation conversation;
final Friend friend;
final int groupID;
final int groupLastActive;
Membership.conversation(this.conversation)
: type = MembershipType.CONVERSATION,
friend = null,
groupID = null,
groupLastActive = null,
assert(conversation != null);
Membership.friend(this.friend)
: type = MembershipType.FRIEND,
conversation = null,
groupID = null,
groupLastActive = null,
assert(friend != null);
Membership.group({@required this.groupID, @required this.groupLastActive})
: type = MembershipType.GROUP,
conversation = null,
friend = null,
assert(groupID != null),
assert(groupLastActive != null);
int get lastActive {
switch (type) {
case MembershipType.FRIEND:
return friend.lastActive;
case MembershipType.GROUP:
return groupLastActive;
case MembershipType.CONVERSATION:
return conversation.lastActivity;
default:
throw Exception("Unreachable statment!");
}
}
}