mapICloudPlatformException function

ICloudOperationException mapICloudPlatformException(
  1. PlatformException error
)

Maps a structured platform exception into a typed iCloud exception.

Implementation

ICloudOperationException mapICloudPlatformException(PlatformException error) {
  final details = error.details;
  final payload = details is Map ? details : const <Object?, Object?>{};
  final data = _ICloudOperationExceptionData(
    category: _readString(payload, 'category') ?? 'unknownNative',
    operation: _readString(payload, 'operation') ?? 'unknown',
    retryable: payload['retryable'] == true,
    message: error.message ?? 'iCloud operation failed',
    relativePath: _readString(payload, 'relativePath'),
    pathKind: _readString(payload, 'pathKind'),
    nativeDomain: _readString(payload, 'nativeDomain'),
    nativeCode: _readInt(payload, 'nativeCode'),
    nativeDescription: _readString(payload, 'nativeDescription'),
    underlying: payload['underlying'],
  );

  return switch (data.category) {
    'itemNotFound' => ICloudItemNotFoundException._(data),
    'containerAccess' => ICloudContainerAccessException._(data),
    'conflict' => ICloudConflictException._(data),
    'itemNotDownloaded' => ICloudItemNotDownloadedException._(data),
    'downloadInProgress' => ICloudDownloadInProgressException._(data),
    'timeout' => ICloudTimeoutException._(data),
    'coordination' => ICloudCoordinationException._(data),
    'invalidArgument' => ICloudInvalidArgumentException._(data),
    _ => ICloudUnknownNativeException._(data),
  };
}