migrated the breaker system to MarianumConnect and refactored the API response to a rule-based model with support for version-specific blocks using maxBuild.
This commit is contained in:
@@ -1,16 +1,20 @@
|
||||
import 'dart:async';
|
||||
|
||||
import '../../../../../api/mhsl/breaker/get_breakers/get_breakers_cache.dart';
|
||||
import '../../../../../api/mhsl/breaker/get_breakers/get_breakers_response.dart';
|
||||
import '../../../../../api/marianumconnect/queries/get_breakers/get_breakers_cache.dart';
|
||||
import '../../../../../api/marianumconnect/queries/get_breakers/get_breakers_response.dart';
|
||||
import '../../../../../api/request_cache.dart';
|
||||
|
||||
class BreakerDataProvider {
|
||||
Future<GetBreakersResponse> getBreakers() {
|
||||
final completer = Completer<GetBreakersResponse>();
|
||||
GetBreakersCache(
|
||||
onUpdate: (data) {
|
||||
if (!completer.isCompleted) completer.complete(data);
|
||||
},
|
||||
);
|
||||
return completer.future;
|
||||
}
|
||||
/// Resolves via [resolveFromCache] (not first-emit-wins): the cache emits its
|
||||
/// stored value first for an instant display, then the network value — and we
|
||||
/// return the latter once [RequestCache.ready] settles. `renew: true` forces a
|
||||
/// fresh network check on every call so a just-changed breaker takes effect on
|
||||
/// the next `refresh()` (app resume) instead of only after a restart.
|
||||
Future<GetBreakersResponse> getBreakers({
|
||||
bool renew = true,
|
||||
void Function(Object)? onError,
|
||||
}) => resolveFromCache<GetBreakersResponse>(
|
||||
(onUpdate, onError) =>
|
||||
GetBreakersCache(renew: renew, onUpdate: onUpdate, onError: onError),
|
||||
onError: onError,
|
||||
operationName: 'getBreakers',
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user