diff --git a/packages/core/src/editor/model/Editor.ts b/packages/core/src/editor/model/Editor.ts index 33390b2ab..e64418548 100644 --- a/packages/core/src/editor/model/Editor.ts +++ b/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; attrsOrig: any; timedInterval?: ReturnType; @@ -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 diff --git a/packages/core/src/editor/view/EditorView.ts b/packages/core/src/editor/view/EditorView.ts index 9d41e29d8..18d20306b 100644 --- a/packages/core/src/editor/view/EditorView.ts +++ b/packages/core/src/editor/view/EditorView.ts @@ -57,17 +57,15 @@ export default class EditorView extends View { } 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 { 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) { diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 40c710e47..62688da96 100644 --- a/packages/core/src/index.ts +++ b/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 diff --git a/packages/core/test/setup.js b/packages/core/test/setup.js index b414cc3c7..939a5ea36 100644 --- a/packages/core/test/setup.js +++ b/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; diff --git a/packages/core/test/specs/editor/telemetry.ts b/packages/core/test/specs/editor/telemetry.ts index 1d56f44b9..66cf3ade8 100644 --- a/packages/core/test/specs/editor/telemetry.ts +++ b/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) => { + 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(), diff --git a/packages/core/webpack.config.js b/packages/core/webpack.config.js index 2db5ca83c..7dee91595 100644 --- a/packages/core/webpack.config.js +++ b/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, ],