saveMaterial method
- CourseMaterial material, {
- CancelToken? cancelToken,
- ProgressCallback? onReceiveProgress,
- void onSaving()?,
Downloads and exports a material, returning false when cancelled.
Implementation
Future<bool> saveMaterial(
CourseMaterial material, {
CancelToken? cancelToken,
ProgressCallback? onReceiveProgress,
void Function()? onSaving,
}) async {
final reference = await _materialReference(material);
return _fileSaveService.saveDownloadedFile((directory) async {
Object? localError;
StackTrace? localStackTrace;
final file = await _authRepository.withAuth<MaterialFileDto?>(() async {
try {
return await _iSchoolPlusService.downloadMaterial(
reference,
directory,
cancelToken: cancelToken,
onReceiveProgress: onReceiveProgress,
);
} on UnsupportedError catch (error, stackTrace) {
localError = error;
localStackTrace = stackTrace;
return null;
} on FileSystemException catch (error, stackTrace) {
localError = error;
localStackTrace = stackTrace;
return null;
}
}, sso: [.iSchoolPlusService]);
if (localError case final error?) {
if (error is UnsupportedError) {
await _storeMaterialClassification(material, true);
}
Error.throwWithStackTrace(error, localStackTrace!);
}
if (cancelToken?.isCancelled != true) onSaving?.call();
return file!;
}, canSave: () => cancelToken?.isCancelled != true);
}