fromJson<T extends EventBodyModel> static method

EventModel<T> fromJson<T extends EventBodyModel>(
  1. 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>;
}