setting_controller.dart 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. import 'package:cpt_auth/modules/login/login_page.dart';
  2. import 'package:cpt_auth/modules/reset_psd/reset_psd_page.dart';
  3. import 'package:cpt_auth/modules/setting/dialog/switch_project_dialog.dart';
  4. import 'package:domain/entity/response/index_option_entity.dart';
  5. import 'package:domain/repository/auth_repository.dart';
  6. import 'package:domain/repository/ms_repository.dart';
  7. import 'package:get/get.dart';
  8. import 'package:plugin_basic/constants/app_constant.dart';
  9. import 'package:plugin_basic/service/app_config_service.dart';
  10. import 'package:plugin_basic/service/user_service.dart';
  11. import 'package:plugin_platform/engine/dialog/dialog_engine.dart';
  12. import 'package:plugin_platform/engine/notify/notify_engine.dart';
  13. import 'package:plugin_platform/engine/toast/toast_engine.dart';
  14. import 'package:plugin_platform/http/dio/dio_cancelable_mixin.dart';
  15. import 'package:shared/utils/event_bus.dart';
  16. import 'package:widgets/dialog/app_default_dialog.dart';
  17. import 'setting_state.dart';
  18. class SettingController extends GetxController with DioCancelableMixin {
  19. final AuthRepository _authRepository = Get.find();
  20. final MSRepository _msRepository = Get.find();
  21. final SettingState state = SettingState();
  22. //切换账号
  23. void switchProjects() async {
  24. final result = await _msRepository.fetchSwitchProjectList(country: ConfigService.to.selectCountry.value, cancelToken: cancelToken);
  25. if (result.isSuccess) {
  26. final projects = result.data?.cutUser;
  27. if (projects != null && projects.isNotEmpty) {
  28. _showSwitchProjectDialog(projects);
  29. }
  30. } else {
  31. final errorMessage = result.errorMsg;
  32. ToastEngine.show(errorMessage ?? "Network Load Error".tr);
  33. }
  34. }
  35. void _showSwitchProjectDialog(List<IndexOptionEntity> projects) {
  36. DialogEngine.show(
  37. widget: SwitchProjectDialog(
  38. options: projects,
  39. confirmAction: (entity) {
  40. _requestSwitchProject(entity);
  41. },
  42. ));
  43. }
  44. void _requestSwitchProject(IndexOptionEntity entity) async {
  45. final result = await _msRepository.switchProjectSubmit(entity.value, country: ConfigService.to.selectCountry.value, cancelToken: cancelToken);
  46. if (result.isSuccess) {
  47. NotifyEngine.showSuccess('successful'.tr);
  48. final token = result.data?.token;
  49. UserService.to.setToken(token);
  50. //发送通知刷新首页
  51. bus.emit(AppConstant.eventMainRefresh, true);
  52. } else {
  53. final errorMessage = result.errorMsg;
  54. ToastEngine.show(errorMessage ?? "Network Load Error".tr);
  55. }
  56. }
  57. //去重置密码页面
  58. void gotoResetPasswordPage() {
  59. ResetPasswordPage.startInstance();
  60. }
  61. //确定删除账号
  62. void doAccountDelete() {
  63. DialogEngine.show(
  64. widget: AppDefaultDialog(
  65. title: "Confirmation".tr,
  66. message: "Are you sure you want to deactivate your account? You will not be able to login into the app once you proceed with the request.".tr,
  67. confirmAction: () {
  68. _requestDeactivate();
  69. },
  70. ));
  71. }
  72. void _requestDeactivate() async {
  73. var result = await _authRepository.hotelDeactivate(cancelToken: cancelToken);
  74. //处理数据
  75. if (result.isSuccess) {
  76. //清除数据,去首页
  77. UserService.to.handleLogoutParams();
  78. LoginPage.startWithPopAll();
  79. } else {
  80. ToastEngine.show(result.errorMsg ?? "Network Load Error".tr);
  81. }
  82. }
  83. //确定退出登录
  84. void doLogout() {
  85. DialogEngine.show(
  86. widget: AppDefaultDialog(
  87. title: "Confirmation".tr,
  88. message: "Are you sure you need to exit the system?".tr,
  89. confirmAction: () {
  90. _requestLogout();
  91. },
  92. ));
  93. }
  94. /// 请求接口退出账号
  95. void _requestLogout() async {
  96. if (ConfigService.to.selectCountry.value == 5) {
  97. //直接退出
  98. //清除数据,去首页
  99. UserService.to.handleLogoutParams();
  100. LoginPage.startWithPopAll();
  101. } else {
  102. //请求接口
  103. var result = await _authRepository.userLogout(country: ConfigService.to.selectCountry.value, cancelToken: cancelToken);
  104. //处理数据
  105. if (result.isSuccess) {
  106. //清除数据,去首页
  107. UserService.to.handleLogoutParams();
  108. LoginPage.startWithPopAll();
  109. } else {
  110. ToastEngine.show(result.errorMsg ?? "Network Load Error".tr);
  111. }
  112. }
  113. }
  114. }