keyboard_repository.dart 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. import 'package:get/get.dart';
  2. import 'package:injectable/injectable.dart';
  3. import 'package:keyboard/base/app_base_request.dart';
  4. import 'package:keyboard/data/api/request/keyboard_character_update_request.dart';
  5. import 'package:keyboard/data/api/request/keyboard_list_request.dart';
  6. import 'package:keyboard/data/api/response/keyboard_love_index_response.dart';
  7. import 'package:keyboard/data/api/response/keyboard_prologue_list_response.dart';
  8. import 'package:keyboard/utils/atmob_log.dart';
  9. import 'dart:convert';
  10. import '../../di/get_it.dart';
  11. import '../../utils/http_handler.dart';
  12. import '../api/atmob_api.dart';
  13. import '../api/request/keyboard_character_list_request.dart';
  14. import '../api/request/keyboard_choose_request.dart';
  15. import '../api/request/keyboard_update_request.dart';
  16. import '../api/response/keyboard_character_list_response.dart';
  17. import '../api/response/keyboard_home_info_response.dart';
  18. import '../api/response/keyboard_list_response.dart';
  19. import '../bean/keyboard_info.dart';
  20. @lazySingleton
  21. class KeyboardRepository {
  22. final tag = "KeyboardRepository";
  23. final AtmobApi atmobApi;
  24. final RxList<KeyboardInfo> _keyboardInfoList = RxList();
  25. RxList<KeyboardInfo> get keyboardInfoList => _keyboardInfoList;
  26. final Rxn<KeyboardLoveIndexResponse> _homeLoveIndex =
  27. Rxn<KeyboardLoveIndexResponse>();
  28. Rxn<KeyboardLoveIndexResponse> get homeLoveIndex =>
  29. _homeLoveIndex;
  30. final Rxn<KeyboardHomeInfoResponse> _homeInfo =
  31. Rxn<KeyboardHomeInfoResponse>();
  32. Rxn<KeyboardHomeInfoResponse> get homeInfo => _homeInfo;
  33. KeyboardRepository(this.atmobApi) {
  34. print('$tag....init');
  35. refreshData();
  36. }
  37. Future refreshData() async {
  38. refreshKeyboardList();
  39. await Future.delayed(const Duration(milliseconds: 500));
  40. // 延迟为了保证首页数据能够正常获取,不然保存的时候,获取太快了,导致还是拉到旧的数值
  41. getKeyboardHomeInfo();
  42. getKeyboardLoveIndex();
  43. }
  44. Future cleanData() async {
  45. _keyboardInfoList.clear();
  46. getKeyboardHomeInfo();
  47. getKeyboardLoveIndex();
  48. }
  49. Future refreshKeyboardList() async {
  50. return getKeyboardList().then((response) {
  51. _keyboardInfoList.value = response.keyboardInfos;
  52. print('$tag refreshKeyboardList: ${response.keyboardInfos.first.id}');
  53. });
  54. }
  55. // 获取键盘列表
  56. Future<KeyboardListResponse> getKeyboardList({String? type}) {
  57. return atmobApi
  58. .getKeyboardList(KeyboardListRequest(type: type))
  59. .then(HttpHandler.handle(true));
  60. }
  61. // 获取键盘人设列表
  62. Future<KeyboardCharacterListResponse> getKeyboardCharacterList({
  63. required String keyboardId,
  64. }) {
  65. return atmobApi
  66. .getKeyboardCharacterList(
  67. KeyboardCharacterListRequest(keyboardId: keyboardId),
  68. )
  69. .then(HttpHandler.handle(true));
  70. }
  71. //更新键盘人设
  72. Future<void> keyboardCharacterUpdate({
  73. required List<String> characterIds,
  74. required String keyboardId,
  75. }) {
  76. return atmobApi
  77. .keyboardCharacterUpdate(
  78. KeyboardCharacterUpdateRequest(
  79. keyboardId: keyboardId,
  80. characterIds: characterIds,
  81. ),
  82. )
  83. .then(HttpHandler.handle(true));
  84. }
  85. // 更新键盘信息
  86. Future<void> updateKeyboardInfo({
  87. required String keyboardId,
  88. String? name,
  89. String? imageUrl,
  90. String? birthday,
  91. int? intimacy,
  92. int? gender,
  93. }) {
  94. return atmobApi
  95. .keyboardUpdate(
  96. KeyboardUpdateRequest(
  97. keyboardId: keyboardId,
  98. name: name,
  99. imageUrl: imageUrl,
  100. birthday: birthday,
  101. intimacy: intimacy,
  102. gender: gender,
  103. ),
  104. )
  105. .then(HttpHandler.handle(true));
  106. }
  107. // 选择键盘
  108. Future<void> keyboardChoose({required String keyboardId}) {
  109. return atmobApi
  110. .keyboardChoose(KeyboardChooseRequest(keyboardId: keyboardId))
  111. .then(HttpHandler.handle(true));
  112. }
  113. // 获取开场白列表
  114. Future<KeyboardPrologueListResponse> getPrologueList() {
  115. return atmobApi
  116. .getPrologueList(AppBaseRequest())
  117. .then(HttpHandler.handle(true));
  118. }
  119. // 获取首页信息
  120. Future<KeyboardHomeInfoResponse> getKeyboardHomeInfo() {
  121. return atmobApi
  122. .getKeyboardHomeInfo(AppBaseRequest())
  123. .then(HttpHandler.handle(true))
  124. .then((response) {
  125. _homeInfo.value = response;
  126. return response;
  127. });
  128. }
  129. // 获取恋爱指数
  130. Future<KeyboardLoveIndexResponse> getKeyboardLoveIndex() {
  131. return atmobApi
  132. .getKeyboardLoveIndex(AppBaseRequest())
  133. .then(HttpHandler.handle(true))
  134. .then((response) {
  135. _homeLoveIndex.value = response;
  136. return response;
  137. });
  138. }
  139. static KeyboardRepository getInstance() => getIt.get<KeyboardRepository>();
  140. }