run method
Implementation
Future<JobResult<F>> run(Future<T> Function() runner) async {
final isComplete = _isComplete(data);
if (isComplete) {
return JobResult(
false,
data: data,
errorMessage: 'Job has reached a terminal state',
);
}
if (isInProgress) {
return JobResult(
false,
data: data,
errorMessage: 'Already in progress',
);
}
if (kDebugMode) {
try {
setFetching();
final response = await runner();
setSuccess(response);
return JobResult(true, data: response as F, errorMessage: errorMessage);
} on ValueError catch (error) {
setFailed(error.message);
} on SocketException catch (_) {
setFailed(socketExceptionDefaultMessage);
} catch (error) {
CrashReporter.report(error, StackTrace.current);
setFailed(unknownErrorDefaultMessage);
if (buildConfig.logHTTP) {
Logger.log('error');
Logger.log(StackTrace.current);
}
}
return JobResult(false, errorMessage: errorMessage, data: data);
}
try {
setFetching();
final response = await runner();
setSuccess(response);
return JobResult(true, data: response as F, errorMessage: errorMessage);
} on ValueError catch (error) {
setFailed(error.message);
} on SocketException catch (_) {
setFailed(socketExceptionDefaultMessage);
} on Error catch (error) {
CrashReporter.report(error, error.stackTrace);
setFailed(unknownErrorDefaultMessage);
} // ignore: avoid_catches_without_on_clauses
catch (error) {
CrashReporter.report(error, StackTrace.current);
setFailed(unknownErrorDefaultMessage);
}
return JobResult(false, errorMessage: errorMessage, data: data);
}