config_repository.dart 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import 'package:get/get.dart';
  2. import 'package:injectable/injectable.dart';
  3. import 'package:location/data/api/atmob_api.dart';
  4. import 'package:location/data/api/request/configs_request.dart';
  5. import 'package:location/data/bean/config_bean.dart';
  6. import 'package:location/data/repositories/friends_repository.dart';
  7. import 'package:location/utils/async_util.dart';
  8. import 'package:location/utils/http_handler.dart';
  9. import '../api/response/configs_response.dart';
  10. @lazySingleton
  11. class ConfigRepository {
  12. final String tag = 'ConfigRepository';
  13. static const int configCustomId = 2;
  14. static const int configVirtualFriendId = 4;
  15. static const int configAddFriendTipId = 5;
  16. static const int configAccountLogoutId = 12;
  17. bool? _isShowVirtualFriend;
  18. final Rxn<bool> isOpenFreeMember = Rxn<bool>();
  19. final AtmobApi atmobApi;
  20. final FriendsRepository friendsRepository;
  21. ConfigRepository(this.atmobApi, this.friendsRepository) {
  22. refreshConfig();
  23. }
  24. void refreshConfig() {
  25. AsyncUtil.retry(() => requestConfigsData(), Duration(seconds: 3),
  26. maxRetry: 100)
  27. .then((configsResponse) {
  28. final list = configsResponse.list;
  29. if (list == null || list.isEmpty) {
  30. return;
  31. }
  32. for (var item in list) {
  33. final id = item.id;
  34. switch (id) {
  35. case configCustomId:
  36. break;
  37. case configVirtualFriendId:
  38. _dealWithVirtualFriendSetting(item);
  39. break;
  40. case configAddFriendTipId:
  41. break;
  42. case configAccountLogoutId:
  43. break;
  44. }
  45. }
  46. });
  47. }
  48. Future<ConfigsResponse> requestConfigsData() {
  49. return atmobApi
  50. .getConfigs(ConfigsRequest(ids: [
  51. configCustomId,
  52. configVirtualFriendId,
  53. configAddFriendTipId,
  54. configAccountLogoutId
  55. ]))
  56. .then(HttpHandler.handle(true));
  57. }
  58. void _dealWithVirtualFriendSetting(ConfigBean item) {
  59. final cfg = item.cfg;
  60. if (cfg == null || cfg.isEmpty == true) {
  61. return;
  62. }
  63. // "virtualFriendEnabled": true, 是否开启虚拟好友
  64. if (cfg.containsKey("virtualFriendEnabled")) {
  65. _isShowVirtualFriend = cfg["virtualFriendEnabled"];
  66. if (_isShowVirtualFriend == true) {
  67. friendsRepository.refreshVirtualFriend();
  68. }
  69. }
  70. //"freeMemberEnabled": false 是否开启免费会员体验
  71. if (cfg.containsKey("freeMemberEnabled")) {
  72. isOpenFreeMember.value = cfg["freeMemberEnabled"];
  73. }
  74. }
  75. }