cyberhybridhub/lib/admin/services/admin_access_service.dart
2026-05-31 11:17:12 -05:00

43 lines
1.1 KiB
Dart

import 'package:flutter/foundation.dart';
import 'market_history_admin_api.dart';
enum AdminAccessStatus {
unknown,
loading,
authorized,
forbidden,
unauthorized,
error,
}
/// Probes admin API access for home-screen discovery (allowlist-backed).
class AdminAccessService {
AdminAccessService._();
static final AdminAccessService instance = AdminAccessService._();
final ValueNotifier<AdminAccessStatus> status =
ValueNotifier<AdminAccessStatus>(AdminAccessStatus.unknown);
Future<void> refresh({MarketHistoryAdminApi? api}) async {
status.value = AdminAccessStatus.loading;
try {
await (api ?? MarketHistoryAdminApi()).fetchSyncRuns(limit: 1);
status.value = AdminAccessStatus.authorized;
} on MarketHistoryAdminApiException catch (e) {
status.value = switch (e.statusCode) {
401 => AdminAccessStatus.unauthorized,
403 => AdminAccessStatus.forbidden,
_ => AdminAccessStatus.error,
};
} catch (_) {
status.value = AdminAccessStatus.error;
}
}
void reset() {
status.value = AdminAccessStatus.unknown;
}
}