friend_setting_controller.dart 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import 'package:get/get.dart';
  2. import 'package:get/get_core/src/get_main.dart';
  3. import 'package:injectable/injectable.dart';
  4. import 'package:location/base/base_controller.dart';
  5. import 'package:location/data/bean/user_info.dart';
  6. import 'package:location/data/repositories/friends_repository.dart';
  7. import 'package:location/handler/error_handler.dart';
  8. import 'package:location/resource/string.gen.dart';
  9. import '../../../dialog/common_alert_dialog_impl.dart';
  10. import '../../../dialog/friend_update_remark_dialog.dart';
  11. import '../../../utils/common_util.dart';
  12. import '../../../utils/toast_util.dart';
  13. @injectable
  14. class FriendSettingController extends BaseController {
  15. final Rxn<UserInfo> _userInfo = Rxn<UserInfo>();
  16. UserInfo? get userInfo => _userInfo.value;
  17. final FriendsRepository friendsRepository;
  18. FriendSettingController(this.friendsRepository);
  19. @override
  20. void onInit() {
  21. final param = Get.arguments;
  22. if (param is UserInfo) {
  23. _userInfo.value = param;
  24. }
  25. }
  26. void back() {
  27. Get.back();
  28. }
  29. void editRemarkClick() {
  30. FriendUpdateRemarkDialog.show(
  31. remark: userInfo?.remark,
  32. callback: (remark) {
  33. if (remark == userInfo?.remark) {
  34. ToastUtil.show(StringName.remarkNoChange);
  35. return;
  36. }
  37. _updateRemark(remark);
  38. });
  39. }
  40. void _updateRemark(String remark) {
  41. friendsRepository.updateFriendRemark(userInfo?.id ?? '', remark).then((_) {
  42. ToastUtil.show(StringName.remarkUpdateSuccess);
  43. FriendUpdateRemarkDialog.dismiss();
  44. userInfo?.remark = remark;
  45. _userInfo.refresh();
  46. }).catchError((error) {
  47. ErrorHandler.toastError(error);
  48. });
  49. }
  50. void copyPhoneClick() {
  51. copyToClipboard(userInfo?.phoneNumber ?? '');
  52. ToastUtil.show(StringName.copyPhoneNumSuccess);
  53. }
  54. Future<bool> blockHimFuture(bool isChecked) async {
  55. if (userInfo == null) {
  56. return false;
  57. }
  58. bool isBlocked = userInfo?.blockedHim ?? false;
  59. try {
  60. await Future.delayed(Duration(seconds: 3));
  61. await friendsRepository.updateFriendBlocked(
  62. friendId: userInfo?.id ?? '', blocked: !isBlocked);
  63. if (!isBlocked) {
  64. ToastUtil.show(StringName.blockedFriend);
  65. } else {
  66. ToastUtil.show(StringName.blockFriendOff);
  67. }
  68. userInfo?.blockedHim = !isBlocked;
  69. return !isBlocked;
  70. } catch (e) {
  71. ErrorHandler.toastError(e);
  72. return isBlocked;
  73. }
  74. }
  75. void deleteFriendClick() {
  76. deleteFriendDialog(confirmOnTap: () {
  77. _deleteFriendFuture();
  78. });
  79. }
  80. void _deleteFriendFuture() {
  81. final friendId = userInfo?.id ?? '';
  82. friendsRepository.deleteFriend(friendId).then((data) {
  83. ToastUtil.show(StringName.deleteSuccess);
  84. Get.back();
  85. }).catchError((error) {
  86. ErrorHandler.toastError(error);
  87. });
  88. }
  89. }