Files
stadtbote-app/lib/model/message.dart
T
2024-02-28 14:46:51 +01:00

69 lines
1.6 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 'message.g.dart';
@JsonSerializable()
class MessageMessage {
late Message mssg;
MessageMessage();
factory MessageMessage.fromJson(Map<String, dynamic> json) => _$MessageMessageFromJson(json);
Map<String, dynamic> toJson() => _$MessageMessageToJson(this);
}
@collection
@JsonSerializable()
class Message {
late Id id;
late String time;
late String from;
late String subj;
late List<String> text;
late bool? read = false;
Message();
factory Message.fromJson(Map<String, dynamic> json) => _$MessageFromJson(json);
Map<String, dynamic> toJson() => _$MessageToJson(this);
static Future<Message> mergeFromJson(Map<String, dynamic> json) async {
var availableMessage = await MyApp.isarInstance.messages.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'] as List<dynamic>).map((e) => e as String).toList();
return availableMessage;
} else {
var message = Message.fromJson(json);
message.read = false;
return message;
}
}
static Future<int> getNextId() async {
int currentExport500Id = await Util.preferencesGetInt('next_message_id', 0) as int;
currentExport500Id += 1;
Util.preferencesSaveInt("next_message_id", currentExport500Id);
return currentExport500Id;
}
}