| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- import 'package:flutter/Material.dart';
- import 'package:get/get.dart';
- import '../../utils/async_util.dart';
- import '../../utils/http_handler.dart';
- import '../api/atmob_api.dart';
- import '../api/request/config_request.dart';
- import '../api/response/config_response.dart';
- import '../bean/member_pop_up_bean.dart';
- class ConfigRepository {
- ConfigRepository._();
- static const _memberPopUpConfigKey = "member_pop_up";
- static const _discountPageCloseConfigKey = "discount_page_close";
- final discountShowAfterStore = false.obs;
- final showDiscountClose = true.obs;
- Future<ConfigResponse> requestConfigsData() {
- return atmobApi
- .confs(ConfigRequest(
- confCodes: [_memberPopUpConfigKey, _discountPageCloseConfigKey]))
- .then(HttpHandler.handle(true));
- }
- void refreshConfig() {
- AsyncUtil.retry(() => requestConfigsData(), Duration(seconds: 3),
- maxRetry: 100)
- .then((configsResponse) {
- final list = configsResponse.list;
- if (list == null || list.isEmpty) {
- debugPrint('refreshConfig....list is empty');
- return;
- }
- for (var config in list) {
- var key = config.confCode;
- var value = config.value;
- debugPrint(
- 'refreshConfig....key: $key, value: $value, type: ${value.runtimeType}');
- if (value == null || value is! Map<String, dynamic>) {
- continue;
- }
- switch (key) {
- case _memberPopUpConfigKey:
- onMemberPopUpConfigUpdate(value);
- break;
- case _discountPageCloseConfigKey:
- onDiscountPageCloseConfigUpdate(value);
- break;
- default:
- debugPrint('refreshConfig....unknown config key: $key');
- break;
- }
- }
- });
- }
- void onMemberPopUpConfigUpdate(value) {
- final memberPopUpBean = MemberPopUpBean.fromJson(value);
- discountShowAfterStore.value = memberPopUpBean.enable == true;
- }
- void onDiscountPageCloseConfigUpdate(value) {
- showDiscountClose.value = value['showClose'] == true;
- }
- }
- final configRepository = ConfigRepository._();
|