mapICloudPlatformException function
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'),
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),
};
}