import 'package:objectbox/objectbox.dart'; import 'package:stadtbote/main.dart'; import 'package:stadtbote/tools/util.dart'; @Entity() class ChatMessage { @Id() int id = 0; late int time; late String from; late String subj; late String text; bool read = false; ChatMessage(); factory ChatMessage.fromJson(Map json) { final message = ChatMessage(); message.id = json['id'] as int? ?? 0; message.time = json['time'] as int; message.from = json['from'] as String; message.subj = json['subj'] as String; message.text = json['text'] as String; message.read = json['read'] as bool? ?? false; return message; } Map toJson() { return { 'id': id, 'time': time, 'from': from, 'subj': subj, 'text': text, 'read': read, }; } static Future mergeFromJson(Map json) async { var availableMessage = MyApp.objectBoxStore.box().get(json["id"] as int); if (availableMessage != null) { availableMessage.id = json["id"]; availableMessage.time = json["time"]; availableMessage.from = json["from"]; availableMessage.subj = json["subj"]; availableMessage.text = json['text']; return availableMessage; } else { var message = ChatMessage.fromJson(json); message.read = false; return message; } } static Future getNextId() async { int currentExport500Id = Util.preferencesGetInt('next_message_id', 0) as int; currentExport500Id += 1; Util.preferencesSaveInt("next_message_id", currentExport500Id); return currentExport500Id; } }