fromJson<T extends EventBodyModel> static method
EventModel<T>
fromJson<
T extends EventBodyModel>( - Json json
)
Implementation
static EventModel<T> fromJson<T extends EventBodyModel>(Json json) {
final timestamp = DateTime.fromMillisecondsSinceEpoch(json['timestamp']);
final nonce = json['nonce'];
final deviceKey = json['device_key'];
final sequence = json['sequence'];
final prevHash = json['prev_hash'];
final type = EventType.fromJson(json['type']);
final signature = json['signature'];
final hash = json['hash'];
final body = parseJson(json['body']);
return switch (type) {
EventType.post => PostEventModel(
nonce: nonce,
deviceKey: deviceKey,
sequence: sequence,
prevHash: prevHash,
timestamp: timestamp,
signature: signature,
hash: hash,
body: PostEventBodyModel.fromJson(body),
),
EventType.message => MessageEventModel(
nonce: nonce,
deviceKey: deviceKey,
sequence: sequence,
prevHash: prevHash,
timestamp: timestamp,
signature: signature,
hash: hash,
body: MessageEventBodyModel.fromJson(body),
),
EventType.messageReaction => MessageReactionEventModel(
nonce: nonce,
deviceKey: deviceKey,
sequence: sequence,
prevHash: prevHash,
timestamp: timestamp,
signature: signature,
hash: hash,
body: MessageReactionEventBodyModel.fromJson(body),
),
EventType.messageDelete => DeleteMessageEventModel(
nonce: nonce,
deviceKey: deviceKey,
sequence: sequence,
prevHash: prevHash,
timestamp: timestamp,
signature: signature,
hash: hash,
body: DeleteMessageEventBodyModel.fromJson(body),
),
EventType.peerIdentity => PeerIdentityEventModel(
nonce: nonce,
deviceKey: deviceKey,
sequence: sequence,
prevHash: prevHash,
timestamp: timestamp,
signature: signature,
hash: hash,
body: PeerIdentityEventBodyModel.fromJson(body),
),
EventType.deviceIdentity => DeviceIdentityEventModel(
nonce: nonce,
deviceKey: deviceKey,
sequence: sequence,
prevHash: prevHash,
timestamp: timestamp,
signature: signature,
hash: hash,
body: DeviceIdentityEventBodyModel.fromJson(body),
),
EventType.spaceIdentity => SpaceIdentityEventModel(
nonce: nonce,
deviceKey: deviceKey,
sequence: sequence,
prevHash: prevHash,
timestamp: timestamp,
signature: signature,
hash: hash,
body: SpaceIdentityEventBodyModel.fromJson(body),
),
EventType.deviceAuth => DeviceAuthEventModel(
nonce: nonce,
deviceKey: deviceKey,
sequence: sequence,
prevHash: prevHash,
timestamp: timestamp,
signature: signature,
hash: hash,
body: DeviceAuthEventBodyModel.fromJson(body),
),
EventType.deviceRevoke => DeviceRevokeEventModel(
nonce: nonce,
deviceKey: deviceKey,
sequence: sequence,
prevHash: prevHash,
timestamp: timestamp,
signature: signature,
hash: hash,
body: DeviceRevokeEventBodyModel.fromJson(body),
),
EventType.deviceSelfRevoke => DeviceSelfRevokeEventModel(
nonce: nonce,
deviceKey: deviceKey,
sequence: sequence,
prevHash: prevHash,
timestamp: timestamp,
signature: signature,
hash: hash,
body: DeviceSelfRevokeEventBodyModel.fromJson(body),
),
EventType.peerRevoke => PeerRevokeEventModel(
nonce: nonce,
deviceKey: deviceKey,
sequence: sequence,
prevHash: prevHash,
timestamp: timestamp,
signature: signature,
hash: hash,
body: PeerRevokeEventBodyModel.fromJson(body),
),
}
as EventModel<T>;
}