import 'package:flutter_openim_sdk/flutter_openim_sdk.dart'; import 'package:get/get.dart'; import 'package:openim/pages/contacts/group_profile_panel/group_profile_panel_logic.dart'; import 'package:openim/routes/app_navigator.dart'; import 'package:openim_common/openim_common.dart'; import '../../core/controller/im_controller.dart'; import '../home/home_logic.dart'; import 'select_contacts/select_contacts_logic.dart'; class ContactsLogic extends GetxController implements ViewUserProfileBridge, SelectContactsBridge, ScanBridge { final imLogic = Get.find(); final homeLogic = Get.find(); final friendApplicationList = []; final loading = true.obs; final loadFailed = false.obs; int get friendApplicationCount => homeLogic.unhandledFriendApplicationCount.value; int get groupApplicationCount => homeLogic.unhandledGroupApplicationCount.value; @override void onInit() { PackageBridge.selectContactsBridge = this; PackageBridge.viewUserProfileBridge = this; PackageBridge.scanBridge = this; super.onInit(); } @override void onReady() { reload(); super.onReady(); } Future reload() async { loading.value = true; loadFailed.value = false; try { await Future.wait([ OpenIM.iMManager.friendshipManager .getFriendApplicationListAsRecipient(), OpenIM.iMManager.groupManager.getGroupApplicationListAsRecipient(), OpenIM.iMManager.friendshipManager.getFriendListPage( offset: 0, count: 1, filterBlack: true, ), ]); homeLogic.getUnhandledFriendApplicationCount(); homeLogic.getUnhandledGroupApplicationCount(); } catch (e, s) { Logger.print('contacts reload e: $e $s'); loadFailed.value = true; } finally { loading.value = false; } } @override void onClose() { PackageBridge.selectContactsBridge = null; PackageBridge.viewUserProfileBridge = null; PackageBridge.scanBridge = null; super.onClose(); } void newFriend() => AppNavigator.startFriendRequests(); void newGroup() => AppNavigator.startGroupRequests(); void myFriend() => AppNavigator.startFriendList(); void myGroup() => AppNavigator.startGroupList(); void searchContacts() => AppNavigator.startGlobalSearch(); void addContacts() => AppNavigator.startAddColleague(); @override Future? selectContacts( int type, { List? defaultCheckedIDList, List? checkedList, List? excludeIDList, bool openSelectedSheet = false, String? groupID, String? ex, }) => AppNavigator.startSelectContacts( action: SelAction.values[type], defaultCheckedIDList: defaultCheckedIDList, checkedList: checkedList, excludeIDList: excludeIDList, openSelectedSheet: openSelectedSheet, groupID: groupID, ex: ex, ); @override viewUserProfile(String userID, String? nickname, String? faceURL, [String? groupID]) => AppNavigator.startUserProfilePane( userID: userID, nickname: nickname, faceURL: faceURL, groupID: groupID, ); @override scanOutGroupID(String groupID) => AppNavigator.startGroupProfilePanel( groupID: groupID, joinGroupMethod: JoinGroupMethod.qrcode, offAndToNamed: true, ); @override scanOutUserID(String userID) => AppNavigator.startUserProfilePane(userID: userID, offAndToNamed: true); }