diff --git a/CHANGELOG.md b/CHANGELOG.md
index 06960b3c..e689bd13 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -30,6 +30,7 @@
- [#520](https://github.com/estruyf/vscode-front-matter/issues/520): Add the URL protocol to the host on opening the preview if it's missing
- [#521](https://github.com/estruyf/vscode-front-matter/issues/521): Fix empty snippets dashboard placeholder
- [#526](https://github.com/estruyf/vscode-front-matter/issues/526): Fix card content menu
+- [#531](https://github.com/estruyf/vscode-front-matter/issues/531): Fix prettier update which caused data views to not render list items
## [8.3.0] - 2023-02-14 - [Release notes](https://beta.frontmatter.codes/updates/v8.3.0)
diff --git a/package-lock.json b/package-lock.json
index b8f6ec3e..55c53366 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -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",
diff --git a/package.json b/package.json
index 3b9f9fe3..92e6769a 100644
--- a/package.json
+++ b/package.json
@@ -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",
diff --git a/src/components/uniforms-frontmatter/ListField.tsx b/src/components/uniforms-frontmatter/ListField.tsx
index f9198dcd..93edafb9 100644
--- a/src/components/uniforms-frontmatter/ListField.tsx
+++ b/src/components/uniforms-frontmatter/ListField.tsx
@@ -7,6 +7,7 @@ import ListItemField from './ListItemField';
import './ListField.css';
import { LabelField } from './LabelField';
+import { AutoField } from 'uniforms-unstyled';
export type ListFieldProps = HTMLFieldProps<
unknown[],
@@ -27,14 +28,13 @@ function List({
{value?.map((item, itemIndex) =>
- Children.map(children as React.ReactElement[], (child: React.ReactElement, childIndex) =>
+ Children.map(children as React.ReactElement[], (child: React.ReactElement, childIndex) =>
isValidElement(child)
- ? cloneElement(child, {
- key: `${itemIndex}-${childIndex}`,
- // name: '',
- // name: (child.props.name || '').replace('$', '' + itemIndex),
- ...itemProps
- })
+ ? cloneElement(child as React.ReactElement, {
+ key: `${itemIndex}-${childIndex}`,
+ name: ((child?.props as any)?.name || "").replace('$', '' + itemIndex),
+ ...itemProps,
+ })
: child
)
)}
diff --git a/src/extension.ts b/src/extension.ts
index e36d3eee..a2e44639 100644
--- a/src/extension.ts
+++ b/src/extension.ts
@@ -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);
diff --git a/src/helpers/Telemetry.ts b/src/helpers/Telemetry.ts
index 4b891e47..56177645 100644
--- a/src/helpers/Telemetry.ts
+++ b/src/helpers/Telemetry.ts
@@ -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(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);
}
}
diff --git a/src/listeners/dashboard/TelemetryListener.ts b/src/listeners/dashboard/TelemetryListener.ts
index 9d3cd93e..30c637fe 100644
--- a/src/listeners/dashboard/TelemetryListener.ts
+++ b/src/listeners/dashboard/TelemetryListener.ts
@@ -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;
}
}