Remove flutter chat #26
4 changed files with 17 additions and 20 deletions
enum for event type
commit
3ce1f53bc4
|
|
@ -1,4 +1,5 @@
|
|||
import "package:nexus/models/content/encrypted.dart";
|
||||
import "package:collection/collection.dart";
|
||||
import "package:freezed_annotation/freezed_annotation.dart";
|
||||
import "package:nexus/models/content/membership.dart";
|
||||
import "package:nexus/models/content/message.dart";
|
||||
|
||||
|
|
@ -8,10 +9,19 @@ class Content {
|
|||
|
||||
Map<String, dynamic> toJson() => {};
|
||||
static Content fromEventJson(Map<String, dynamic> eventJson) =>
|
||||
switch (eventJson["type"]) {
|
||||
EncryptedContent.type => EncryptedContent.fromJson,
|
||||
MembershipContent.type => MembershipContent.fromJson,
|
||||
MessageContent.type => MessageContent.fromJson,
|
||||
_ => Content.fromJson,
|
||||
}(eventJson);
|
||||
(EventType.values
|
||||
.firstWhereOrNull((eventType) => eventType == eventJson["type"])
|
||||
?.contentFromJson ??
|
||||
Content.fromJson)(eventJson);
|
||||
}
|
||||
|
||||
@JsonEnum(valueField: "type")
|
||||
enum EventType {
|
||||
encrypted("m.room.encrypted", Content.fromJson),
|
||||
membership("m.room.member", MembershipContent.fromJson),
|
||||
message("m.room.message", MessageContent.fromJson);
|
||||
|
||||
final String type;
|
||||
final Content Function(Map<String, dynamic> json) contentFromJson;
|
||||
const EventType(this.type, this.contentFromJson);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +0,0 @@
|
|||
import "package:nexus/models/content/content.dart";
|
||||
|
||||
class EncryptedContent extends Content {
|
||||
EncryptedContent();
|
||||
factory EncryptedContent.fromJson(Map<String, dynamic> json) =>
|
||||
EncryptedContent();
|
||||
|
||||
static const type = "m.room.encrypted";
|
||||
}
|
||||
|
|
@ -6,8 +6,6 @@ part "membership.g.dart";
|
|||
|
||||
@freezed
|
||||
abstract class MembershipContent extends Content with _$MembershipContent {
|
||||
static const type = "m.room.membership";
|
||||
|
||||
MembershipContent._();
|
||||
const factory MembershipContent({
|
||||
@JsonKey(name: "displayname") required String displayName,
|
||||
|
|
|
|||
|
|
@ -8,8 +8,6 @@ part "message.g.dart";
|
|||
|
||||
@Freezed(unionKey: "msgtype", fallbackUnion: "default")
|
||||
abstract class MessageContent extends Content with _$MessageContent {
|
||||
static const type = "m.room.message";
|
||||
|
||||
MessageContent._();
|
||||
const factory MessageContent({
|
||||
required String msgtype,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue