1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2024-11-22 21:09:21 +00:00
comunicmobile/lib/models/friend.dart

52 lines
1.7 KiB
Dart

import 'package:comunic/helpers/database/database_contract.dart';
import 'package:comunic/models/cache_model.dart';
import 'package:comunic/utils/date_utils.dart';
import 'package:meta/meta.dart';
/// Single user Friend information
///
/// @author Pierre HUBERT
class Friend extends CacheModel implements Comparable<Friend> {
final bool accepted;
final int lastActive;
final bool following;
final bool canPostTexts;
const Friend({
@required int id,
@required this.accepted,
@required this.lastActive,
@required this.following,
@required this.canPostTexts,
}) : assert(id != null),
assert(accepted != null),
assert(lastActive != null),
assert(following != null),
assert(canPostTexts != null),
super(id: id);
/// Check out whether friend is connected or not
bool get isConnected => time() - 30 < lastActive;
@override
int compareTo(Friend other) => other.lastActive.compareTo(lastActive);
@override
Map<String, dynamic> toMap() => {
FriendsListTableContract.C_ID: id.toString(),
FriendsListTableContract.C_ACCEPTED: accepted ? 1 : 0,
FriendsListTableContract.C_LAST_ACTIVE: lastActive,
FriendsListTableContract.C_FOLLOWING: following ? 1 : 0,
FriendsListTableContract.C_CAN_POST_TEXTS: canPostTexts ? 1 : 0
};
Friend.fromMap(Map<String, dynamic> map)
: assert(map != null),
accepted = map[FriendsListTableContract.C_ACCEPTED] == 1,
lastActive = map[FriendsListTableContract.C_LAST_ACTIVE],
following = map[FriendsListTableContract.C_FOLLOWING] == 1,
canPostTexts = map[FriendsListTableContract.C_CAN_POST_TEXTS] == 1,
super.fromMap(map);
}