respondToPermissionRequest method

void respondToPermissionRequest(
  1. String requestId,
  2. RemotePermissionResponse result
)

Respond to a permission request from CCR.

Implementation

void respondToPermissionRequest(
  String requestId,
  RemotePermissionResponse result,
) {
  final pendingRequest = _pendingPermissionRequests[requestId];
  if (pendingRequest == null) {
    developer.log(
      'No pending permission request with ID: $requestId',
      name: 'RemoteSessionManager',
    );
    return;
  }

  _pendingPermissionRequests.remove(requestId);

  final Map<String, dynamic> responsePayload;
  switch (result) {
    case RemotePermissionAllow(:final updatedInput):
      responsePayload = {
        'behavior': 'allow',
        'updatedInput': updatedInput,
      };
    case RemotePermissionDeny(:final message):
      responsePayload = {
        'behavior': 'deny',
        'message': message,
      };
  }

  final controlResponse = <String, dynamic>{
    'type': 'control_response',
    'response': {
      'subtype': 'success',
      'request_id': requestId,
      'response': responsePayload,
    },
  };

  developer.log(
    'Sending permission response: ${responsePayload['behavior']}',
    name: 'RemoteSessionManager',
  );
  _websocket?.sendControlResponse(controlResponse);
}