43 lines
1.1 KiB
Dart
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;
|
|
}
|
|
}
|