mirror of
https://gitlab.com/comunic/comunicmobile
synced 2025-06-19 08:15:16 +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