|
1 | 1 | import {app, ipcMain} from 'electron';
|
| 2 | +import defaultsDeep from 'lodash.defaultsdeep'; |
2 | 3 |
|
3 | 4 | import TelemetryClient from './telemetry/TelemetryClient';
|
4 | 5 |
|
5 | 6 | const EVENT_TEMPLATE = {
|
6 | 7 | version: '3.0.0',
|
7 | 8 | projectName: '',
|
8 | 9 | language: '',
|
9 |
| - scriptCount: -1, |
10 |
| - spriteCount: -1, |
11 |
| - variablesCount: -1, |
12 |
| - blocksCount: -1, |
13 |
| - costumesCount: -1, |
14 |
| - listsCount: -1, |
15 |
| - soundsCount: -1 |
| 10 | + metadata: { |
| 11 | + scriptCount: -1, |
| 12 | + spriteCount: -1, |
| 13 | + variablesCount: -1, |
| 14 | + blocksCount: -1, |
| 15 | + costumesCount: -1, |
| 16 | + listsCount: -1, |
| 17 | + soundsCount: -1 |
| 18 | + } |
16 | 19 | };
|
17 | 20 |
|
18 | 21 | const APP_ID = 'scratch-desktop';
|
@@ -42,19 +45,28 @@ class ScratchDesktopTelemetry {
|
42 | 45 | }
|
43 | 46 |
|
44 | 47 | projectDidLoad (metadata = {}) {
|
45 |
| - this._telemetryClient.addEvent('project::load', {...EVENT_TEMPLATE, ...metadata}); |
| 48 | + this._telemetryClient.addEvent('project::load', this._buildMetadata(metadata)); |
46 | 49 | }
|
47 | 50 |
|
48 | 51 | projectDidSave (metadata = {}) {
|
49 |
| - this._telemetryClient.addEvent('project::save', {...EVENT_TEMPLATE, ...metadata}); |
| 52 | + this._telemetryClient.addEvent('project::save', this._buildMetadata(metadata)); |
50 | 53 | }
|
51 | 54 |
|
52 | 55 | projectWasCreated (metadata = {}) {
|
53 |
| - this._telemetryClient.addEvent('project::create', {...EVENT_TEMPLATE, ...metadata}); |
| 56 | + this._telemetryClient.addEvent('project::create', this._buildMetadata(metadata)); |
54 | 57 | }
|
55 | 58 |
|
56 | 59 | projectWasUploaded (metadata = {}) {
|
57 |
| - this._telemetryClient.addEvent('project::upload', {...EVENT_TEMPLATE, ...metadata}); |
| 60 | + this._telemetryClient.addEvent('project::upload', this._buildMetadata(metadata)); |
| 61 | + } |
| 62 | + |
| 63 | + _buildMetadata (metadata) { |
| 64 | + const { projectName, language, ...codeMetadata } = metadata; |
| 65 | + return defaultsDeep({ |
| 66 | + projectName, |
| 67 | + language, |
| 68 | + metadata: codeMetadata |
| 69 | + }, EVENT_TEMPLATE); |
58 | 70 | }
|
59 | 71 | }
|
60 | 72 |
|
|
0 commit comments