decode method

  1. @override
SetSessionConfigOptionRequest decode(
  1. Object? value
)
override

Decodes a JSON-compatible wire value.

Implementation

@override
SetSessionConfigOptionRequest decode(Object? value) {
  final payload = decodeAcpObject(value);
  final tag = decodeAcpString(payload['type']);
  switch (tag) {
    case 'id':
      final decoder = AcpResilientDecoder(payload);
      return SetSessionConfigOptionRequestId(
        sessionId: decoder.required(
          'sessionId',
          (value) => sessionIdCodec.decode(value),
        ),
        configId: decoder.required(
          'configId',
          (value) => sessionConfigIdCodec.decode(value),
        ),
        meta: decoder.meta(),
        value: decoder.required(
          'value',
          (value) => sessionConfigValueIdCodec.decode(value),
        ),
      );
    case 'boolean':
      final decoder = AcpResilientDecoder(payload);
      return SetSessionConfigOptionRequestBoolean(
        sessionId: decoder.required(
          'sessionId',
          (value) => sessionIdCodec.decode(value),
        ),
        configId: decoder.required(
          'configId',
          (value) => sessionConfigIdCodec.decode(value),
        ),
        meta: decoder.meta(),
        value: decoder.required('value', (value) => decodeAcpBoolean(value)),
      );
    default:
      final decoder = AcpResilientDecoder(payload);
      decoder.required('sessionId', (value) => sessionIdCodec.decode(value));
      decoder.required(
        'configId',
        (value) => sessionConfigIdCodec.decode(value),
      );
      return SetSessionConfigOptionRequestCustom(
        discriminator: tag,
        payload: AcpJsonObject.fromObject(payload),
      );
  }
}