message_repository.dart 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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/di/get_it.dart';
  5. import 'package:location/utils/http_handler.dart';
  6. import '../api/request/message_request.dart';
  7. import '../api/request/operation_friend_request.dart';
  8. import '../api/request/request_friendlist_request.dart';
  9. import '../api/response/message_response.dart';
  10. import '../api/response/request_friend_list_response.dart';
  11. import '../bean/request_friend_info.dart';
  12. @lazySingleton
  13. class MessageRepository {
  14. final AtmobApi atmobApi;
  15. bool isRefreshing = false;
  16. Rxn<RequestFriendInfo> latestFriendRequest = Rxn<RequestFriendInfo>();
  17. RxInt waitingCount = RxInt(0);
  18. MessageRepository(this.atmobApi) {
  19. refreshFriendWaitingCount();
  20. }
  21. static MessageRepository getInstance() {
  22. return getIt.get<MessageRepository>();
  23. }
  24. void refreshFriendWaitingCount() {
  25. if (isRefreshing) {
  26. return;
  27. }
  28. isRefreshing = true;
  29. getRequestWaitingList().whenComplete(() {
  30. isRefreshing = false;
  31. });
  32. }
  33. Future<RequestFriendListResponse> getRequestWaitingList() {
  34. return atmobApi
  35. .getRequestWaitingList(RequestFriendListRequest())
  36. .then(HttpHandler.handle(true))
  37. .then((data) {
  38. if (data.list == null || data.list!.isEmpty) {
  39. latestFriendRequest.value = null;
  40. } else {
  41. latestFriendRequest.value = data.list!.first;
  42. }
  43. waitingCount.value = data.count;
  44. return data;
  45. });
  46. }
  47. Future<RequestFriendListResponse> getRequestFriendList() {
  48. return atmobApi
  49. .getRequestFriendList(RequestFriendListRequest())
  50. .then(HttpHandler.handle(true));
  51. }
  52. void clearMessage() {
  53. latestFriendRequest.value = null;
  54. waitingCount.value = 0;
  55. }
  56. Future<MessageResponse> getMessageList() {
  57. return atmobApi
  58. .getMessageList(MessageRequest())
  59. .then(HttpHandler.handle(true));
  60. }
  61. Future<void> acceptFriendAccept(int friendId) {
  62. return atmobApi
  63. .acceptFriendAccept(OperationFriendRequest(friendId))
  64. .then(HttpHandler.handle(true))
  65. .then((_) => refreshFriendWaitingCount());
  66. }
  67. Future<void> refuseFriendAccept(int friendId) {
  68. return atmobApi
  69. .refuseFriendAccept(OperationFriendRequest(friendId))
  70. .then(HttpHandler.handle(true))
  71. .then((_) => refreshFriendWaitingCount());
  72. }
  73. }