characters_repository.dart 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. import 'package:injectable/injectable.dart';
  2. import 'package:get/get.dart';
  3. import 'package:keyboard/data/api/response/character_add_response.dart';
  4. import 'package:keyboard/data/api/response/character_unlock_response.dart';
  5. import 'package:keyboard/data/repository/keyboard_repository.dart';
  6. import '../../base/app_base_request.dart';
  7. import '../../di/get_it.dart';
  8. import '../../utils/atmob_log.dart';
  9. import '../../utils/http_handler.dart';
  10. import '../api/atmob_api.dart';
  11. import '../api/request/character_add_request.dart';
  12. import '../api/request/character_custom_generate_request.dart';
  13. import '../api/request/character_page_request.dart';
  14. import '../api/request/character_unlock_request.dart';
  15. import '../api/response/character_custom_generate_response.dart';
  16. import '../api/response/character_group_response.dart';
  17. import '../api/response/character_page_response.dart';
  18. import '../bean/character_group_info.dart';
  19. @lazySingleton
  20. class CharactersRepository {
  21. final AtmobApi atmobApi;
  22. final String tag = "CharactersRepository";
  23. // 人设主题
  24. final RxList<CharacterGroupInfo> _characterGroupList =
  25. RxList<CharacterGroupInfo>();
  26. RxList<CharacterGroupInfo> get characterGroupList => _characterGroupList;
  27. CharactersRepository(this.atmobApi) {
  28. AtmobLog.d(tag, '$tag....init');
  29. getCharactersGroup();
  30. }
  31. // 获取主题
  32. Future<CharacterGroupResponse> getCharactersGroup() async {
  33. return atmobApi
  34. .getCharactersGroup(AppBaseRequest())
  35. .then(HttpHandler.handle(true))
  36. .then((response) {
  37. _characterGroupList.value = response.characterGroups;
  38. return response;
  39. });
  40. }
  41. // 获取人设列表
  42. Future<CharacterPageResponse> getCharactersPage({
  43. required String groupId,
  44. required String keyboardId,
  45. int page = 1,
  46. int pageSize = 5,
  47. }) {
  48. return atmobApi
  49. .getCharactersPage(
  50. CharacterPageRequest(
  51. keyboardId: keyboardId,
  52. groupId: groupId,
  53. page: page,
  54. pageSize: pageSize,
  55. ),
  56. )
  57. .then(HttpHandler.handle(true));
  58. }
  59. // 添加人设
  60. Future<CharacterAddResponse> characterAdd({
  61. required String characterId,
  62. required String keyboardId,
  63. }) {
  64. return atmobApi
  65. .addCharacter(
  66. CharacterAddRequest(characterId: characterId, keyboardId: keyboardId),
  67. )
  68. .then(HttpHandler.handle(true));
  69. }
  70. // 解锁人设
  71. Future<CharacterUnlockResponse> characterUnlock({
  72. required String characterId,
  73. required String keyboardId,
  74. }) {
  75. return atmobApi
  76. .unlockCharacter(
  77. CharacterUnlockRequest(
  78. characterId: characterId,
  79. keyboardId: keyboardId,
  80. ),
  81. )
  82. .then(HttpHandler.handle(false));
  83. }
  84. ///生成自定义人设
  85. Future<CharacterCustomGenerateResponse> generateCharacterCustom({
  86. String?name,
  87. String?birthday,
  88. String?imageUrl,
  89. int?gender,
  90. List<String>?hobbies,
  91. List<String>?characters,
  92. }
  93. ) {
  94. return atmobApi
  95. .generateCharacterCustom(CharacterCustomGenerateRequest(name: name,birthday: birthday,imageUrl: imageUrl,gender: gender,hobbies: hobbies, characters: characters))
  96. .then(HttpHandler.handle(true));
  97. }
  98. static CharactersRepository getInstance() =>
  99. getIt.get<CharactersRepository>();
  100. }