getProfile method

Future<User> getProfile()

初始化

Implementation

Future<User> getProfile() async {
  //
  String? uid = SpUtil.getString(BytedeskConstants.uid);
  final initUrl = BytedeskUtils.getHostUri(
      '/api/user/profile/uid', {'uid': uid, 'client': client});
  final initResponse = await httpClient.get(initUrl, headers: getHeaders());
  //解决json解析中的乱码问题
  Utf8Decoder utf8decoder = const Utf8Decoder(); // fix 中文乱码
  //将string类型数据 转换为json类型的数据
  final responseJson =
      json.decode(utf8decoder.convert(initResponse.bodyBytes));
  debugPrint("$initUrl, getProfile:$responseJson");
  // 判断token是否过期
  if (responseJson.toString().contains('invalid_token')) {
    bytedeskEventBus.fire(InvalidTokenEventBus());
    return User.fromInvalidToken();
  } else {
    //
    User user = User.fromJson(responseJson['data']);
    //
    SpUtil.putString(BytedeskConstants.uid, user.uid!);
    SpUtil.putString(BytedeskConstants.username, user.username!);
    SpUtil.putString(BytedeskConstants.nickname, user.nickname!);
    SpUtil.putString(BytedeskConstants.avatar, user.avatar!);
    SpUtil.putString(BytedeskConstants.mobile, user.mobile ?? '');
    SpUtil.putString(BytedeskConstants.description, user.description!);
    SpUtil.putString(BytedeskConstants.subDomain, user.subDomain!);
    // TODO: 通知前端更新
    // 解析用户资料
    return user;
  }
}