keyboard_repository.dart 5.5 KB

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