| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- import 'package:get/get.dart';
- import 'package:injectable/injectable.dart';
- import 'package:location/data/api/atmob_api.dart';
- import 'package:location/data/api/request/friends_list_request.dart';
- import 'package:location/data/bean/location_info.dart';
- import 'package:location/di/get_it.dart';
- import 'package:location/utils/http_handler.dart';
- import '../../socket/atmob_location_client.dart';
- import '../../utils/atmob_log.dart';
- import '../api/response/friends_list_response.dart';
- import '../bean/user_info.dart';
- @lazySingleton
- class FriendsRepository {
- final String tag = 'FriendsRepository';
- final AtmobApi atmobApi;
- bool refreshFriendsFlag = false;
- final RxList<UserInfo> friendsList = RxList();
- FriendsRepository(this.atmobApi) {
- AtmobLog.d(tag, '$tag....init');
- refreshFriends();
- AtmobLocationClient.addLocationListener((location) {
- updateFriendsLocation(location);
- });
- }
- void updateFriendsLocation(List<LocationInfo> location) {
- if (friendsList.isEmpty || location.isEmpty) {
- return;
- }
- AtmobLog.d('zk', 'updateFriendsLocation');
- final idUserMap = <String, UserInfo>{
- for (final user in friendsList) user.id: user
- };
- for (var datum in location) {
- final user = idUserMap[datum.userId];
- if (user != null) {
- user.lastLocation.value = datum;
- }
- }
- }
- void clearFriends() {
- friendsList.clear();
- }
- Future refreshFriends() async {
- if (refreshFriendsFlag) {
- return;
- }
- refreshFriendsFlag = true;
- return friendList(0, 300).then((value) {
- friendsList.value = value.friends;
- }).whenComplete(() {
- refreshFriendsFlag = false;
- });
- }
- Future<FriendsListResponse> friendList(int offset, int limit) {
- return atmobApi
- .friendList(FriendsListRequest(offset: offset, limit: limit))
- .then(HttpHandler.handle(true));
- }
- static FriendsRepository getInstance() {
- return getIt.get<FriendsRepository>();
- }
- void refreshFriendRequestList() {}
- }
|