getProfile method
初始化
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;
}
}