decode method
Decodes a JSON-compatible wire value.
Implementation
@override
SessionConfigOption decode(Object? value) {
final payload = decodeAcpObject(value);
final tag = decodeAcpString(payload['type']);
switch (tag) {
case 'select':
final decoder = AcpResilientDecoder(payload);
return SessionConfigOptionSelect(
sessionConfigSelectCodec.decode(payload),
configId: decoder.required(
'configId',
(value) => sessionConfigIdCodec.decode(value),
),
name: decoder.required('name', (value) => decodeAcpString(value)),
description: decoder
.optionalOnError('description', (value) => decodeAcpString(value))
.valueOrNull,
category: decoder
.optionalOnError(
'category',
(value) => sessionConfigOptionCategoryCodec.decode(value),
)
.valueOrNull,
meta: decoder.meta(),
);
case 'boolean':
final decoder = AcpResilientDecoder(payload);
return SessionConfigOptionBoolean(
sessionConfigBooleanCodec.decode(payload),
configId: decoder.required(
'configId',
(value) => sessionConfigIdCodec.decode(value),
),
name: decoder.required('name', (value) => decodeAcpString(value)),
description: decoder
.optionalOnError('description', (value) => decodeAcpString(value))
.valueOrNull,
category: decoder
.optionalOnError(
'category',
(value) => sessionConfigOptionCategoryCodec.decode(value),
)
.valueOrNull,
meta: decoder.meta(),
);
default:
final decoder = AcpResilientDecoder(payload);
decoder.required(
'configId',
(value) => sessionConfigIdCodec.decode(value),
);
decoder.required('name', (value) => decodeAcpString(value));
return SessionConfigOptionCustom(
discriminator: tag,
payload: AcpJsonObject.fromObject(payload),
);
}
}