Lucas.Xu 2abb396467
feat: use result instead of either (#4724)
* feat: use result instead of either

* chore: remove dartz
2024-02-24 21:54:10 +08:00

46 lines
1.3 KiB
Plaintext

class {{ event_class }} {
{%- if has_input %}
{{ input_deserializer }} request;
{{ event_class }}(this.request);
{%- else %}
{{ event_class }}();
{%- endif %}
Future<FlowyResult<{{ output_deserializer }}, {{ error_deserializer }}>> send() {
{%- if has_input %}
final request = FFIRequest.create()
..event = {{ event }}.toString()
..payload = requestToBytes(this.request);
return Dispatch.asyncRequest(request)
.then((bytesResult) => bytesResult.fold(
{%- if has_output %}
(okBytes) => FlowySuccess({{ output_deserializer }}.fromBuffer(okBytes)),
{%- else %}
(bytes) => FlowySuccess(null),
{%- endif %}
(errBytes) => FlowyFailure({{ error_deserializer }}.fromBuffer(errBytes)),
));
{%- else %}
final request = FFIRequest.create()
..event = {{ event }}.toString();
{%- if has_input %}
..payload = bytes;
{%- endif %}
return Dispatch.asyncRequest(request).then((bytesResult) => bytesResult.fold(
{%- if has_output %}
(okBytes) => FlowySuccess({{ output_deserializer }}.fromBuffer(okBytes)),
{%- else %}
(bytes) => FlowySuccess(null),
{%- endif %}
(errBytes) => FlowyFailure({{ error_deserializer }}.fromBuffer(errBytes)),
));
{%- endif %}
}
}