uaestats_fe/lib/domain/use_cases/stat_data/fallback_logic.dart
2026-05-16 11:31:32 +05:30

20 lines
586 B
Dart
Executable File

Future<T> localOrBackendOrExternal<T>({
required Future<void> Function(T e) storeLocally,
required Future<T?> Function() localGet,
required Future<T> Function() backendGet,
required Future<T> Function() externalGet,
}) async {
final local = await localGet();
if (local != null) return local;
try {
final backend = await backendGet();
storeLocally(backend);
return backend;
} catch (error, stackTrace) {
Future(() => Error.throwWithStackTrace(error, stackTrace));
}
final external = await externalGet();
storeLocally(external);
return external;
}