feat: AnalyticsApi update

This commit is contained in:
xkeyC 2024-05-07 21:08:16 +08:00
parent 155c8a0564
commit 348704c669
9 changed files with 64 additions and 10 deletions

View File

@ -7,7 +7,10 @@ import 'package:starcitizen_doctor/common/utils/log.dart';
class AnalyticsApi {
static touch(String key) async {
if (kDebugMode || kProfileMode) return;
if (kDebugMode || kProfileMode) {
dPrint("AnalyticsApi.touch === $key skip");
return;
}
dPrint("AnalyticsApi.touch === $key start");
try {
final r = await RSHttp.postData(

View File

@ -6,6 +6,7 @@ import 'package:flutter/foundation.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:path_provider/path_provider.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:starcitizen_doctor/api/analytics.dart';
import 'package:starcitizen_doctor/common/conf/binary_conf.dart';
import 'package:starcitizen_doctor/common/helper/log_helper.dart';
import 'package:starcitizen_doctor/common/rust/api/rs_process.dart';
@ -51,6 +52,8 @@ class Unp4kCModel extends _$Unp4kCModel {
String getGamePath() => _toolsState.scInstalledPath;
bool _hasUnp4kRunTimeError = false;
void _init() async {
final execDir = "${appGlobalState.applicationBinaryModuleDir}\\unp4kc";
await BinaryModuleConf.extractModule(
@ -79,6 +82,15 @@ class Unp4kCModel extends _$Unp4kCModel {
state = state.copyWith(
errorMessage: "${state.errorMessage}\n${event.data}");
}
if (!_hasUnp4kRunTimeError) {
if (state.errorMessage.contains(
"You must install .NET to run this application") ||
state.errorMessage.contains(
"You must install or update .NET to run this application")) {
_hasUnp4kRunTimeError = true;
AnalyticsApi.touch("unp4k_no_runtime");
}
}
break;
case RsProcessStreamDataType.exit:
dPrint("[unp4kc] exit: ${event.data}");

View File

@ -3,6 +3,7 @@ import 'package:flutter/scheduler.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter_tilt/flutter_tilt.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:starcitizen_doctor/api/analytics.dart';
import 'package:starcitizen_doctor/common/helper/log_helper.dart';
import 'package:starcitizen_doctor/common/helper/system_helper.dart';
import 'package:starcitizen_doctor/common/utils/log.dart';
@ -22,6 +23,7 @@ class HomeGameDoctorUI extends HookConsumerWidget {
final model = ref.read(homeGameDoctorUIModelProvider.notifier);
useEffect(() {
AnalyticsApi.touch("auto_scan_issues");
SchedulerBinding.instance.addPostFrameCallback((timeStamp) {
dPrint("HomeGameDoctorUI useEffect doCheck timeStamp === $timeStamp");
model.doCheck(context);

View File

@ -6,6 +6,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:re_editor/re_editor.dart';
import 'package:re_highlight/languages/ini.dart';
import 'package:re_highlight/styles/vs2015.dart';
import 'package:starcitizen_doctor/api/analytics.dart';
import 'package:starcitizen_doctor/data/app_advanced_localization_data.dart';
import 'package:starcitizen_doctor/ui/home/home_ui_model.dart';
import 'package:starcitizen_doctor/ui/home/localization/advanced_localization_ui_model.dart';
@ -34,6 +35,11 @@ class AdvancedLocalizationUI extends HookConsumerWidget {
}
}
useEffect(() {
AnalyticsApi.touch("advanced_localization_launch");
return null;
}, const []);
return makeDefaultPage(
title: S.current.home_localization_advanced_title(
homeUIState.scInstalledPath ?? "-"),

View File

@ -4,6 +4,7 @@ import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:starcitizen_doctor/api/analytics.dart';
import 'package:starcitizen_doctor/common/utils/log.dart';
import 'package:starcitizen_doctor/common/utils/provider.dart';
import 'package:starcitizen_doctor/data/app_advanced_localization_data.dart';
@ -233,8 +234,15 @@ class AdvancedLocalizationUIModel extends _$AdvancedLocalizationUIModel {
final iniData = String.fromCharCodes(data);
return iniData;
} catch (e) {
final errorMessage = e.toString();
if (errorMessage
.contains("You must install .NET to run this application") ||
errorMessage.contains(
"You must install or update .NET to run this application")) {
AnalyticsApi.touch("advanced_localization_no_runtime");
}
state = state.copyWith(
errorMessage: e.toString(),
errorMessage: errorMessage,
);
// rethrow;
}
@ -281,6 +289,7 @@ class AdvancedLocalizationUIModel extends _$AdvancedLocalizationUIModel {
}
Future<bool> doInstall() async {
AnalyticsApi.touch("advanced_localization_apply");
state = state.copyWith(
workingText:
S.current.home_localization_advanced_msg_gen_localization_text);

View File

@ -4,6 +4,7 @@ import 'package:fluent_ui/fluent_ui.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:starcitizen_doctor/api/analytics.dart';
import 'package:starcitizen_doctor/common/helper/system_helper.dart';
import 'package:starcitizen_doctor/common/io/rs_http.dart';
import 'package:starcitizen_doctor/common/utils/async.dart';
@ -14,9 +15,15 @@ class HostsBoosterDialogUI extends HookConsumerWidget {
static final _hostsMap = {
"Recaptcha": ["www.recaptcha.net", "recaptcha.net"],
S.current.tools_hosts_info_rsi_official_website: ["robertsspaceindustries.com"],
S.current.tools_hosts_info_rsi_zendesk: ["cloudimperiumservicesllc.zendesk.com"],
S.current.tools_hosts_info_rsi_customer_service: ["support.robertsspaceindustries.com"],
S.current.tools_hosts_info_rsi_official_website: [
"robertsspaceindustries.com"
],
S.current.tools_hosts_info_rsi_zendesk: [
"cloudimperiumservicesllc.zendesk.com"
],
S.current.tools_hosts_info_rsi_customer_service: [
"support.robertsspaceindustries.com"
],
};
@override
@ -48,6 +55,7 @@ class HostsBoosterDialogUI extends HookConsumerWidget {
}
useEffect(() {
AnalyticsApi.touch("host_dns_boost");
// Hosts
_readHostsState(workingMap, checkedMap);
return null;
@ -164,9 +172,10 @@ class HostsBoosterDialogUI extends HookConsumerWidget {
child: FilledButton(
onPressed: () => doHost(context),
child: Padding(
padding:
const EdgeInsets.only(top: 3, bottom: 3, left: 12, right: 12),
child: Text(S.current.tools_hosts_action_one_click_acceleration),
padding: const EdgeInsets.only(
top: 3, bottom: 3, left: 12, right: 12),
child: Text(
S.current.tools_hosts_action_one_click_acceleration),
),
),
),
@ -287,4 +296,4 @@ class HostsBoosterDialogUI extends HookConsumerWidget {
}
}
}
}
}

View File

@ -8,6 +8,7 @@ import 'package:flutter/foundation.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:starcitizen_doctor/api/analytics.dart';
import 'package:starcitizen_doctor/app.dart';
import 'package:starcitizen_doctor/common/conf/url_conf.dart';
import 'package:starcitizen_doctor/common/helper/system_helper.dart';
@ -81,10 +82,12 @@ class RsiLauncherEnhanceDialogUI extends HookConsumerWidget {
await assarState.value?.data
.writeMainJs(content: utf8.encode(newScript))
.unwrap(context: context);
AnalyticsApi.touch("rsi_launcher_mod_apply");
await readState();
}
useEffect(() {
AnalyticsApi.touch("rsi_launcher_mod_launch");
readState();
return null;
}, const []);

View File

@ -5,6 +5,7 @@ import 'package:fluent_ui/fluent_ui.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:re_editor/re_editor.dart';
import 'package:starcitizen_doctor/api/analytics.dart';
import 'package:starcitizen_doctor/common/helper/system_helper.dart';
import 'package:starcitizen_doctor/data/app_unp4k_p4k_item_data.dart';
import 'package:starcitizen_doctor/provider/unp4kc.dart';
@ -21,6 +22,12 @@ class UnP4kcUI extends HookConsumerWidget {
final model = ref.read(unp4kCModelProvider.notifier);
final files = model.getFiles();
final paths = state.curPath.trim().split("\\");
useEffect(() {
AnalyticsApi.touch("unp4k_launch");
return null;
}, const []);
return makeDefaultPage(context,
title: S.current.tools_unp4k_title(model.getGamePath()),
useBodyContainer: false,
@ -308,7 +315,8 @@ class UnP4kErrorWidget extends StatelessWidget {
const SizedBox(height: 16),
FilledButton(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 3),
padding:
const EdgeInsets.symmetric(horizontal: 12, vertical: 3),
child: Text(
S.current.tools_unp4k_missing_runtime_action_install),
),

View File

@ -7,6 +7,7 @@ import 'package:desktop_webview_window/desktop_webview_window.dart';
import 'package:flutter/services.dart';
import 'package:flutter/widgets.dart';
import 'package:hive/hive.dart';
import 'package:starcitizen_doctor/api/analytics.dart';
import 'package:starcitizen_doctor/common/conf/url_conf.dart';
import 'package:starcitizen_doctor/common/io/rs_http.dart';
import 'package:starcitizen_doctor/common/utils/base_utils.dart';
@ -206,6 +207,7 @@ class WebViewModel {
for (var kv in appVersionData.webMirrors!.entries) {
if (url.startsWith(kv.key)) {
finalUrl = url.replaceFirst(kv.key, kv.value);
AnalyticsApi.touch("webLocalization_with_boost_mirror");
}
}
}