Browse Source

Cleanup

telemetry
Artur Arseniev 1 year ago
parent
commit
59415548e8
  1. 7
      packages/core/src/editor/model/Editor.ts
  2. 21
      packages/core/src/editor/view/EditorView.ts
  3. 4
      packages/core/src/index.ts
  4. 1
      packages/core/test/setup.js
  5. 9
      packages/core/test/specs/editor/telemetry.ts
  6. 1
      packages/core/webpack.config.js

7
packages/core/src/editor/model/Editor.ts

@ -44,6 +44,7 @@ import ComponentWrapper from '../../dom_components/model/ComponentWrapper';
import { CanvasSpotBuiltInTypes } from '../../canvas/model/CanvasSpot';
import DataSourceManager from '../../data_sources';
import { ComponentsEvents } from '../../dom_components/types';
import { InitEditorConfig } from '../..';
Backbone.$ = $;
@ -113,7 +114,7 @@ export default class EditorModel extends Model {
__skip = false;
defaultRunning = false;
destroyed = false;
_config: EditorConfig;
_config: InitEditorConfig;
_storageTimeout?: ReturnType<typeof setTimeout>;
attrsOrig: any;
timedInterval?: ReturnType<typeof setTimeout>;
@ -307,6 +308,10 @@ export default class EditorModel extends Model {
return this._config;
}
get version() {
return this.config.grapesjs?.version || '';
}
/**
* Get configurations
* @param {string} [prop] Property name

21
packages/core/src/editor/view/EditorView.ts

@ -57,17 +57,15 @@ export default class EditorView extends View<EditorModel> {
}
private async sendTelemetryData() {
const hostName = getHostName();
const domain = getHostName();
if (hostName === 'localhost' || hostName.includes('localhost')) {
if (domain === 'localhost' || domain.includes('localhost')) {
// Don't send telemetry data for localhost
return;
}
const sessionKeyPrefix = 'gjs_telemetry_sent_';
// @ts-ignore
const version = __GJS_VERSION__;
const { version } = this.model;
const sessionKey = `${sessionKeyPrefix}${version}`;
if (sessionStorage.getItem(sessionKey)) {
@ -75,17 +73,10 @@ export default class EditorView extends View<EditorModel> {
return;
}
// @ts-ignore
const url = __STUDIO_URL__;
const path = '/api/gjs/telemetry/collect';
const response = await fetch(`${url}${path}`, {
const url = 'https://app.grapesjs.com';
const response = await fetch(`${url}/api/gjs/telemetry/collect`, {
method: 'POST',
body: JSON.stringify({
domain: hostName,
version,
url,
}),
body: JSON.stringify({ domain, version }),
});
if (!response.ok) {

4
packages/core/src/index.ts

@ -5,7 +5,7 @@ import PluginManager, { Plugin, getPlugin, logPluginWarn } from './plugin_manage
import $ from './utils/cash-dom';
import polyfills from './utils/polyfills';
interface InitEditorConfig extends EditorConfig {
export interface InitEditorConfig extends EditorConfig {
grapesjs?: typeof grapesjs;
}
@ -36,7 +36,7 @@ export const grapesjs = {
usePlugin,
// @ts-ignore Will be replaced on build
version: __GJS_VERSION__,
version: __GJS_VERSION__ as string,
/**
* Initialize the editor with passed options

1
packages/core/test/setup.js

@ -16,7 +16,6 @@ const localStorage = {
global._ = _;
global.__GJS_VERSION__ = '';
global.__STUDIO_URL__ = '';
global.grapesjs = require('./../src').default;
global.$ = global.grapesjs.$;
global.localStorage = localStorage;

9
packages/core/test/specs/editor/telemetry.ts

@ -6,6 +6,7 @@ import * as hostUtil from '../../../src/utils/host-name';
jest.mock('../../../src/utils/host-name');
describe('Editor telemetry', () => {
const version = '1.0.0';
let fixture: HTMLElement;
let editorName = '';
let htmlString = '';
@ -17,6 +18,7 @@ describe('Editor telemetry', () => {
let fetchMock: jest.Mock;
const initTestEditor = (config: Partial<EditorConfig>) => {
grapesjs.version = version;
const editor = grapesjs.init({
...config,
plugins: [fixJsDom, ...(config.plugins || [])],
@ -88,7 +90,6 @@ describe('Editor telemetry', () => {
expect(JSON.parse(fetchMock.mock.calls[0][1].body)).toMatchObject({
domain: expect.any(String),
version: expect.any(String),
url: expect.any(String),
});
});
@ -103,9 +104,6 @@ describe('Editor telemetry', () => {
});
test('Telemetry is not sent twice in the same session', async () => {
const version = '1.0.0';
(global as any).__GJS_VERSION__ = version;
window.sessionStorage.getItem = jest.fn(() => 'true');
const editor = initTestEditor({
@ -132,9 +130,6 @@ describe('Editor telemetry', () => {
});
test('Telemetry cleans up old version keys', async () => {
const version = '1.0.0';
(global as any).__GJS_VERSION__ = version;
const sessionStorageMock = {
getItem: jest.fn(() => null),
setItem: jest.fn(),

1
packages/core/webpack.config.js

@ -44,7 +44,6 @@ module.exports = ({ config, pkg, webpack }) => {
plugins: [
new webpack.DefinePlugin({
__GJS_VERSION__: `'${pkg.version}'`,
__STUDIO_URL__: `'${process.env.STUDIO_URL || 'http://localhost:3000'}'`,
}),
...config.plugins,
],

Loading…
Cancel
Save