friends_repository.dart 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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/data/api/request/friends_list_request.dart';
  5. import 'package:location/di/get_it.dart';
  6. import 'package:location/utils/http_handler.dart';
  7. import '../../utils/atmob_log.dart';
  8. import '../api/response/friends_list_response.dart';
  9. import '../bean/user_info.dart';
  10. @lazySingleton
  11. class FriendsRepository {
  12. final String tag = 'FriendsRepository';
  13. final AtmobApi atmobApi;
  14. bool refreshFriendsFlag = false;
  15. final RxList<UserInfo> friendsList = RxList();
  16. FriendsRepository(this.atmobApi) {
  17. AtmobLog.d(tag, '$tag....init');
  18. refreshFriends();
  19. }
  20. void clearFriends() {
  21. friendsList.clear();
  22. }
  23. void refreshFriends() {
  24. if (refreshFriendsFlag) {
  25. return;
  26. }
  27. refreshFriendsFlag = true;
  28. friendList(0, 300).then((value) {
  29. friendsList.value = value.friends;
  30. }).whenComplete(() {
  31. refreshFriendsFlag = false;
  32. });
  33. }
  34. Future<FriendsListResponse> friendList(int offset, int limit) {
  35. return atmobApi
  36. .friendList(FriendsListRequest(offset: offset, limit: limit))
  37. .then(HttpHandler.handle(true));
  38. }
  39. static FriendsRepository getInstance() {
  40. return getIt.get<FriendsRepository>();
  41. }
  42. }