Hibok
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

122 line
3.4 KiB

  1. import 'dart:convert';
  2. import 'package:chat/data/UserData.dart';
  3. import 'package:chat/data/group_data_mgr.dart';
  4. import 'package:chat/utils/HttpUtil.dart';
  5. import 'package:chat/utils/TokenMgr.dart';
  6. import 'package:chat/utils/friend_list_mgr.dart';
  7. import 'package:dio/dio.dart';
  8. import 'package:flutter/material.dart';
  9. import 'package:oktoast/oktoast.dart';
  10. import 'package:shared_preferences/shared_preferences.dart';
  11. class RefNameProvider with ChangeNotifier {
  12. int curSelectIndex = 0;
  13. Map<int, String> refMap = {};
  14. init() async {
  15. print('初始化别名');
  16. var sp = await SharedPreferences.getInstance();
  17. List refList =
  18. sp.getStringList('Ref_Name' + UserData().basicInfo.userId.toString());
  19. refMap.clear();
  20. if (refList != null) {
  21. for (var i = 0; i < refList.length; i++) {
  22. Map ref = json.decode(refList[i]);
  23. refMap[ref['userId']] = ref['refName'];
  24. }
  25. notifyListeners();
  26. } else {
  27. sysnRefListFromServer();
  28. }
  29. }
  30. sysnRefListFromServer() async {
  31. Map data = {"userId": UserData().basicInfo.userId};
  32. data['sign'] = TokenMgr().getSign(data);
  33. try {
  34. Response res = await HttpUtil().post('alias/user/list', data: data);
  35. if (res == null) {
  36. return;
  37. }
  38. var resData = res.data;
  39. if (resData['code'] == 0) {
  40. List jsonList = resData['data'];
  41. if (jsonList == null || jsonList.length == 0) {
  42. return;
  43. }
  44. for (var i = 0; i < jsonList.length; i++) {
  45. var ref = jsonList[i];
  46. refMap[ref['userId']] = Uri.decodeComponent(ref['aliasName']);
  47. }
  48. }
  49. } catch (e) {}
  50. }
  51. getRefName(int userId, String name) {
  52. return refMap[userId] == null ? name : refMap[userId];
  53. }
  54. String getGroupRefName(int sessionId, int userId) {
  55. if (refMap[userId] != null) {
  56. return refMap[userId];
  57. }
  58. var groupRefName = GroupInfoMgr().getGroupFdName(sessionId, userId);
  59. if (groupRefName != null) {
  60. return groupRefName;
  61. }
  62. return '';
  63. }
  64. changeRefName(int userId, String refName, callback) {
  65. if (refName == null || refName == '') {
  66. refMap.remove(userId);
  67. } else {
  68. refMap[userId] = refName;
  69. }
  70. notifyListeners();
  71. saveRefName();
  72. FriendListMgr().updateRefNmae(userId);
  73. commitChangeToServer(userId, refName, callback);
  74. }
  75. commitChangeToServer(int userId, String refName, callback) async {
  76. Map data = {"userId": UserData().basicInfo.userId, "aliasUserId": userId};
  77. data['sign'] = TokenMgr().getSign(data);
  78. data["aliasName"] = Uri.encodeComponent(refName);
  79. try {
  80. Response res = await HttpUtil()
  81. .post('alias/set/up', data: data, isShowLoading: true);
  82. if (res == null) {
  83. return;
  84. }
  85. var resData = res.data;
  86. showToast(resData['msg']);
  87. if (resData['code'] == 0) {
  88. print('设置别名成功');
  89. if (callback != null) callback();
  90. } else {
  91. print(resData.msg);
  92. }
  93. } catch (e) {}
  94. }
  95. saveRefName() async {
  96. List<String> refList = [];
  97. refMap.keys.forEach((userId) {
  98. var refStr = json.encode({"userId": userId, "refName": refMap[userId]});
  99. refList.add(refStr);
  100. });
  101. var sp = await SharedPreferences.getInstance();
  102. sp.setStringList(
  103. 'Ref_Name' + UserData().basicInfo.userId.toString(), refList);
  104. }
  105. }