app-starlock/lib/network/request_interceptor.dart

51 lines
1.8 KiB
Dart
Executable File

import 'dart:async';
import 'dart:convert';
import 'dart:ui';
import 'package:get/get.dart';
import 'package:get/get_connect/http/src/request/request.dart';
import 'package:star_lock/app_settings/app_settings.dart';
import 'package:star_lock/login/login/entity/LoginData.dart';
import '../tools/change_language_format.dart';
import '../tools/platform_info_services.dart';
import '../tools/storage.dart';
import '../tools/store_service.dart';
import '../translations/app_dept.dart';
//公共获取UA
String getUserAgent() {
//赋值变量方便调试
final String ua =
'StarLock/${PlatformInfoService.to?.info.version}/${PlatformInfoService.to?.info.buildNumber}/${GetPlatform.isAndroid ? 'Android' : 'iOS'}';
return ua;
}
FutureOr<Request> requestInterceptor(Request request) async {
request.headers['User-Agent'] = getUserAgent();
request.headers['Accept-Language'] =
getLanguageCode(); // StoreService.to.getLanguageCode()
// request.headers['Content-Type'] = 'application/json';
// request.headers['token'] = StoreService.to.userToken!;
String? xToken = '';
final data = await Storage.getString(saveUserLoginData);
if (data != null && data.isNotEmpty) {
xToken = LoginData.fromJson(jsonDecode(data)).accessToken;
}
request.headers['Authorization'] = "Bearer ${xToken ?? ''}";
return request;
}
String getLanguageCode() {
final Locale locale = StoreService.to.getLanguageCode()!.isNotEmpty
? appDept.deptSupportedLocales
.where((Locale element) =>
element.toString() == StoreService.to.getLanguageCode())
.first
: Get.locale!; // Get.deviceLocale;
String languageCode =
ChangeLanguageFormat.convertLocale(locale).toLanguageTag();
AppLog.log(
'languageCode: ${locale.toLanguageTag()} locale: $locale languageCode:$languageCode');
return languageCode;
}