mirror of
https://mirror.ghproxy.com/https://github.com/StarCitizenToolBox/app.git
synced 2024-12-23 12:23:43 +08:00
feat: Proxy Source
This commit is contained in:
parent
74fe0457f0
commit
308480095b
@ -1,25 +1,25 @@
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
import 'package:flutter/foundation.dart';
|
|
||||||
import 'package:starcitizen_doctor/common/conf/url_conf.dart';
|
import 'package:starcitizen_doctor/common/conf/url_conf.dart';
|
||||||
import 'package:starcitizen_doctor/common/io/rs_http.dart';
|
import 'package:starcitizen_doctor/common/io/rs_http.dart';
|
||||||
import 'package:starcitizen_doctor/common/utils/log.dart';
|
import 'package:starcitizen_doctor/common/utils/log.dart';
|
||||||
|
|
||||||
class AnalyticsApi {
|
class AnalyticsApi {
|
||||||
static touch(String key) async {
|
static touch(String key) async {
|
||||||
if (kDebugMode || kProfileMode) {
|
|
||||||
dPrint("AnalyticsApi.touch === $key skip");
|
|
||||||
return;
|
return;
|
||||||
}
|
// if (kDebugMode || kProfileMode) {
|
||||||
dPrint("AnalyticsApi.touch === $key start");
|
// dPrint("AnalyticsApi.touch === $key skip");
|
||||||
try {
|
// return;
|
||||||
final r = await RSHttp.postData(
|
// }
|
||||||
"${URLConf.analyticsApiHome}/analytics/$key",
|
// dPrint("AnalyticsApi.touch === $key start");
|
||||||
data: null);
|
// try {
|
||||||
dPrint("AnalyticsApi.touch === $key over statusCode == ${r.statusCode}");
|
// final r = await RSHttp.postData(
|
||||||
} catch (e) {
|
// "${URLConf.analyticsApiHome}/analytics/$key",
|
||||||
dPrint("AnalyticsApi.touch === $key Error:$e");
|
// data: null);
|
||||||
}
|
// dPrint("AnalyticsApi.touch === $key over statusCode == ${r.statusCode}");
|
||||||
|
// } catch (e) {
|
||||||
|
// dPrint("AnalyticsApi.touch === $key Error:$e");
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
static Future<Map<String, dynamic>> getAnalyticsData() async {
|
static Future<Map<String, dynamic>> getAnalyticsData() async {
|
||||||
|
@ -4,9 +4,10 @@ import 'package:starcitizen_doctor/common/utils/log.dart';
|
|||||||
|
|
||||||
class URLConf {
|
class URLConf {
|
||||||
/// HOME API
|
/// HOME API
|
||||||
static String gitApiHome = "https://git.scbox.xkeyc.cn";
|
static String gitApiHome = "https://web-proxy.scbox.xkeyc.cn/git";
|
||||||
static String rssApiHome = "https://rss.scbox.xkeyc.cn";
|
static String rssApiHome = "https://web-proxy.scbox.xkeyc.cn/rss";
|
||||||
static const String analyticsApiHome = "https://scbox.org";
|
static const String analyticsApiHome =
|
||||||
|
"https://web-proxy.scbox.xkeyc.cn/analytics/analytics";
|
||||||
|
|
||||||
static bool isUrlCheckPass = false;
|
static bool isUrlCheckPass = false;
|
||||||
|
|
||||||
@ -69,5 +70,4 @@ class URLConf {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -673,8 +673,8 @@ class MessageLookup extends MessageLookupByLibrary {
|
|||||||
MessageLookupByLibrary.simpleMessage("Launching game for you ..."),
|
MessageLookupByLibrary.simpleMessage("Launching game for you ..."),
|
||||||
"home_login_title_welcome_back":
|
"home_login_title_welcome_back":
|
||||||
MessageLookupByLibrary.simpleMessage("Welcome back!"),
|
MessageLookupByLibrary.simpleMessage("Welcome back!"),
|
||||||
"home_not_installed_or_failed": MessageLookupByLibrary.simpleMessage(
|
"home_not_installed_or_failed":
|
||||||
"Unpacking or installation failed"),
|
MessageLookupByLibrary.simpleMessage("Your computer"),
|
||||||
"home_title_app_name":
|
"home_title_app_name":
|
||||||
MessageLookupByLibrary.simpleMessage("SCToolBox"),
|
MessageLookupByLibrary.simpleMessage("SCToolBox"),
|
||||||
"home_title_logging_in":
|
"home_title_logging_in":
|
||||||
|
@ -607,7 +607,7 @@ class MessageLookup extends MessageLookupByLibrary {
|
|||||||
"home_login_title_welcome_back":
|
"home_login_title_welcome_back":
|
||||||
MessageLookupByLibrary.simpleMessage("欢迎回来!"),
|
MessageLookupByLibrary.simpleMessage("欢迎回来!"),
|
||||||
"home_not_installed_or_failed":
|
"home_not_installed_or_failed":
|
||||||
MessageLookupByLibrary.simpleMessage("未安装 或 安装失败"),
|
MessageLookupByLibrary.simpleMessage("您的电脑"),
|
||||||
"home_title_app_name": MessageLookupByLibrary.simpleMessage("SC汉化盒子"),
|
"home_title_app_name": MessageLookupByLibrary.simpleMessage("SC汉化盒子"),
|
||||||
"home_title_logging_in": MessageLookupByLibrary.simpleMessage("登录中..."),
|
"home_title_logging_in": MessageLookupByLibrary.simpleMessage("登录中..."),
|
||||||
"lobby_invitation_to_participate":
|
"lobby_invitation_to_participate":
|
||||||
|
@ -608,7 +608,7 @@ class MessageLookup extends MessageLookupByLibrary {
|
|||||||
"home_login_title_welcome_back":
|
"home_login_title_welcome_back":
|
||||||
MessageLookupByLibrary.simpleMessage("歡迎回來!"),
|
MessageLookupByLibrary.simpleMessage("歡迎回來!"),
|
||||||
"home_not_installed_or_failed":
|
"home_not_installed_or_failed":
|
||||||
MessageLookupByLibrary.simpleMessage("未安裝 或 安裝失敗"),
|
MessageLookupByLibrary.simpleMessage("您的電腦"),
|
||||||
"home_title_app_name": MessageLookupByLibrary.simpleMessage("SC工具箱"),
|
"home_title_app_name": MessageLookupByLibrary.simpleMessage("SC工具箱"),
|
||||||
"home_title_logging_in":
|
"home_title_logging_in":
|
||||||
MessageLookupByLibrary.simpleMessage("正在登入..."),
|
MessageLookupByLibrary.simpleMessage("正在登入..."),
|
||||||
|
@ -1230,10 +1230,10 @@ class S {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// `Unpacking or installation failed`
|
/// `Your computer`
|
||||||
String get home_not_installed_or_failed {
|
String get home_not_installed_or_failed {
|
||||||
return Intl.message(
|
return Intl.message(
|
||||||
'Unpacking or installation failed',
|
'Your computer',
|
||||||
name: 'home_not_installed_or_failed',
|
name: 'home_not_installed_or_failed',
|
||||||
desc: '',
|
desc: '',
|
||||||
args: [],
|
args: [],
|
||||||
|
@ -237,7 +237,7 @@
|
|||||||
"@doctor_action_view_details": {},
|
"@doctor_action_view_details": {},
|
||||||
"home_install_location": "Installation location:",
|
"home_install_location": "Installation location:",
|
||||||
"@home_install_location": {},
|
"@home_install_location": {},
|
||||||
"home_not_installed_or_failed": "Unpacking or installation failed",
|
"home_not_installed_or_failed": "Your computer",
|
||||||
"@home_not_installed_or_failed": {},
|
"@home_not_installed_or_failed": {},
|
||||||
"home_action_star_citizen_website_localization": "SC Official Localization",
|
"home_action_star_citizen_website_localization": "SC Official Localization",
|
||||||
"@home_action_star_citizen_website_localization": {},
|
"@home_action_star_citizen_website_localization": {},
|
||||||
|
@ -236,7 +236,7 @@
|
|||||||
"@doctor_action_view_details": {},
|
"@doctor_action_view_details": {},
|
||||||
"home_install_location": "安装位置:",
|
"home_install_location": "安装位置:",
|
||||||
"@home_install_location": {},
|
"@home_install_location": {},
|
||||||
"home_not_installed_or_failed": "未安装 或 安装失败",
|
"home_not_installed_or_failed": "您的电脑",
|
||||||
"@home_not_installed_or_failed": {},
|
"@home_not_installed_or_failed": {},
|
||||||
"home_action_star_citizen_website_localization": "星际公民官网汉化",
|
"home_action_star_citizen_website_localization": "星际公民官网汉化",
|
||||||
"@home_action_star_citizen_website_localization": {},
|
"@home_action_star_citizen_website_localization": {},
|
||||||
|
@ -236,7 +236,7 @@
|
|||||||
"@doctor_action_view_details": {},
|
"@doctor_action_view_details": {},
|
||||||
"home_install_location": "安裝位置:",
|
"home_install_location": "安裝位置:",
|
||||||
"@home_install_location": {},
|
"@home_install_location": {},
|
||||||
"home_not_installed_or_failed": "未安裝 或 安裝失敗",
|
"home_not_installed_or_failed": "您的電腦",
|
||||||
"@home_not_installed_or_failed": {},
|
"@home_not_installed_or_failed": {},
|
||||||
"home_action_star_citizen_website_localization": "星際公民官網",
|
"home_action_star_citizen_website_localization": "星際公民官網",
|
||||||
"@home_action_star_citizen_website_localization": {},
|
"@home_action_star_citizen_website_localization": {},
|
||||||
|
@ -115,6 +115,75 @@ class HomeUI extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
const SizedBox(height: 24),
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.only(left: 24, right: 24),
|
||||||
|
child: Row(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
children: [
|
||||||
|
Text(S.current.home_install_location),
|
||||||
|
const SizedBox(width: 6),
|
||||||
|
Expanded(
|
||||||
|
child: ComboBox<String>(
|
||||||
|
value: homeState.scInstalledPath,
|
||||||
|
isExpanded: true,
|
||||||
|
items: [
|
||||||
|
ComboBoxItem(
|
||||||
|
value: "not_install",
|
||||||
|
child: Text(S.current.home_not_installed_or_failed),
|
||||||
|
),
|
||||||
|
for (final path in homeState.scInstallPaths)
|
||||||
|
ComboBoxItem(
|
||||||
|
value: path,
|
||||||
|
child: Row(
|
||||||
|
children: [Text(path)],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
onChanged: model.onChangeInstallPath,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(width: 12),
|
||||||
|
Button(
|
||||||
|
onPressed: homeState.webLocalizationVersionsData == null
|
||||||
|
? null
|
||||||
|
: () => model.launchRSI(context),
|
||||||
|
style: homeState.isCurGameRunning
|
||||||
|
? null
|
||||||
|
: ButtonStyle(
|
||||||
|
backgroundColor:
|
||||||
|
WidgetStateProperty.resolveWith(_getRunButtonColor),
|
||||||
|
),
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(6),
|
||||||
|
child: Icon(
|
||||||
|
homeState.isCurGameRunning
|
||||||
|
? FluentIcons.stop_solid
|
||||||
|
: FluentIcons.play_solid,
|
||||||
|
color: homeState.isCurGameRunning
|
||||||
|
? Colors.red.withOpacity(.8)
|
||||||
|
: Colors.white,
|
||||||
|
),
|
||||||
|
)),
|
||||||
|
const SizedBox(width: 12),
|
||||||
|
Button(
|
||||||
|
onPressed: () {},
|
||||||
|
child: const Padding(
|
||||||
|
padding: EdgeInsets.all(6),
|
||||||
|
child: Icon(FluentIcons.folder_open),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(width: 12),
|
||||||
|
Button(
|
||||||
|
onPressed: model.reScanPath,
|
||||||
|
child: const Padding(
|
||||||
|
padding: EdgeInsets.all(6),
|
||||||
|
child: Icon(FluentIcons.refresh),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
const SizedBox(height: 8),
|
const SizedBox(height: 8),
|
||||||
Text(homeState.lastScreenInfo, maxLines: 1),
|
Text(homeState.lastScreenInfo, maxLines: 1),
|
||||||
makeIndexActionLists(context, model, homeState, ref),
|
makeIndexActionLists(context, model, homeState, ref),
|
||||||
|
@ -76,7 +76,12 @@ class HomeUIModel extends _$HomeUIModel {
|
|||||||
for (var node in h.body!.nodes) {
|
for (var node in h.body!.nodes) {
|
||||||
if (node is html_dom.Element) {
|
if (node is html_dom.Element) {
|
||||||
if (node.localName == "img") {
|
if (node.localName == "img") {
|
||||||
return node.attributes["src"]?.trim() ?? "";
|
var image = node.attributes["src"]?.trim() ?? "";
|
||||||
|
var updatedImage = image.replaceAllMapped(
|
||||||
|
RegExp(r'http(s)?://i(\d+)\.hdslb\.com/bfs/'),
|
||||||
|
(match) => 'https://web-proxy.scbox.xkeyc.cn/bfs${match[2]}/bfs/'
|
||||||
|
);
|
||||||
|
return updatedImage;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,21 +22,21 @@ class IndexUI extends HookConsumerWidget {
|
|||||||
final globalState = ref.watch(appGlobalModelProvider);
|
final globalState = ref.watch(appGlobalModelProvider);
|
||||||
|
|
||||||
final curIndex = useState(0);
|
final curIndex = useState(0);
|
||||||
return Container(
|
return Stack(
|
||||||
decoration: BoxDecoration(
|
children: [
|
||||||
image: DecorationImage(
|
ExtendedImage.asset(
|
||||||
image:
|
width: double.infinity,
|
||||||
ExtendedAssetImageProvider(globalState.backgroundImageAssetsPath),
|
height: double.infinity,
|
||||||
|
globalState.backgroundImageAssetsPath,
|
||||||
fit: BoxFit.cover,
|
fit: BoxFit.cover,
|
||||||
),
|
),
|
||||||
),
|
Center(
|
||||||
child: Center(
|
|
||||||
child: ClipRRect(
|
child: ClipRRect(
|
||||||
borderRadius: BorderRadius.circular(12),
|
borderRadius: BorderRadius.circular(12),
|
||||||
child: BlurOvalWidget(
|
child: BlurOvalWidget(
|
||||||
child: Container(
|
child: Container(
|
||||||
constraints:
|
constraints:
|
||||||
const BoxConstraints(maxWidth: 1440, maxHeight: 1000),
|
const BoxConstraints(maxWidth: 1440, maxHeight: 920),
|
||||||
child: NavigationView(
|
child: NavigationView(
|
||||||
appBar: NavigationAppBar(
|
appBar: NavigationAppBar(
|
||||||
automaticallyImplyLeading: false,
|
automaticallyImplyLeading: false,
|
||||||
@ -76,7 +76,8 @@ class IndexUI extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
)
|
||||||
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user