import 'package:get/get.dart'; import 'package:injectable/injectable.dart'; import 'package:location/data/api/atmob_api.dart'; import 'package:location/di/get_it.dart'; import 'package:location/utils/http_handler.dart'; import '../api/request/message_request.dart'; import '../api/request/operation_friend_request.dart'; import '../api/request/request_friendlist_request.dart'; import '../api/response/message_response.dart'; import '../api/response/request_friend_list_response.dart'; import '../bean/request_friend_info.dart'; @lazySingleton class MessageRepository { final AtmobApi atmobApi; bool isRefreshing = false; Rxn latestFriendRequest = Rxn(); RxInt waitingCount = RxInt(0); MessageRepository(this.atmobApi) { refreshFriendWaitingCount(); } static MessageRepository getInstance() { return getIt.get(); } void refreshFriendWaitingCount() { if (isRefreshing) { return; } isRefreshing = true; getRequestWaitingList().whenComplete(() { isRefreshing = false; }); } Future getRequestWaitingList() { return atmobApi .getRequestWaitingList(RequestFriendListRequest()) .then(HttpHandler.handle(true)) .then((data) { if (data.list == null || data.list!.isEmpty) { latestFriendRequest.value = null; } else { latestFriendRequest.value = data.list!.first; } waitingCount.value = data.count; return data; }); } Future getRequestFriendList() { return atmobApi .getRequestFriendList(RequestFriendListRequest()) .then(HttpHandler.handle(true)); } void clearMessage() { latestFriendRequest.value = null; waitingCount.value = 0; } Future getMessageList() { return atmobApi .getMessageList(MessageRequest()) .then(HttpHandler.handle(true)); } Future acceptFriendAccept(int friendId) { return atmobApi .acceptFriendAccept(OperationFriendRequest(friendId)) .then(HttpHandler.handle(true)) .then((_) => refreshFriendWaitingCount()); } Future refuseFriendAccept(int friendId) { return atmobApi .refuseFriendAccept(OperationFriendRequest(friendId)) .then(HttpHandler.handle(true)) .then((_) => refreshFriendWaitingCount()); } }