1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2024-11-29 16:26:27 +00:00
comunicmobile/lib/models/membership.dart

48 lines
1.2 KiB
Dart
Raw Normal View History

2020-05-05 16:49:50 +00:00
import 'package:comunic/models/conversation.dart';
import 'package:comunic/models/friend.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;
2020-05-05 16:49:50 +00:00
Membership.conversation(Conversation this.conversation)
2020-05-05 16:49:50 +00:00
: type = MembershipType.CONVERSATION,
friend = null,
groupID = null,
2022-03-11 16:13:54 +00:00
groupLastActive = null;
2020-05-05 16:49:50 +00:00
Membership.friend(Friend this.friend)
2020-05-05 16:49:50 +00:00
: type = MembershipType.FRIEND,
conversation = null,
groupID = null,
2022-03-11 16:13:54 +00:00
groupLastActive = null;
2020-05-05 16:49:50 +00:00
2022-03-11 16:13:54 +00:00
Membership.group(
{required int this.groupID, required int this.groupLastActive})
2020-05-05 16:49:50 +00:00
: type = MembershipType.GROUP,
conversation = null,
2022-03-11 16:13:54 +00:00
friend = null;
2020-05-05 17:33:04 +00:00
int? get lastActive {
2020-05-05 17:33:04 +00:00
switch (type) {
case MembershipType.FRIEND:
return friend!.lastActive;
2020-05-05 17:33:04 +00:00
case MembershipType.GROUP:
return groupLastActive;
case MembershipType.CONVERSATION:
return conversation!.lastActivity;
2020-05-05 17:33:04 +00:00
default:
throw Exception("Unreachable statment!");
}
}
2020-05-05 16:49:50 +00:00
}