58 lines
1.4 KiB
Dart
58 lines
1.4 KiB
Dart
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 String time;
|
|
|
|
late String from;
|
|
|
|
late String subj;
|
|
|
|
late String text;
|
|
|
|
late bool? read = false;
|
|
|
|
ChatMessage();
|
|
|
|
factory ChatMessage.fromJson(Map<String, dynamic> json) => _$ChatMessageFromJson(json);
|
|
|
|
Map<String, dynamic> toJson() => _$ChatMessageToJson(this);
|
|
|
|
static Future<ChatMessage> mergeFromJson(Map<String, dynamic> 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<int> getNextId() async {
|
|
int currentExport500Id = Util.preferencesGetInt('next_message_id', 0) as int;
|
|
|
|
currentExport500Id += 1;
|
|
|
|
Util.preferencesSaveInt("next_message_id", currentExport500Id);
|
|
|
|
return currentExport500Id;
|
|
}
|
|
}
|