Removed app insights + custom metrics

This commit is contained in:
Elio Struyf
2023-03-13 12:45:05 +01:00
parent 56deb432fd
commit 22dbf4681f
5 changed files with 50 additions and 40 deletions
-13
View File
@@ -40,7 +40,6 @@
"@typescript-eslint/eslint-plugin": "^5.50.0",
"@typescript-eslint/parser": "^5.50.0",
"@vscode/codicons": "0.0.20",
"@vscode/extension-telemetry": "^0.4.7",
"@vscode/webview-ui-toolkit": "^0.9.1",
"@webpack-cli/serve": "^1.6.0",
"ajv": "^8.8.2",
@@ -1517,14 +1516,6 @@
"dev": true,
"license": "CC-BY-4.0"
},
"node_modules/@vscode/extension-telemetry": {
"version": "0.4.7",
"dev": true,
"license": "MIT",
"engines": {
"vscode": "^1.60.0"
}
},
"node_modules/@vscode/vsce": {
"version": "2.17.0",
"resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.17.0.tgz",
@@ -13940,10 +13931,6 @@
"version": "0.0.20",
"dev": true
},
"@vscode/extension-telemetry": {
"version": "0.4.7",
"dev": true
},
"@vscode/vsce": {
"version": "2.17.0",
"resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.17.0.tgz",
-1
View File
@@ -2314,7 +2314,6 @@
"@typescript-eslint/eslint-plugin": "^5.50.0",
"@typescript-eslint/parser": "^5.50.0",
"@vscode/codicons": "0.0.20",
"@vscode/extension-telemetry": "^0.4.7",
"@vscode/webview-ui-toolkit": "^0.9.1",
"@webpack-cli/serve": "^1.6.0",
"ajv": "^8.8.2",
+1 -3
View File
@@ -378,9 +378,7 @@ export async function activate(context: vscode.ExtensionContext) {
console.log(`FRONT MATTER CMS activated!`);
}
export function deactivate() {
Telemetry.dispose();
}
export function deactivate() {}
const handleAutoDateUpdate = (e: vscode.TextDocumentWillSaveEvent) => {
Article.autoUpdate(e);
+48 -22
View File
@@ -1,21 +1,20 @@
import TelemetryReporter, {
TelemetryEventMeasurements,
TelemetryEventProperties
} from '@vscode/extension-telemetry';
import { Extension, Settings } from '.';
import { EXTENSION_BETA_ID, EXTENSION_ID, SETTING_TELEMETRY_DISABLE } from '../constants';
import fetch from 'node-fetch';
const METRICS_URL = 'https://frontmatter.codes/api/metrics';
export class Telemetry {
private static instance: Telemetry;
private static reporter: TelemetryReporter | null = null;
private extTitle: string;
private extVersion: string;
private events: any[] = [];
private timeout: NodeJS.Timeout | undefined;
private constructor() {
const extension = Extension.getInstance();
const extTitle = extension.isBetaVersion() ? EXTENSION_BETA_ID : EXTENSION_ID;
const extVersion = extension.version;
const appKey = `525037e5-70ff-4620-8e52-30e1aef8deee`;
Telemetry.reporter = new TelemetryReporter(extTitle, extVersion, appKey);
this.extTitle = extension.isBetaVersion() ? EXTENSION_BETA_ID : EXTENSION_ID;
this.extVersion = extension.version;
}
public static getInstance(): Telemetry {
@@ -25,24 +24,51 @@ export class Telemetry {
return Telemetry.instance;
}
public static send(
eventName: string,
properties?: TelemetryEventProperties,
measurements?: TelemetryEventMeasurements
) {
if (!Telemetry.reporter) {
Telemetry.getInstance();
}
/**
* Send metrics to our own database
* @param eventName
* @param properties
* @returns
*/
public static send(eventName: string, properties?: any) {
const isDisabled = Settings.get<boolean>(SETTING_TELEMETRY_DISABLE);
if (isDisabled) {
return;
}
Telemetry.reporter?.sendTelemetryEvent(eventName, properties, measurements);
const instance = Telemetry.getInstance();
instance.events.push({
name: eventName,
extName: instance.extTitle,
version: instance.extVersion,
properties
});
instance.debounceMetrics();
}
public static dispose() {
Telemetry.reporter?.dispose();
/**
* Debounce the metrics by 1 second
*/
private async debounceMetrics() {
const instance = Telemetry.getInstance();
// Check if timeout was defined
if (instance.timeout) {
clearTimeout(instance.timeout);
}
// Set a new timeout
instance.timeout = setTimeout(async () => {
await fetch(METRICS_URL, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(this.events)
});
// Reset the events
this.events = [];
}, 1000);
}
}
+1 -1
View File
@@ -13,7 +13,7 @@ export class TelemetryListener extends BaseListener {
switch (msg.command) {
case DashboardMessage.sendTelemetry:
Telemetry.send(msg.payload.event, msg.payload.properties, msg.payload.metrics);
Telemetry.send(msg.payload.event, msg.payload.properties);
break;
}
}