import 'package:isar/isar.dart'; import 'package:json_annotation/json_annotation.dart'; import 'package:stadtbote/main.dart'; import 'package:stadtbote/tools/util.dart'; part 'chat_message.g.dart'; @collection @JsonSerializable() class ChatMessage { late Id id; late int time; late String from; late String subj; late String text; late bool? read = false; ChatMessage(); factory ChatMessage.fromJson(Map json) => _$ChatMessageFromJson(json); Map toJson() => _$ChatMessageToJson(this); static Future mergeFromJson(Map json) async { var availableMessage = await MyApp.isarInstance.chatMessages.filter().idEqualTo(json["id"]).findFirst(); 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; } }