config_repository.dart 1005 B

123456789101112131415161718192021222324252627282930313233
  1. import 'package:electronic_assistant/base/app_base_request.dart';
  2. import 'package:electronic_assistant/data/api/atmob_api.dart';
  3. import 'package:electronic_assistant/utils/async_util.dart';
  4. import 'package:electronic_assistant/utils/cancel_future.dart';
  5. import 'package:electronic_assistant/utils/http_handler.dart';
  6. import '../api/response/example_info_response.dart';
  7. class ConfigRepository {
  8. ConfigRepository._();
  9. ExampleInfoResponse? _exampleInfo;
  10. Future<ExampleInfoResponse> getExampleInfo() async {
  11. if (_exampleInfo != null) {
  12. return _exampleInfo!;
  13. }
  14. return await AsyncUtil.retryWhen(() => _requestExampleInfo(), 3,
  15. const Duration(seconds: 1), (error) => true);
  16. }
  17. Future<ExampleInfoResponse> _requestExampleInfo() {
  18. return atmobApi
  19. .exampleInfo(AppBaseRequest())
  20. .then(HttpHandler.handle(true))
  21. .then((response) {
  22. _exampleInfo = response;
  23. return response;
  24. });
  25. }
  26. }
  27. final configRepository = ConfigRepository._();