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/utils/room_game_viewport.dart';
|
||||||
import 'package:yumi/modules/room_game/views/baishun_loading_view.dart';
|
import 'package:yumi/modules/room_game/views/baishun_loading_view.dart';
|
||||||
import 'package:yumi/modules/wallet/wallet_route.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';
|
import 'package:yumi/ui_kit/components/sc_tts.dart';
|
||||||
|
|
||||||
class BaishunGamePage extends StatefulWidget {
|
class BaishunGamePage extends StatefulWidget {
|
||||||
@ -216,7 +217,8 @@ class _BaishunGamePageState extends State<BaishunGamePage> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final uri = Uri.tryParse(entryUrl);
|
final h5Url = SCH5UrlUtils.appendToken(entryUrl);
|
||||||
|
final uri = Uri.tryParse(h5Url);
|
||||||
if (uri == null) {
|
if (uri == null) {
|
||||||
throw Exception('Invalid game entry url: $entryUrl');
|
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/utils/room_game_viewport.dart';
|
||||||
import 'package:yumi/modules/room_game/views/baishun_loading_view.dart';
|
import 'package:yumi/modules/room_game/views/baishun_loading_view.dart';
|
||||||
import 'package:yumi/modules/wallet/wallet_route.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';
|
import 'package:yumi/ui_kit/components/sc_tts.dart';
|
||||||
|
|
||||||
class LeaderGamePage extends StatefulWidget {
|
class LeaderGamePage extends StatefulWidget {
|
||||||
@ -189,7 +190,8 @@ class _LeaderGamePageState extends State<LeaderGamePage> {
|
|||||||
await _controller.loadHtmlString(_buildMockHtml());
|
await _controller.loadHtmlString(_buildMockHtml());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final uri = Uri.tryParse(entryUrl);
|
final h5Url = SCH5UrlUtils.appendToken(entryUrl);
|
||||||
|
final uri = Uri.tryParse(h5Url);
|
||||||
if (uri == null) {
|
if (uri == null) {
|
||||||
throw Exception('Invalid game entry url: $entryUrl');
|
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/constants/sc_screen.dart';
|
||||||
import 'package:yumi/app/routes/sc_fluro_navigator.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_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_room_utils.dart';
|
||||||
import 'package:yumi/shared/tools/sc_url_launcher_utils.dart';
|
import 'package:yumi/shared/tools/sc_url_launcher_utils.dart';
|
||||||
import 'package:yumi/main.dart';
|
import 'package:yumi/main.dart';
|
||||||
@ -46,12 +47,7 @@ class _WebViewPageState extends State<WebViewPage> {
|
|||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
if (widget.url.split("?").length > 1) {
|
urlLink = SCH5UrlUtils.appendAppParams(widget.url);
|
||||||
urlLink = "${widget.url}&";
|
|
||||||
} else {
|
|
||||||
urlLink = "${widget.url}?";
|
|
||||||
}
|
|
||||||
urlLink = "${urlLink}lang=${SCGlobalConfig.lang}";
|
|
||||||
// 初始化 WebViewController
|
// 初始化 WebViewController
|
||||||
_controller =
|
_controller =
|
||||||
WebViewController()
|
WebViewController()
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:yumi/shared/tools/sc_room_utils.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_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/tools/sc_url_launcher_utils.dart';
|
||||||
import 'package:yumi/shared/business_logic/models/res/sc_index_banner_res.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/modules/index/main_route.dart';
|
||||||
import 'package:yumi/app/routes/sc_fluro_navigator.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';
|
import '../../shared/data_sources/models/enum/sc_banner_open_type.dart';
|
||||||
|
|
||||||
@ -47,18 +47,6 @@ class SCBannerUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static String _appendToken(String url) {
|
static String _appendToken(String url) {
|
||||||
final token = AccountStorage().getToken();
|
return SCH5UrlUtils.appendToken(url);
|
||||||
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();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
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