1
0
Fork 0
mirror of https://github.com/betaflight/betaflight-configurator.git synced 2025-07-24 00:35:26 +03:00

Updating analytics to use build server (#3729)

* Updating analytics to use build server

- allows for server side analytics submission to whatever service we plan to use

* Revert to const (artifact left over from some testing)

* Send the changeList object in total
This commit is contained in:
J Blackman 2024-01-05 08:28:28 +11:00 committed by GitHub
parent 072d16c6ba
commit 66d175b030
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 96 additions and 221 deletions

View file

@ -214,20 +214,13 @@ function finishClose(finishedCallback) {
}
const wasConnected = CONFIGURATOR.connectionValid;
tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'Disconnected');
if (connectionTimestamp) {
const connectedTime = Date.now() - connectionTimestamp;
tracking.sendTiming(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'Connected', connectedTime);
}
tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'Disconnected', { time: connectionTimestamp ? Date.now() - connectionTimestamp : undefined});
if (semver.lt(FC.CONFIG.apiVersion, API_VERSION_1_46)) {
// close reset to custom defaults dialog
$('#dialogResetToCustomDefaults')[0].close();
}
tracking.resetFlightControllerData();
serial.disconnect(onClosed);
MSP.disconnect_cleanup();
@ -349,15 +342,10 @@ function onOpen(openInfo) {
return;
}
tracking.setFlightControllerData(tracking.DATA.API_VERSION, FC.CONFIG.apiVersion);
if (semver.gte(FC.CONFIG.apiVersion, CONFIGURATOR.API_VERSION_ACCEPTED)) {
MSP.send_message(MSPCodes.MSP_FC_VARIANT, false, false, function () {
tracking.setFlightControllerData(tracking.DATA.FIRMWARE_TYPE, FC.CONFIG.flightControllerIdentifier);
if (FC.CONFIG.flightControllerIdentifier === 'BTFL') {
MSP.send_message(MSPCodes.MSP_FC_VERSION, false, false, function () {
tracking.setFlightControllerData(tracking.DATA.FIRMWARE_VERSION, FC.CONFIG.flightControllerVersion);
gui_log(i18n.getMessage('fcInfoReceived', [FC.CONFIG.flightControllerIdentifier, FC.CONFIG.flightControllerVersion]));
MSP.send_message(MSPCodes.MSP_BUILD_INFO, false, false, function () {
@ -459,11 +447,6 @@ function processCustomDefaults() {
}
function processBoardInfo() {
tracking.setFlightControllerData(tracking.DATA.BOARD_TYPE, FC.CONFIG.boardIdentifier);
tracking.setFlightControllerData(tracking.DATA.TARGET_NAME, FC.CONFIG.targetName);
tracking.setFlightControllerData(tracking.DATA.BOARD_NAME, FC.CONFIG.boardName);
tracking.setFlightControllerData(tracking.DATA.MANUFACTURER_ID, FC.CONFIG.manufacturerId);
tracking.setFlightControllerData(tracking.DATA.MCU_TYPE, FC.getMcuType());
gui_log(i18n.getMessage('boardInfoReceived', [FC.getHardwareName(), FC.CONFIG.boardVersion]));
@ -472,18 +455,26 @@ function processBoardInfo() {
} else {
processCustomDefaults();
}
tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'Loaded', {
boardIdentifier: FC.CONFIG.boardIdentifier,
targetName: FC.CONFIG.targetName,
boardName: FC.CONFIG.boardName,
hardware: FC.getHardwareName(),
manufacturerId: FC.CONFIG.manufacturerId,
apiVersion: FC.CONFIG.apiVersion,
flightControllerVersion: FC.CONFIG.flightControllerVersion,
flightControllerIdentifier: FC.CONFIG.flightControllerIdentifier,
mcu: FC.getMcuType(),
});
}
function checkReportProblems() {
const PROBLEM_ANALYTICS_EVENT = 'ProblemFound';
const problemItemTemplate = $('#dialogReportProblems-listItemTemplate');
function checkReportProblem(problemName, problemDialogList) {
function checkReportProblem(problemName, problems) {
if (bit_check(FC.CONFIG.configurationProblems, FC.CONFIGURATION_PROBLEM_FLAGS[problemName])) {
problemItemTemplate.clone().html(i18n.getMessage(`reportProblemsDialog${problemName}`)).appendTo(problemDialogList);
tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, PROBLEM_ANALYTICS_EVENT, problemName);
problems.push({name: problemName, description: i18n.getMessage(`reportProblemsDialog${problemName}`)});
return true;
}
@ -495,23 +486,29 @@ function checkReportProblems() {
const problemDialogList = $('#dialogReportProblems-list');
problemDialogList.empty();
let problems = [];
if (semver.gt(FC.CONFIG.apiVersion, CONFIGURATOR.API_VERSION_MAX_SUPPORTED)) {
const problemName = 'API_VERSION_MAX_SUPPORTED';
problemItemTemplate.clone().html(i18n.getMessage(`reportProblemsDialog${problemName}`,
[CONFIGURATOR.latestVersion, CONFIGURATOR.latestVersionReleaseUrl, CONFIGURATOR.getDisplayVersion(), FC.CONFIG.flightControllerVersion])).appendTo(problemDialogList);
problems.push({ name: problemName, description: i18n.getMessage(`reportProblemsDialog${problemName}`,
[CONFIGURATOR.latestVersion, CONFIGURATOR.latestVersionReleaseUrl, CONFIGURATOR.getDisplayVersion(), FC.CONFIG.flightControllerVersion])});
needsProblemReportingDialog = true;
tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, PROBLEM_ANALYTICS_EVENT,
`${problemName};${CONFIGURATOR.API_VERSION_MAX_SUPPORTED};${FC.CONFIG.apiVersion}`);
}
needsProblemReportingDialog = checkReportProblem('MOTOR_PROTOCOL_DISABLED', problemDialogList) || needsProblemReportingDialog;
needsProblemReportingDialog = checkReportProblem('MOTOR_PROTOCOL_DISABLED', problems) || needsProblemReportingDialog;
if (have_sensor(FC.CONFIG.activeSensors, 'acc')) {
needsProblemReportingDialog = checkReportProblem('ACC_NEEDS_CALIBRATION', problemDialogList) || needsProblemReportingDialog;
needsProblemReportingDialog = checkReportProblem('ACC_NEEDS_CALIBRATION', problems) || needsProblemReportingDialog;
}
if (needsProblemReportingDialog) {
problems.map((problem) => {
problemItemTemplate.clone().html(problem.description).appendTo(problemDialogList);
});
tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, PROBLEM_ANALYTICS_EVENT, { problems: problems.map((problem) => problem.name) });
const problemDialog = $('#dialogReportProblems')[0];
$('#dialogReportProblems-closebtn').click(function() {
problemDialog.close();
@ -547,9 +544,6 @@ async function processBuildConfiguration() {
async function processUid() {
await MSP.promise(MSPCodes.MSP_UID);
tracking.setFlightControllerData(tracking.DATA.MCU_ID, CryptoES.SHA1(FC.CONFIG.deviceIdentifier));
tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'Connected');
connectionTimestamp = Date.now();
gui_log(i18n.getMessage('uniqueDeviceIdReceived', FC.CONFIG.deviceIdentifier));
@ -559,6 +553,10 @@ async function processUid() {
} else {
processCraftName();
}
tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'Connected', {
deviceIdentifier: CryptoES.SHA1(FC.CONFIG.deviceIdentifier),
});
}
async function processCraftName() {