fetchConfig method
Fetch the request configuration from the backend and advance to the welcome step once loaded.
Implementation
Future<void> fetchConfig() async {
_loading = true;
_progress = 0;
notifyListeners();
try {
updateProgress(5);
await _apiService.fetchToken();
updateProgress(12);
final config = await _apiService.fetchRequestConfig();
updateProgress(72);
_requestConfig = config;
// Check if request returned an error (e.g. PROCESSED)
if (config['error'] == true) {
_configErrorMessage = config['message'] as String?;
_loading = false;
goToStep(DataleonFlowStep.alreadyProcessed);
return;
}
final workspaceString =
config['result']?['metadata']?['workspace'] as String?;
if (workspaceString != null && workspaceString.isNotEmpty) {
_workspace = jsonDecode(workspaceString) as Map<String, dynamic>;
}
final language =
config['result']?['metadata']?['language'] as String? ??
dashboardConfiguration['languageApp'] as String?;
if (language != null && language.isNotEmpty) {
_languageCode = language;
}
updateProgress(100);
// Keep the loader visible after reaching 100%.
await Future.delayed(const Duration(milliseconds: 2600));
_loading = false;
goToStep(DataleonFlowStep.welcome);
} catch (e) {
_configErrorMessage = e.toString();
_loading = false;
// 403 / PROCESSED → alreadyProcessed, other errors → error page
if (e is DataleonApiException && e.statusCode == 403) {
goToStep(DataleonFlowStep.alreadyProcessed);
} else {
goToStep(DataleonFlowStep.error);
}
}
}