import 'package:get/get.dart'; import 'package:injectable/injectable.dart'; import 'package:location/data/api/atmob_api.dart'; import 'package:location/data/api/request/configs_request.dart'; import 'package:location/data/bean/config_bean.dart'; import 'package:location/data/repositories/friends_repository.dart'; import 'package:location/utils/async_util.dart'; import 'package:location/utils/atmob_log.dart'; import 'package:location/utils/http_handler.dart'; import '../api/response/configs_response.dart'; @lazySingleton class ConfigRepository { final String tag = 'ConfigRepository'; static const int configCustomId = 2; static const int configVirtualFriendId = 4; static const int configAddFriendTipId = 5; static const int configAccountLogoutId = 12; bool? _isShowVirtualFriend; final Rxn isOpenFreeMember = Rxn(); final AtmobApi atmobApi; final FriendsRepository friendsRepository; ConfigRepository(this.atmobApi, this.friendsRepository) { refreshConfig(); } void refreshConfig() { AsyncUtil.retry(() => requestConfigsData(), Duration(seconds: 3), maxRetry: 100) .then((configsResponse) { final list = configsResponse.list; if (list == null || list.isEmpty) { return; } for (var item in list) { final id = item.id; switch (id) { case configCustomId: break; case configVirtualFriendId: _dealWithVirtualFriendSetting(item); break; case configAddFriendTipId: break; case configAccountLogoutId: break; } } }); } Future requestConfigsData() { return atmobApi .getConfigs(ConfigsRequest(ids: [ configCustomId, configVirtualFriendId, configAddFriendTipId, configAccountLogoutId ])) .then(HttpHandler.handle(true)); } void _dealWithVirtualFriendSetting(ConfigBean item) { final cfg = item.cfg; if (cfg == null || cfg.isEmpty == true) { return; } // "virtualFriendEnabled": true, 是否开启虚拟好友 if (cfg.containsKey("virtualFriendEnabled")) { _isShowVirtualFriend = cfg["virtualFriendEnabled"]; if (_isShowVirtualFriend == true) { friendsRepository.refreshVirtualFriend(); } } //"freeMemberEnabled": false 是否开启免费会员体验 if (cfg.containsKey("freeMemberEnabled")) { isOpenFreeMember.value = cfg["freeMemberEnabled"]; } } }