blob: 854526951c414837561d1449e42beeea9b147afb [file] [log] [blame]
// Copyright (c) 2025, the Dart project authors. All rights reserved.
// Defines the response for service extension calls over WebSocket.
import 'dart:convert';
import 'package:built_value/built_value.dart';
import 'package:built_value/serializer.dart';
part 'service_extension_response.g.dart';
abstract class ServiceExtensionResponse
implements
Built<ServiceExtensionResponse, ServiceExtensionResponseBuilder> {
String get id;
String?
get resultJson; // Store result as JSON string for built_value compatibility
bool get success;
int? get errorCode;
String? get errorMessage;
// Helper method to get result as Map<String, dynamic>
Map<String, dynamic>? get result =>
resultJson == null || resultJson!.isEmpty
? null
: json.decode(resultJson!) as Map<String, dynamic>;
ServiceExtensionResponse._();
factory ServiceExtensionResponse([
void Function(ServiceExtensionResponseBuilder) updates,
]) = _$ServiceExtensionResponse;
// Convenient factory method to create with result Map
factory ServiceExtensionResponse.fromResult({
required String id,
required bool success,
Map<String, dynamic>? result,
int? errorCode,
String? errorMessage,
}) => ServiceExtensionResponse(
(b) =>
b
..id = id
..success = success
..resultJson = result != null ? json.encode(result) : null
..errorCode = errorCode
..errorMessage = errorMessage,
);
static Serializer<ServiceExtensionResponse> get serializer =>
_$serviceExtensionResponseSerializer;
}