自习室优化ok
This commit is contained in:
@@ -1,12 +1,13 @@
|
||||
import 'package:app/request/dto/room/board_token_dto.dart';
|
||||
import 'package:app/request/dto/room/rtc_token_dto.dart';
|
||||
import 'package:app/request/network/request.dart';
|
||||
|
||||
import '../dto/room/room_list_item_dto.dart';
|
||||
|
||||
/// 获取房间列表
|
||||
Future<List<RoomListItemDto >> getRoomListApi() async {
|
||||
Future<List<RoomListItemDto>> getRoomListApi() async {
|
||||
var res = await Request().get('/study_room/get_study_room_list');
|
||||
return List<RoomListItemDto >.from(res.map((x) => RoomListItemDto .fromJson(x)));
|
||||
return List<RoomListItemDto>.from(res.map((x) => RoomListItemDto.fromJson(x)));
|
||||
}
|
||||
|
||||
///获取自习室的websocket令牌
|
||||
@@ -24,3 +25,11 @@ Future<RtcTokenDto> getRtcTokenApi(int roomId) async {
|
||||
});
|
||||
return RtcTokenDto.fromJson(res);
|
||||
}
|
||||
|
||||
///获取白板的令牌
|
||||
Future<BoardTokenDto> getBoardTokenApi(int roomId) async {
|
||||
var res = await Request().get('/study_room/get_whiteboard_token', {
|
||||
"study_room_id": roomId,
|
||||
});
|
||||
return BoardTokenDto.fromJson(res);
|
||||
}
|
||||
|
||||
32
lib/request/dto/room/board_token_dto.dart
Normal file
32
lib/request/dto/room/board_token_dto.dart
Normal file
@@ -0,0 +1,32 @@
|
||||
|
||||
class BoardTokenDto {
|
||||
BoardTokenDto({
|
||||
required this.expiresAt,
|
||||
required this.whiteboardAppid,
|
||||
required this.whiteboardUuid,
|
||||
required this.expiresIn,
|
||||
required this.whiteboardToken,
|
||||
});
|
||||
|
||||
DateTime expiresAt;
|
||||
String whiteboardAppid;
|
||||
String whiteboardUuid;
|
||||
int expiresIn;
|
||||
String whiteboardToken;
|
||||
|
||||
factory BoardTokenDto.fromJson(Map<dynamic, dynamic> json) => BoardTokenDto(
|
||||
expiresAt: DateTime.parse(json["expires_at"]),
|
||||
whiteboardAppid: json["whiteboard_appid"],
|
||||
whiteboardUuid: json["whiteboard_uuid"],
|
||||
expiresIn: json["expires_in"],
|
||||
whiteboardToken: json["whiteboard_token"],
|
||||
);
|
||||
|
||||
Map<dynamic, dynamic> toJson() => {
|
||||
"expires_at": expiresAt.toIso8601String(),
|
||||
"whiteboard_appid": whiteboardAppid,
|
||||
"whiteboard_uuid": whiteboardUuid,
|
||||
"expires_in": expiresIn,
|
||||
"whiteboard_token": whiteboardToken,
|
||||
};
|
||||
}
|
||||
@@ -1,34 +1,46 @@
|
||||
import 'package:app/global/event_bus.dart';
|
||||
import 'package:app/providers/user_store.dart';
|
||||
import 'package:app/router/route_paths.dart';
|
||||
import 'package:app/router/routes.dart';
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:flutter_easyloading/flutter_easyloading.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import '../dto/base_dto.dart';
|
||||
|
||||
///请求拦截器
|
||||
void onRequest(
|
||||
RequestOptions options,
|
||||
RequestInterceptorHandler handler,
|
||||
) async {
|
||||
void onRequest(RequestOptions options,
|
||||
RequestInterceptorHandler handler,) async {
|
||||
String token = await UserStore.getToken();
|
||||
options.headers['Authorization'] = 'Bearer $token';
|
||||
return handler.next(options);
|
||||
}
|
||||
|
||||
///响应拦截器
|
||||
void onResponse(
|
||||
Response<dynamic> response,
|
||||
ResponseInterceptorHandler handler,
|
||||
) {
|
||||
void onResponse(Response<dynamic> response,
|
||||
ResponseInterceptorHandler handler,) async {
|
||||
var apiResponse = ApiDto.fromJson(response.data);
|
||||
if (apiResponse.code == 1) {
|
||||
response.data = apiResponse.data;
|
||||
handler.next(response);
|
||||
} else if (apiResponse.code == 401) {
|
||||
// final bus = EventBus();
|
||||
// bus.fire(GlobalEvent.unauthorized);
|
||||
// final context = navigatorKey.currentState?.context;
|
||||
// print("dsd");
|
||||
// if (context != null) {
|
||||
// // UserStore userStore = context.read<UserStore>();
|
||||
// // userStore.logout();
|
||||
// context.go(RoutePaths.login);
|
||||
// }
|
||||
handler.next(response);
|
||||
} else {
|
||||
handler.reject(
|
||||
DioException(
|
||||
requestOptions: response.requestOptions,
|
||||
response: response,
|
||||
error: {'code': 0, 'message': apiResponse.message},
|
||||
error: {'code': apiResponse.code, 'message': apiResponse.message},
|
||||
),
|
||||
);
|
||||
showError(apiResponse.message);
|
||||
@@ -36,15 +48,18 @@ void onResponse(
|
||||
}
|
||||
|
||||
///错误响应
|
||||
void onError(
|
||||
DioException e,
|
||||
ErrorInterceptorHandler handler,
|
||||
) {
|
||||
void onError(DioException e,
|
||||
ErrorInterceptorHandler handler,) async {
|
||||
var title = "";
|
||||
if (e.type == DioExceptionType.connectionTimeout) {
|
||||
title = "请求超时";
|
||||
} else if (e.type == DioExceptionType.badResponse) {
|
||||
if (e.response?.statusCode == 404) {
|
||||
if (e.response?.statusCode == 401) {
|
||||
final bus = EventBus();
|
||||
bus.fire(GlobalEvent.unauthorized);
|
||||
title = "登录信息已失效,请重新登录";
|
||||
}
|
||||
else if (e.response?.statusCode == 404) {
|
||||
title = "接口404不存在";
|
||||
} else {
|
||||
title = "500";
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:app/config/config.dart';
|
||||
import 'package:app/global/config.dart';
|
||||
|
||||
import 'interceptor.dart';
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
import 'package:app/config/config.dart';
|
||||
import 'package:app/global/config.dart';
|
||||
import 'package:app/request/api/room_api.dart';
|
||||
import 'package:app/request/websocket/room_protocol.dart';
|
||||
import 'package:logger/logger.dart';
|
||||
|
||||
Reference in New Issue
Block a user