mod: 用户信息渲染、退出登录

This commit is contained in:
guozhigq
2023-05-10 00:35:24 +08:00
parent 04668b3591
commit e612e60361
19 changed files with 674 additions and 159 deletions

View File

@ -23,4 +23,7 @@ class Api {
// 获取用户信息
static const String userInfo = '/x/web-interface/nav';
// 获取当前用户状态
static const String userStatOwner = '/x/web-interface/nav/stat';
}

View File

@ -12,6 +12,7 @@ import 'package:dio_cookie_manager/dio_cookie_manager.dart';
class Request {
static final Request _instance = Request._internal();
static late CookieManager cookieManager;
factory Request() => _instance;
@ -31,11 +32,9 @@ class Request {
ignoreExpires: true,
storage: FileStorage(cookiePath),
);
dio.interceptors.add(CookieManager(cookieJar));
var cookie = await CookieManager(cookieJar)
.cookieJar
cookieManager = CookieManager(cookieJar);
dio.interceptors.add(cookieManager);
var cookie = await cookieManager.cookieJar
.loadForRequest(Uri.parse(HttpString.baseUrl));
if (cookie.isEmpty) {
try {
@ -46,6 +45,16 @@ class Request {
}
}
// 移除cookie
static removeCookie() async {
await cookieManager.cookieJar
.saveFromResponse(Uri.parse(HttpString.baseUrl), []);
await cookieManager.cookieJar
.saveFromResponse(Uri.parse(HttpString.baseApiUrl), []);
cookieManager.cookieJar.deleteAll();
dio.interceptors.add(cookieManager);
}
/*
* config it and create
*/

View File

@ -1,6 +1,7 @@
import 'package:pilipala/http/api.dart';
import 'package:pilipala/http/init.dart';
import 'package:pilipala/models/user/info.dart';
import 'package:pilipala/models/user/stat.dart';
class UserHttp {
static Future<dynamic> userStat({required int mid}) async {
@ -17,6 +18,16 @@ class UserHttp {
if (res.data['code'] == 0) {
UserInfoData data = UserInfoData.fromJson(res.data['data']);
return {'status': true, 'data': data};
} else {
return {'status': false, 'msg': res.data['message']};
}
}
static Future<dynamic> userStatOwner() async {
var res = await Request().get(Api.userStatOwner);
if (res.data['code'] == 0) {
UserStat data = UserStat.fromJson(res.data['data']);
return {'status': true, 'data': data};
} else {
return {'status': false};
}