mirror of
https://gitlab.com/comunic/comunicmobile
synced 2025-06-19 00:05:16 +00:00
Do not use SQLite anymore for users
This commit is contained in:
@ -1,9 +1,8 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:comunic/enums/user_page_visibility.dart';
|
||||
import 'package:comunic/helpers/database/database_contract.dart';
|
||||
import 'package:comunic/helpers/serialization/base_serialization_helper.dart';
|
||||
import 'package:comunic/lists/custom_emojies_list.dart';
|
||||
import 'package:comunic/models/cache_model.dart';
|
||||
import 'package:comunic/utils/ui_utils.dart';
|
||||
import 'package:meta/meta.dart';
|
||||
|
||||
@ -11,7 +10,8 @@ import 'package:meta/meta.dart';
|
||||
///
|
||||
/// @author Pierre HUBERT
|
||||
|
||||
class User extends CacheModel {
|
||||
class User implements SerializableElement<User> {
|
||||
final int id;
|
||||
final String firstName;
|
||||
final String lastName;
|
||||
final UserPageVisibility pageVisibility;
|
||||
@ -20,7 +20,7 @@ class User extends CacheModel {
|
||||
final CustomEmojiesList customEmojies;
|
||||
|
||||
const User({
|
||||
@required int id,
|
||||
@required this.id,
|
||||
@required this.firstName,
|
||||
@required this.lastName,
|
||||
@required this.pageVisibility,
|
||||
@ -28,12 +28,12 @@ class User extends CacheModel {
|
||||
@required this.accountImageURL,
|
||||
@required this.customEmojies,
|
||||
}) : assert(id != null),
|
||||
assert(id > 0),
|
||||
assert(firstName != null),
|
||||
assert(lastName != null),
|
||||
assert(pageVisibility != null),
|
||||
assert(accountImageURL != null),
|
||||
assert(customEmojies != null),
|
||||
super(id: id);
|
||||
assert(customEmojies != null);
|
||||
|
||||
/// Get user full name
|
||||
String get fullName => firstName + " " + lastName;
|
||||
@ -44,27 +44,27 @@ class User extends CacheModel {
|
||||
bool get hasVirtualDirectory =>
|
||||
virtualDirectory != null && virtualDirectory.length > 0;
|
||||
|
||||
Map<String, dynamic> toMap() {
|
||||
return {
|
||||
UserTableContract.C_ID: id,
|
||||
UserTableContract.C_FIRST_NAME: firstName,
|
||||
UserTableContract.C_LAST_NAME: lastName,
|
||||
UserTableContract.C_VISIBILITY: pageVisibility.toString(),
|
||||
UserTableContract.C_VIRTUAL_DIRECTORY: virtualDirectory,
|
||||
UserTableContract.C_ACCOUNT_IMAGE_URL: accountImageURL,
|
||||
UserTableContract.C_CUSTOM_EMOJIES:
|
||||
jsonEncode(customEmojies.toSerializableList()),
|
||||
};
|
||||
}
|
||||
Map<String, dynamic> toJson() => {
|
||||
"id": id,
|
||||
"firstName": firstName,
|
||||
"lastName": lastName,
|
||||
"pageVisibility": pageVisibility.toString(),
|
||||
"virtualDirectory": virtualDirectory,
|
||||
"accountImageURL": accountImageURL,
|
||||
"customEmojies": customEmojies.toSerializableList()
|
||||
};
|
||||
|
||||
User.fromMap(Map<String, dynamic> map)
|
||||
: this.firstName = map[UserTableContract.C_FIRST_NAME],
|
||||
this.lastName = map[UserTableContract.C_LAST_NAME],
|
||||
this.pageVisibility =
|
||||
userPageVisibilityFromString(map[UserTableContract.C_VISIBILITY]),
|
||||
this.virtualDirectory = map[UserTableContract.C_VIRTUAL_DIRECTORY],
|
||||
this.accountImageURL = map[UserTableContract.C_ACCOUNT_IMAGE_URL],
|
||||
User.fromJson(Map<String, dynamic> map)
|
||||
: this.id = map["id"],
|
||||
this.firstName = map["firstName"],
|
||||
this.lastName = map["lastName"],
|
||||
this.pageVisibility = UserPageVisibility.values.firstWhere(
|
||||
(element) => element.toString() == map["pageVisibility"]),
|
||||
this.virtualDirectory = map["virtualDirectory"],
|
||||
this.accountImageURL = map["accountImageURL"],
|
||||
this.customEmojies = CustomEmojiesList.fromSerializedList(
|
||||
jsonDecode(map[UserTableContract.C_CUSTOM_EMOJIES])),
|
||||
super.fromMap(map);
|
||||
jsonDecode(map["customEmojies"]));
|
||||
|
||||
@override
|
||||
int compareTo(User other) => id.compareTo(other.id);
|
||||
}
|
||||
|
Reference in New Issue
Block a user