friend_setting_controller.dart 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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. _updateRemark(remark);
  34. });
  35. }
  36. void _updateRemark(String remark) {
  37. friendsRepository.updateFriendRemark(userInfo?.id ?? '', remark).then((_) {
  38. ToastUtil.show(StringName.remarkUpdateSuccess);
  39. FriendUpdateRemarkDialog.dismiss();
  40. userInfo?.remark = remark;
  41. _userInfo.refresh();
  42. }).catchError((error) {
  43. ErrorHandler.toastError(error);
  44. });
  45. }
  46. void copyPhoneClick() {
  47. copyToClipboard(userInfo?.phoneNumber ?? '');
  48. ToastUtil.show(StringName.copyPhoneNumSuccess);
  49. }
  50. Future<bool> blockHimFuture(bool isChecked) async {
  51. if (userInfo == null) {
  52. return false;
  53. }
  54. bool isBlocked = userInfo?.blockedHim ?? false;
  55. try {
  56. await Future.delayed(Duration(seconds: 3));
  57. await friendsRepository.updateFriendBlocked(
  58. friendId: userInfo?.id ?? '', blocked: !isBlocked);
  59. if (!isBlocked) {
  60. ToastUtil.show(StringName.blockedFriend);
  61. } else {
  62. ToastUtil.show(StringName.blockFriendOff);
  63. }
  64. userInfo?.blockedHim = !isBlocked;
  65. return !isBlocked;
  66. } catch (e) {
  67. ErrorHandler.toastError(e);
  68. return isBlocked;
  69. }
  70. }
  71. void deleteFriendClick() {
  72. deleteFriendDialog(confirmOnTap: () {
  73. _deleteFriendFuture();
  74. });
  75. }
  76. void _deleteFriendFuture() {
  77. final friendId = userInfo?.id ?? '';
  78. friendsRepository.deleteFriend(friendId).then((data) {
  79. ToastUtil.show(StringName.deleteSuccess);
  80. Get.back();
  81. }).catchError((error) {
  82. ErrorHandler.toastError(error);
  83. });
  84. }
  85. }