import 'dart:collection'; import 'package:comunic/helpers/serialization/base_serialization_helper.dart'; import 'package:comunic/lists/conversation_messages_list.dart'; import 'package:comunic/models/conversation_message.dart'; /// Conversations serialization helper /// /// @author Pierre Hubert final HashMap _instances = HashSet() as HashMap; class ConversationsMessagesSerializationHelper extends BaseSerializationHelper { final int convID; ConversationsMessagesSerializationHelper._(int convID) : convID = convID, assert(convID != null); factory ConversationsMessagesSerializationHelper(int convID) { if (!_instances.containsKey(convID)) _instances[convID] = ConversationsMessagesSerializationHelper._(convID); return _instances[convID]; } @override ConversationMessage parse(Map m) => ConversationMessage.fromJson(m); @override String get type => "conv-messages-$convID"; Future getList() async => ConversationMessagesList()..addAll(await super.getList()); Future insertOrReplace(ConversationMessage msg) async => await insertOrReplaceElement((t) => t.id == msg.id, msg); Future remove(ConversationMessage msg) async => await removeElement((t) => t.id == msg.id); /// Insert or replace a list of messages Future insertOrReplaceAll(List list) async { for (var message in list) await insertOrReplaceElement((t) => t.id == message.id, message); } }