h5补token传参
This commit is contained in:
parent
4cf895b11e
commit
a3f8db991d
@ -14,6 +14,7 @@ import 'package:yumi/modules/room_game/data/room_game_repository.dart';
|
||||
import 'package:yumi/modules/room_game/utils/room_game_viewport.dart';
|
||||
import 'package:yumi/modules/room_game/views/baishun_loading_view.dart';
|
||||
import 'package:yumi/modules/wallet/wallet_route.dart';
|
||||
import 'package:yumi/shared/tools/sc_h5_url_utils.dart';
|
||||
import 'package:yumi/ui_kit/components/sc_tts.dart';
|
||||
|
||||
class BaishunGamePage extends StatefulWidget {
|
||||
@ -216,7 +217,8 @@ class _BaishunGamePageState extends State<BaishunGamePage> {
|
||||
return;
|
||||
}
|
||||
|
||||
final uri = Uri.tryParse(entryUrl);
|
||||
final h5Url = SCH5UrlUtils.appendToken(entryUrl);
|
||||
final uri = Uri.tryParse(h5Url);
|
||||
if (uri == null) {
|
||||
throw Exception('Invalid game entry url: $entryUrl');
|
||||
}
|
||||
|
||||
@ -13,6 +13,7 @@ import 'package:yumi/modules/room_game/data/room_game_repository.dart';
|
||||
import 'package:yumi/modules/room_game/utils/room_game_viewport.dart';
|
||||
import 'package:yumi/modules/room_game/views/baishun_loading_view.dart';
|
||||
import 'package:yumi/modules/wallet/wallet_route.dart';
|
||||
import 'package:yumi/shared/tools/sc_h5_url_utils.dart';
|
||||
import 'package:yumi/ui_kit/components/sc_tts.dart';
|
||||
|
||||
class LeaderGamePage extends StatefulWidget {
|
||||
@ -189,7 +190,8 @@ class _LeaderGamePageState extends State<LeaderGamePage> {
|
||||
await _controller.loadHtmlString(_buildMockHtml());
|
||||
return;
|
||||
}
|
||||
final uri = Uri.tryParse(entryUrl);
|
||||
final h5Url = SCH5UrlUtils.appendToken(entryUrl);
|
||||
final uri = Uri.tryParse(h5Url);
|
||||
if (uri == null) {
|
||||
throw Exception('Invalid game entry url: $entryUrl');
|
||||
}
|
||||
|
||||
@ -12,6 +12,7 @@ import 'package:yumi/app/constants/sc_global_config.dart';
|
||||
import 'package:yumi/app/constants/sc_screen.dart';
|
||||
import 'package:yumi/app/routes/sc_fluro_navigator.dart';
|
||||
import 'package:yumi/shared/tools/sc_deviceId_utils.dart';
|
||||
import 'package:yumi/shared/tools/sc_h5_url_utils.dart';
|
||||
import 'package:yumi/shared/tools/sc_room_utils.dart';
|
||||
import 'package:yumi/shared/tools/sc_url_launcher_utils.dart';
|
||||
import 'package:yumi/main.dart';
|
||||
@ -46,12 +47,7 @@ class _WebViewPageState extends State<WebViewPage> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
if (widget.url.split("?").length > 1) {
|
||||
urlLink = "${widget.url}&";
|
||||
} else {
|
||||
urlLink = "${widget.url}?";
|
||||
}
|
||||
urlLink = "${urlLink}lang=${SCGlobalConfig.lang}";
|
||||
urlLink = SCH5UrlUtils.appendAppParams(widget.url);
|
||||
// 初始化 WebViewController
|
||||
_controller =
|
||||
WebViewController()
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:yumi/shared/tools/sc_room_utils.dart';
|
||||
import 'package:yumi/shared/tools/sc_string_utils.dart';
|
||||
import 'package:yumi/shared/tools/sc_h5_url_utils.dart';
|
||||
import 'package:yumi/shared/tools/sc_url_launcher_utils.dart';
|
||||
import 'package:yumi/shared/business_logic/models/res/sc_index_banner_res.dart';
|
||||
import 'package:yumi/modules/index/main_route.dart';
|
||||
import 'package:yumi/app/routes/sc_fluro_navigator.dart';
|
||||
import 'package:yumi/shared/data_sources/sources/local/user_manager.dart';
|
||||
|
||||
import '../../shared/data_sources/models/enum/sc_banner_open_type.dart';
|
||||
|
||||
@ -47,18 +47,6 @@ class SCBannerUtils {
|
||||
}
|
||||
|
||||
static String _appendToken(String url) {
|
||||
final token = AccountStorage().getToken();
|
||||
if (token.isEmpty) {
|
||||
return url;
|
||||
}
|
||||
|
||||
final uri = Uri.tryParse(url);
|
||||
if (uri == null) {
|
||||
return url;
|
||||
}
|
||||
|
||||
final queryParameters = Map<String, String>.from(uri.queryParameters);
|
||||
queryParameters['token'] = token;
|
||||
return uri.replace(queryParameters: queryParameters).toString();
|
||||
return SCH5UrlUtils.appendToken(url);
|
||||
}
|
||||
}
|
||||
|
||||
60
lib/shared/tools/sc_h5_url_utils.dart
Normal file
60
lib/shared/tools/sc_h5_url_utils.dart
Normal file
@ -0,0 +1,60 @@
|
||||
import 'package:yumi/app/constants/sc_global_config.dart';
|
||||
import 'package:yumi/shared/data_sources/sources/local/user_manager.dart';
|
||||
|
||||
class SCH5UrlUtils {
|
||||
static String appendAppParams(String url) {
|
||||
return _appendQueryParams(url, appendLang: true, appendToken: true);
|
||||
}
|
||||
|
||||
static String appendToken(String url) {
|
||||
return _appendQueryParams(url, appendLang: false, appendToken: true);
|
||||
}
|
||||
|
||||
static String _appendQueryParams(
|
||||
String url, {
|
||||
required bool appendLang,
|
||||
required bool appendToken,
|
||||
}) {
|
||||
final trimmedUrl = url.trim();
|
||||
if (trimmedUrl.isEmpty) {
|
||||
return url;
|
||||
}
|
||||
|
||||
final uri = Uri.tryParse(trimmedUrl);
|
||||
if (uri == null) {
|
||||
return url;
|
||||
}
|
||||
|
||||
final queryParameters = <String, dynamic>{};
|
||||
uri.queryParametersAll.forEach((key, values) {
|
||||
queryParameters[key] = List<String>.from(values);
|
||||
});
|
||||
|
||||
var hasChanges = false;
|
||||
if (appendLang && !_hasQueryKey(queryParameters, 'lang')) {
|
||||
queryParameters['lang'] = SCGlobalConfig.lang;
|
||||
hasChanges = true;
|
||||
}
|
||||
|
||||
final token = AccountStorage().getToken();
|
||||
if (appendToken &&
|
||||
token.isNotEmpty &&
|
||||
!_hasQueryKey(queryParameters, 'token')) {
|
||||
queryParameters['token'] = token;
|
||||
hasChanges = true;
|
||||
}
|
||||
|
||||
if (!hasChanges) {
|
||||
return url;
|
||||
}
|
||||
|
||||
return uri.replace(queryParameters: queryParameters).toString();
|
||||
}
|
||||
|
||||
static bool _hasQueryKey(Map<String, dynamic> queryParameters, String key) {
|
||||
final lowerKey = key.toLowerCase();
|
||||
return queryParameters.keys.any(
|
||||
(queryKey) => queryKey.toLowerCase() == lowerKey,
|
||||
);
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user