mirror of
				https://gitlab.com/comunic/comunicmobile
				synced 2025-11-03 19:54:12 +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