import 'dart:async'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:get/get.dart'; import 'package:openim/core/im_callback.dart'; import 'package:openim/pages/home/home_logic.dart'; import 'package:openim_common/openim_common.dart'; import '../../core/controller/im_controller.dart'; import '../../routes/app_navigator.dart'; class MineLogic extends GetxController { final imLogic = Get.find(); late StreamSubscription kickedOfflineSub; void viewMyQrcode() => AppNavigator.startMyQrcode(); void viewMyInfo() => AppNavigator.startMyInfo(); void copyID() { IMUtils.copy(text: imLogic.userInfo.value.userID!); } void accountSetup() => AppNavigator.startAccountSetup(); void aboutUs() => AppNavigator.startAboutUs(); void logout() async { var confirm = await Get.dialog(CustomDialog(title: StrRes.logoutHint)); if (confirm == true) { try { await LoadingView.singleton.wrap(asyncFunction: () async { await imLogic.logout(); await DataSp.removeLoginCertificate(); PushController.logout(); Get.find().conversationsAtFirstPage.clear(); }); AppNavigator.startLogin(); } catch (e) { IMViews.showToast('e:$e'); } } } void kickedOffline({String? tips}) async { if (EasyLoading.isShow) { EasyLoading.dismiss(); } Get.snackbar(StrRes.accountWarn, tips ?? StrRes.accountException); await DataSp.removeLoginCertificate(); PushController.logout(); AppNavigator.startLogin(); } @override void onInit() { kickedOfflineSub = imLogic.onKickedOfflineSubject.listen((value) { if (value == KickoffType.userTokenInvalid) { kickedOffline(tips: StrRes.tokenInvalid); } else { kickedOffline(); } }); super.onInit(); } @override void onClose() { kickedOfflineSub.cancel(); super.onClose(); } }