add Analytics

This commit is contained in:
xkeyC 2023-10-30 20:39:31 +08:00
parent 1d017e5ef2
commit cebe74d972
7 changed files with 53 additions and 8 deletions

17
lib/api/analytics.dart Normal file
View File

@ -0,0 +1,17 @@
import 'package:dio/dio.dart';
import 'package:starcitizen_doctor/common/conf.dart';
import 'package:starcitizen_doctor/common/utils/base_utils.dart';
class AnalyticsApi {
static final Dio _dio = Dio();
static touch(String key) async {
dPrint("AnalyticsApi.touch === $key start");
try {
await _dio.post("${AppConf.xkeycApiUrl}/analytics/$key");
dPrint("AnalyticsApi.touch === $key over");
} catch (e) {
dPrint("AnalyticsApi.touch === $key Error:$e");
}
}
}

View File

@ -4,8 +4,10 @@ import 'package:device_info_plus/device_info_plus.dart';
import 'package:flutter_acrylic/flutter_acrylic.dart';
import 'package:hive/hive.dart';
import 'package:path_provider/path_provider.dart';
import 'package:starcitizen_doctor/api/analytics.dart';
import 'package:starcitizen_doctor/api/api.dart';
import 'package:starcitizen_doctor/data/app_version_data.dart';
import 'package:uuid/uuid.dart';
import 'package:window_manager/window_manager.dart';
import '../base/ui.dart';
@ -26,6 +28,8 @@ class AppConf {
static const String webTranslateHomeUrl =
"https://jihulab.com/StarCitizenCN_Community/scweb_chinese_translate/-/raw/main/json/locales";
static const String xkeycApiUrl = "https://sctoolbox.xkeyc.com";
static late final String applicationSupportDir;
static AppVersionData? networkVersionData;
@ -49,7 +53,11 @@ class AppConf {
dPrint("applicationSupportDir == $applicationSupportDir");
try {
Hive.init("$applicationSupportDir/db");
await Hive.openBox("app_conf");
final box = await Hive.openBox("app_conf");
if (box.get("install_id", defaultValue: "") == "") {
await box.put("install_id", const Uuid().v4());
AnalyticsApi.touch("firstLaunch");
}
} catch (e) {
exit(1);
}
@ -75,6 +83,7 @@ class AppConf {
await Window.hideWindowControls();
});
await _checkUpdate();
AnalyticsApi.touch("launch");
}
static String getUpgradePath() {

View File

@ -2,6 +2,7 @@ import 'package:extended_image/extended_image.dart';
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:starcitizen_doctor/api/analytics.dart';
import 'package:starcitizen_doctor/base/ui.dart';
import 'package:url_launcher/url_launcher_string.dart';
@ -106,7 +107,8 @@ class HomeUI extends BaseUI<HomeUIModel> {
webURL: "https://robertsspaceindustries.com",
info: "罗伯茨航天工业公司,万物的起源",
useLocalization: true,
width: width),
width: width,
touchKey: "webLocalization_rsi"),
const SizedBox(height: 12),
makeWebViewButton(model,
icon: Row(
@ -123,7 +125,8 @@ class HomeUI extends BaseUI<HomeUIModel> {
webURL: "https://uexcorp.space",
info: "采矿、精炼、贸易计算器、价格、船信息",
useLocalization: true,
width: width),
width: width,
touchKey: "webLocalization_uex"),
const SizedBox(height: 12),
makeWebViewButton(model,
icon: Row(
@ -140,7 +143,8 @@ class HomeUI extends BaseUI<HomeUIModel> {
webURL: "https://www.erkul.games/live/calculator",
info: "在线改船,查询伤害数值和配件购买地点",
useLocalization: true,
width: width),
width: width,
touchKey: "webLocalization_dps"),
const SizedBox(height: 12),
const Text("外部浏览器拓展:"),
const SizedBox(height: 8),
@ -589,7 +593,8 @@ class HomeUI extends BaseUI<HomeUIModel> {
required String webURL,
required bool useLocalization,
required double width,
String? info}) {
String? info,
String? touchKey}) {
return Container(
width: width,
decoration: BoxDecoration(
@ -622,8 +627,12 @@ class HomeUI extends BaseUI<HomeUIModel> {
)
],
),
onPressed: () =>
model.goWebView(webTitle, webURL, useLocalization: true)),
onPressed: () {
if (touchKey != null) {
AnalyticsApi.touch(touchKey);
}
model.goWebView(webTitle, webURL, useLocalization: true);
}),
),
);
}

View File

@ -5,6 +5,7 @@ import 'dart:io';
import 'package:desktop_webview_window/desktop_webview_window.dart';
import 'package:dio/dio.dart';
import 'package:hive/hive.dart';
import 'package:starcitizen_doctor/api/analytics.dart';
import 'package:starcitizen_doctor/api/api.dart';
import 'package:starcitizen_doctor/base/ui_model.dart';
import 'package:starcitizen_doctor/common/conf.dart';
@ -131,6 +132,7 @@ class HomeUIModel extends BaseUIModel {
lastScreenInfo = "扫描完毕,共找到 ${scInstallPaths.length} 个有效安装目录";
} catch (e) {
lastScreenInfo = "解析 log 文件失败!";
AnalyticsApi.touch("error_launchLogs");
showToast(context!,
"解析 log 文件失败! \n请关闭游戏退出RSI启动器后重试若仍有问题请使用工具箱中的 RSI Launcher log 修复。");
}
@ -369,6 +371,7 @@ class HomeUIModel extends BaseUIModel {
showToast(context!, "该功能需要一个有效的安装位置");
return;
}
AnalyticsApi.touch("performance_launch");
BaseUIContainer(
uiCreate: () => PerformanceUI(),
modelCreate: () => PerformanceUIModel(scInstalledPath))
@ -414,7 +417,7 @@ class HomeUIModel extends BaseUIModel {
if (skip != tipVersion) {
final ok = await showConfirmDialogs(
context!,
"星际公民网汉化",
"星际公民汉化",
const Text(
"本插功能件仅供大致浏览使用,不对任何有关本功能产生的问题负责!在涉及账号操作前请注意确认网站的原本内容!"
"\n\n\n使用此功能登录账号时请确保您的 星际公民盒子 是从可信任的来源下载。",
@ -482,6 +485,7 @@ class HomeUIModel extends BaseUIModel {
await Process.run("powershell.exe", ["ps \"StarCitizen\" | kill"]);
return;
}
AnalyticsApi.touch("gameLaunch");
showDialog(
context: context!,
dismissWithEsc: false,

View File

@ -4,6 +4,7 @@ import 'dart:io';
import 'package:archive/archive_io.dart';
import 'package:dio/dio.dart';
import 'package:flutter/foundation.dart';
import 'package:starcitizen_doctor/api/analytics.dart';
import 'package:starcitizen_doctor/api/api.dart';
import 'package:starcitizen_doctor/base/ui_model.dart';
import 'package:starcitizen_doctor/common/conf.dart';
@ -128,6 +129,7 @@ class LocalizationUIModel extends BaseUIModel {
VoidCallback? doRemoteInstall(ScLocalizationData value) {
return () async {
AnalyticsApi.touch("install_localization");
final downloadUrl =
"${AppConf.gitlabLocalizationUrl}/-/archive/${value.versionName}/LocalizationData-${value.versionName}.tar.bz2";
final savePath =

View File

@ -3,6 +3,7 @@ import 'dart:io';
import 'package:flutter/services.dart';
import 'package:hive/hive.dart';
import 'package:starcitizen_doctor/api/analytics.dart';
import 'package:starcitizen_doctor/base/ui_model.dart';
import 'package:starcitizen_doctor/common/helper/log_helper.dart';
import 'package:starcitizen_doctor/data/game_performance_data.dart';
@ -94,6 +95,7 @@ class PerformanceUIModel extends BaseUIModel {
applyProfile(bool cleanShader) async {
if (performanceMap == null) return;
AnalyticsApi.touch("performance_apply");
workingString = "生成配置文件";
notifyListeners();
String conf = "";

View File

@ -1,5 +1,6 @@
import 'dart:io';
import 'package:starcitizen_doctor/api/analytics.dart';
import 'package:starcitizen_doctor/base/ui_model.dart';
import 'package:starcitizen_doctor/global_ui_model.dart';
import 'package:starcitizen_doctor/ui/about/about_ui_model.dart';
@ -58,6 +59,7 @@ class IndexUIModel extends BaseUIModel {
await showToast(context!, "运行环境出错,请检查系统环境变量 PATH");
await launchUrlString(
"https://answers.microsoft.com/zh-hans/windows/forum/all/%E7%B3%BB%E7%BB%9F%E7%8E%AF%E5%A2%83%E5%8F%98/b88369e6-2620-4a77-b07a-d0af50894a07");
await AnalyticsApi.touch("error_powershell");
exit(0);
}