Files
2026-08-25 11:46:33 +01:00

43 lines
994 B
Dart

import "dart:async";
import "package:flutter/foundation.dart";
import "package:quotegen_client/services/quote_api_v2.dart";
// tracks whether the render backend is reachable, so the ui can hide stuff
// that actually needs it (video render, snapshot links etc) when its down
class BackendStatusProvider extends ChangeNotifier {
// start optimistic - dont want everything flashing away before the first check lands
bool isOnline = true;
bool hasChecked = false;
Timer? _pollTimer;
bool _disposed = false;
BackendStatusProvider() {
checkNow();
_pollTimer = Timer.periodic(const Duration(seconds: 15), (_) => checkNow());
}
Future<void> checkNow() async {
final online = await QuoteGeneratorApiV2.checkHealth();
if (_disposed) return;
hasChecked = true;
if (online != isOnline) {
isOnline = online;
notifyListeners();
}
}
@override
void dispose() {
_disposed = true;
_pollTimer?.cancel();
super.dispose();
}
}