checkStorageAvailability static method

NativeStorageAvailability? checkStorageAvailability(
  1. int requiredBytes
)

Check storage availability via C++ rac_file_manager_check_storage. Returns full availability result including warnings and recommendations.

Implementation

static NativeStorageAvailability? checkStorageAvailability(
    int requiredBytes) {
  final lib = _lib();
  if (lib == null || _callbacksPtr == null) return null;
  final fn = lib.lookupFunction<
          Int32 Function(Pointer<RacFileCallbacksStruct>, Int64,
              Pointer<RacStorageAvailabilityStruct>),
          int Function(Pointer<RacFileCallbacksStruct>, int,
              Pointer<RacStorageAvailabilityStruct>)>(
      'rac_file_manager_check_storage');

  final availPtr = calloc<RacStorageAvailabilityStruct>();
  try {
    final result = fn(_callbacksPtr!, requiredBytes, availPtr);
    if (result != RacResultCode.success) return null;
    final rec = availPtr.ref.recommendation;
    return NativeStorageAvailability(
      isAvailable: availPtr.ref.isAvailable == RAC_TRUE,
      requiredSpace: availPtr.ref.requiredSpace,
      availableSpace: availPtr.ref.availableSpace,
      hasWarning: availPtr.ref.hasWarning == RAC_TRUE,
      recommendation: rec != nullptr ? rec.toDartString() : null,
    );
  } finally {
    calloc.free(availPtr);
  }
}