upload method

Future<(UResponse<String>?, UEmptyResponse?, String?)> upload({
  1. required UFileManagerUploadParams p,
  2. required dynamic onOk(
    1. UResponse<String> r
    ),
  3. required dynamic onError(
    1. UEmptyResponse e
    ),
  4. required dynamic onException(
    1. String e
    ),
})

Implementation

Future<(UResponse<String>?, UEmptyResponse?, String?)> upload({
  required UFileManagerUploadParams p,
  required Function(UResponse<String> r) onOk,
  required Function(UEmptyResponse e) onError,
  required Function(String e) onException,
}) async {
  (UResponse<String>?, UEmptyResponse?, String?) result = (null, null, null);
  final List<MultipartFile> files = <MultipartFile>[
    if (p.file.path != null)
      await UHttpClient.multipartFileFromFile("File", File(p.file.path!), filename: p.file.path!.split("/").last)
    else if (p.file.bytes != null)
      await UHttpClient.multipartFileFromUint8List("File", p.file.bytes!, filename: p.file.path?.split("/").last ?? "file.${p.file.extension ?? "bin"}"),
  ];
  await UHttpClient.upload(
    endpoint: "${U.baseUrl}/FileManager/Upload",
    files: files,
    fields: p.toMap()..addAll(<String, dynamic>{"apiKey": U.apiKey, "token": ULocalStorage.getToken()}),
    onSuccess: (Response r) {
      final UResponse<String> ok = UResponse<String>.fromJson(r.body, (dynamic i) => i);
      result = (ok, null, null);
      onOk(ok);
    },
    onError: (Response r) {
      final UEmptyResponse err = UEmptyResponse.fromJson(r.body);
      result = (null, err, null);
      onError(err);
    },
    onException: () {
      result = (null, null, "");
      onException("");
    },
  );
  return result;
}