mirror of
				https://gitlab.com/comunic/comunicmobile
				synced 2025-11-04 12:14:11 +00:00 
			
		
		
		
	Start to fix null safety migration errors
This commit is contained in:
		@@ -17,7 +17,7 @@ abstract class SerializableElement<T> extends Comparable<T> {
 | 
			
		||||
 | 
			
		||||
abstract class BaseSerializationHelper<T extends SerializableElement> {
 | 
			
		||||
  /// List cache
 | 
			
		||||
  List<T> _cache;
 | 
			
		||||
  List<T>? _cache;
 | 
			
		||||
 | 
			
		||||
  /// The name of the type of data to serialise
 | 
			
		||||
  String get type;
 | 
			
		||||
@@ -48,12 +48,15 @@ abstract class BaseSerializationHelper<T extends SerializableElement> {
 | 
			
		||||
    try {
 | 
			
		||||
      final file = await _getFilePath();
 | 
			
		||||
 | 
			
		||||
      if (!await file.exists()) return _cache = [];
 | 
			
		||||
      if (!await file.exists()) {
 | 
			
		||||
        _cache = [];
 | 
			
		||||
        return;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      final List<dynamic> json = jsonDecode(await file.readAsString());
 | 
			
		||||
      _cache = json.cast<Map<String, dynamic>>().map(parse).toList();
 | 
			
		||||
 | 
			
		||||
      _cache.sort();
 | 
			
		||||
      _cache!.sort();
 | 
			
		||||
    } catch (e, s) {
 | 
			
		||||
      logError(e, s);
 | 
			
		||||
      print("Failed to read serialized data!");
 | 
			
		||||
@@ -67,8 +70,10 @@ abstract class BaseSerializationHelper<T extends SerializableElement> {
 | 
			
		||||
 | 
			
		||||
    try {
 | 
			
		||||
      final file = await _getFilePath();
 | 
			
		||||
      await file.writeAsString(jsonEncode(
 | 
			
		||||
          _cache.map((e) => e.toJson()).toList().cast<Map<String, dynamic>>()));
 | 
			
		||||
      await file.writeAsString(jsonEncode(_cache!
 | 
			
		||||
          .map((e) => e.toJson())
 | 
			
		||||
          .toList()
 | 
			
		||||
          .cast<Map<String, dynamic>>()));
 | 
			
		||||
    } catch (e, s) {
 | 
			
		||||
      print("Failed to write file!");
 | 
			
		||||
      logError(e, s);
 | 
			
		||||
@@ -78,7 +83,7 @@ abstract class BaseSerializationHelper<T extends SerializableElement> {
 | 
			
		||||
  /// Get the current list of elements
 | 
			
		||||
  Future<List<T>> getList() async {
 | 
			
		||||
    await _loadCache();
 | 
			
		||||
    return List.from(_cache);
 | 
			
		||||
    return List.from(_cache!);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /// Set a new list of conversations
 | 
			
		||||
@@ -90,23 +95,23 @@ abstract class BaseSerializationHelper<T extends SerializableElement> {
 | 
			
		||||
  /// Insert new element
 | 
			
		||||
  Future<void> insert(T el) async {
 | 
			
		||||
    await _loadCache();
 | 
			
		||||
    _cache.add(el);
 | 
			
		||||
    _cache.sort();
 | 
			
		||||
    _cache!.add(el);
 | 
			
		||||
    _cache!.sort();
 | 
			
		||||
    await _saveCache();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /// Insert new element
 | 
			
		||||
  Future<void> insertMany(List<T> els) async {
 | 
			
		||||
    await _loadCache();
 | 
			
		||||
    _cache.addAll(els);
 | 
			
		||||
    _cache.sort();
 | 
			
		||||
    _cache!.addAll(els);
 | 
			
		||||
    _cache!.sort();
 | 
			
		||||
    await _saveCache();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /// Check if any entry in the last match the predicate
 | 
			
		||||
  Future<bool> any(bool isContained(T t)) async {
 | 
			
		||||
    await _loadCache();
 | 
			
		||||
    return _cache.any((element) => isContained(element));
 | 
			
		||||
    return _cache!.any((element) => isContained(element));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  Future<bool> has(T el) => any((t) => t == el);
 | 
			
		||||
@@ -114,7 +119,7 @@ abstract class BaseSerializationHelper<T extends SerializableElement> {
 | 
			
		||||
  /// Check if any entry in the last match the predicate
 | 
			
		||||
  Future<T> first(bool filter(T t)) async {
 | 
			
		||||
    await _loadCache();
 | 
			
		||||
    return _cache.firstWhere((element) => filter(element));
 | 
			
		||||
    return _cache!.firstWhere((element) => filter(element));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /// Replace an element with another one
 | 
			
		||||
@@ -122,10 +127,10 @@ abstract class BaseSerializationHelper<T extends SerializableElement> {
 | 
			
		||||
    await _loadCache();
 | 
			
		||||
 | 
			
		||||
    // Insert or replace the element
 | 
			
		||||
    _cache = _cache.where((element) => !isToReplace(element)).toList();
 | 
			
		||||
    _cache.add(newEl);
 | 
			
		||||
    _cache = _cache!.where((element) => !isToReplace(element)).toList();
 | 
			
		||||
    _cache!.add(newEl);
 | 
			
		||||
 | 
			
		||||
    _cache.sort();
 | 
			
		||||
    _cache!.sort();
 | 
			
		||||
    await _saveCache();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@@ -133,8 +138,8 @@ abstract class BaseSerializationHelper<T extends SerializableElement> {
 | 
			
		||||
  Future<void> insertOrReplaceElements(List<T> list) async {
 | 
			
		||||
    await _loadCache();
 | 
			
		||||
 | 
			
		||||
    _cache.removeWhere((element) => list.any((newEl) => element == newEl));
 | 
			
		||||
    _cache.addAll(list);
 | 
			
		||||
    _cache!.removeWhere((element) => list.any((newEl) => element == newEl));
 | 
			
		||||
    _cache!.addAll(list);
 | 
			
		||||
 | 
			
		||||
    await _saveCache();
 | 
			
		||||
  }
 | 
			
		||||
@@ -142,7 +147,7 @@ abstract class BaseSerializationHelper<T extends SerializableElement> {
 | 
			
		||||
  /// Remove elements
 | 
			
		||||
  Future<void> removeElement(bool isToRemove(T t)) async {
 | 
			
		||||
    await _loadCache();
 | 
			
		||||
    _cache.removeWhere((element) => isToRemove(element));
 | 
			
		||||
    _cache!.removeWhere((element) => isToRemove(element));
 | 
			
		||||
    await _saveCache();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@ import 'package:comunic/models/conversation_message.dart';
 | 
			
		||||
///
 | 
			
		||||
/// @author Pierre Hubert
 | 
			
		||||
 | 
			
		||||
HashMap<int, ConversationsMessagesSerializationHelper> _instances;
 | 
			
		||||
HashMap<int?, ConversationsMessagesSerializationHelper>? _instances;
 | 
			
		||||
 | 
			
		||||
class ConversationsMessagesSerializationHelper
 | 
			
		||||
    extends BaseSerializationHelper<ConversationMessage> {
 | 
			
		||||
@@ -18,13 +18,13 @@ class ConversationsMessagesSerializationHelper
 | 
			
		||||
      : convID = convID,
 | 
			
		||||
        assert(convID != null);
 | 
			
		||||
 | 
			
		||||
  factory ConversationsMessagesSerializationHelper(int convID) {
 | 
			
		||||
  factory ConversationsMessagesSerializationHelper(int? convID) {
 | 
			
		||||
    if (_instances == null) _instances = HashMap();
 | 
			
		||||
 | 
			
		||||
    if (!_instances.containsKey(convID))
 | 
			
		||||
      _instances[convID] = ConversationsMessagesSerializationHelper._(convID);
 | 
			
		||||
    if (!_instances!.containsKey(convID))
 | 
			
		||||
      _instances![convID] = ConversationsMessagesSerializationHelper._(convID!);
 | 
			
		||||
 | 
			
		||||
    return _instances[convID];
 | 
			
		||||
    return _instances![convID]!;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
 
 | 
			
		||||
@@ -28,5 +28,5 @@ class ConversationsSerializationHelper
 | 
			
		||||
      ConversationsList()..addAll(await super.getList());
 | 
			
		||||
 | 
			
		||||
  /// Get a conversation
 | 
			
		||||
  Future<Conversation> get(int id) => first((t) => t.id == id);
 | 
			
		||||
  Future<Conversation> get(int? id) => first((t) => t.id == id);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@ import 'package:comunic/models/user.dart';
 | 
			
		||||
///
 | 
			
		||||
/// @author Pierre Hubert
 | 
			
		||||
 | 
			
		||||
UsersListSerialisationHelper _singleton;
 | 
			
		||||
UsersListSerialisationHelper? _singleton;
 | 
			
		||||
 | 
			
		||||
class UsersListSerialisationHelper extends BaseSerializationHelper<User> {
 | 
			
		||||
  UsersListSerialisationHelper._();
 | 
			
		||||
@@ -13,7 +13,7 @@ class UsersListSerialisationHelper extends BaseSerializationHelper<User> {
 | 
			
		||||
  factory UsersListSerialisationHelper() {
 | 
			
		||||
    if (_singleton == null) _singleton = UsersListSerialisationHelper._();
 | 
			
		||||
 | 
			
		||||
    return _singleton;
 | 
			
		||||
    return _singleton!;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
@@ -23,6 +23,6 @@ class UsersListSerialisationHelper extends BaseSerializationHelper<User> {
 | 
			
		||||
  User parse(Map<String, dynamic> m) => User.fromJson(m);
 | 
			
		||||
 | 
			
		||||
  /// Remove a user by its ID
 | 
			
		||||
  Future<void> removeUserByID(int userID) =>
 | 
			
		||||
  Future<void> removeUserByID(int? userID) =>
 | 
			
		||||
      removeElement((t) => t.id == userID);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user