mirror of
https://github.com/pulsar-edit/pulsar.git
synced 2024-09-11 11:15:24 +03:00
remove metrics code from welcome package
This commit is contained in:
parent
fd476842cc
commit
598222a4cf
@ -7,15 +7,6 @@ export default class ChangeLogView {
|
|||||||
constructor(props) {
|
constructor(props) {
|
||||||
this.props = props;
|
this.props = props;
|
||||||
etch.initialize(this);
|
etch.initialize(this);
|
||||||
|
|
||||||
this.element.addEventListener('click', event => {
|
|
||||||
const link = event.target.closest('a');
|
|
||||||
if (link && link.dataset.event) {
|
|
||||||
this.props.reporterProxy.sendEvent(
|
|
||||||
`clicked-welcome-${link.dataset.event}-link`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
didChangeShowChangeLog() {
|
didChangeShowChangeLog() {
|
||||||
|
@ -16,9 +16,6 @@ export default class GuideView {
|
|||||||
this.didClickStylingButton = this.didClickStylingButton.bind(this);
|
this.didClickStylingButton = this.didClickStylingButton.bind(this);
|
||||||
this.didClickInitScriptButton = this.didClickInitScriptButton.bind(this);
|
this.didClickInitScriptButton = this.didClickInitScriptButton.bind(this);
|
||||||
this.didClickSnippetsButton = this.didClickSnippetsButton.bind(this);
|
this.didClickSnippetsButton = this.didClickSnippetsButton.bind(this);
|
||||||
this.didExpandOrCollapseSection = this.didExpandOrCollapseSection.bind(
|
|
||||||
this
|
|
||||||
);
|
|
||||||
etch.initialize(this);
|
etch.initialize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -358,8 +355,7 @@ export default class GuideView {
|
|||||||
|
|
||||||
getSectionProps(sectionName) {
|
getSectionProps(sectionName) {
|
||||||
const props = {
|
const props = {
|
||||||
dataset: { section: sectionName },
|
dataset: { section: sectionName }
|
||||||
onclick: this.didExpandOrCollapseSection
|
|
||||||
};
|
};
|
||||||
if (
|
if (
|
||||||
this.props.openSections &&
|
this.props.openSections &&
|
||||||
@ -415,7 +411,6 @@ export default class GuideView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
didClickProjectButton() {
|
didClickProjectButton() {
|
||||||
this.props.reporterProxy.sendEvent('clicked-project-cta');
|
|
||||||
atom.commands.dispatch(
|
atom.commands.dispatch(
|
||||||
atom.views.getView(atom.workspace),
|
atom.views.getView(atom.workspace),
|
||||||
'application:open'
|
'application:open'
|
||||||
@ -423,7 +418,6 @@ export default class GuideView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
didClickGitButton() {
|
didClickGitButton() {
|
||||||
this.props.reporterProxy.sendEvent('clicked-git-cta');
|
|
||||||
atom.commands.dispatch(
|
atom.commands.dispatch(
|
||||||
atom.views.getView(atom.workspace),
|
atom.views.getView(atom.workspace),
|
||||||
'github:toggle-git-tab'
|
'github:toggle-git-tab'
|
||||||
@ -431,7 +425,6 @@ export default class GuideView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
didClickGitHubButton() {
|
didClickGitHubButton() {
|
||||||
this.props.reporterProxy.sendEvent('clicked-github-cta');
|
|
||||||
atom.commands.dispatch(
|
atom.commands.dispatch(
|
||||||
atom.views.getView(atom.workspace),
|
atom.views.getView(atom.workspace),
|
||||||
'github:toggle-github-tab'
|
'github:toggle-github-tab'
|
||||||
@ -439,40 +432,26 @@ export default class GuideView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
didClickPackagesButton() {
|
didClickPackagesButton() {
|
||||||
this.props.reporterProxy.sendEvent('clicked-packages-cta');
|
|
||||||
atom.workspace.open('atom://config/install', { split: 'left' });
|
atom.workspace.open('atom://config/install', { split: 'left' });
|
||||||
}
|
}
|
||||||
|
|
||||||
didClickThemesButton() {
|
didClickThemesButton() {
|
||||||
this.props.reporterProxy.sendEvent('clicked-themes-cta');
|
|
||||||
atom.workspace.open('atom://config/themes', { split: 'left' });
|
atom.workspace.open('atom://config/themes', { split: 'left' });
|
||||||
}
|
}
|
||||||
|
|
||||||
didClickStylingButton() {
|
didClickStylingButton() {
|
||||||
this.props.reporterProxy.sendEvent('clicked-styling-cta');
|
|
||||||
atom.workspace.open('atom://.pulsar/stylesheet', { split: 'left' });
|
atom.workspace.open('atom://.pulsar/stylesheet', { split: 'left' });
|
||||||
}
|
}
|
||||||
|
|
||||||
didClickInitScriptButton() {
|
didClickInitScriptButton() {
|
||||||
this.props.reporterProxy.sendEvent('clicked-init-script-cta');
|
|
||||||
atom.workspace.open('atom://.pulsar/init-script', { split: 'left' });
|
atom.workspace.open('atom://.pulsar/init-script', { split: 'left' });
|
||||||
}
|
}
|
||||||
|
|
||||||
didClickSnippetsButton() {
|
didClickSnippetsButton() {
|
||||||
this.props.reporterProxy.sendEvent('clicked-snippets-cta');
|
|
||||||
atom.workspace.open('atom://.pulsar/snippets', { split: 'left' });
|
atom.workspace.open('atom://.pulsar/snippets', { split: 'left' });
|
||||||
}
|
}
|
||||||
|
|
||||||
didClickTeletypeButton() {
|
didClickTeletypeButton() {
|
||||||
this.props.reporterProxy.sendEvent('clicked-teletype-cta');
|
|
||||||
atom.workspace.open('atom://config/packages/teletype', { split: 'left' });
|
atom.workspace.open('atom://config/packages/teletype', { split: 'left' });
|
||||||
}
|
}
|
||||||
|
|
||||||
didExpandOrCollapseSection(event) {
|
|
||||||
const sectionName = event.currentTarget.closest('details').dataset.section;
|
|
||||||
const action = event.currentTarget.hasAttribute('open')
|
|
||||||
? 'collapse'
|
|
||||||
: 'expand';
|
|
||||||
this.props.reporterProxy.sendEvent(`${action}-${sectionName}-section`);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,27 +0,0 @@
|
|||||||
/** @babel */
|
|
||||||
|
|
||||||
export default class ReporterProxy {
|
|
||||||
constructor() {
|
|
||||||
this.reporter = null;
|
|
||||||
this.queue = [];
|
|
||||||
this.eventType = 'welcome-v1';
|
|
||||||
}
|
|
||||||
|
|
||||||
setReporter(reporter) {
|
|
||||||
this.reporter = reporter;
|
|
||||||
let customEvent;
|
|
||||||
|
|
||||||
while ((customEvent = this.queue.shift())) {
|
|
||||||
this.reporter.addCustomEvent(this.eventType, customEvent);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sendEvent(action, label, value) {
|
|
||||||
const event = { ea: action, el: label, ev: value };
|
|
||||||
if (this.reporter) {
|
|
||||||
this.reporter.addCustomEvent(this.eventType, event);
|
|
||||||
} else {
|
|
||||||
this.queue.push(event);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,7 +1,6 @@
|
|||||||
/** @babel */
|
/** @babel */
|
||||||
|
|
||||||
import { CompositeDisposable } from 'atom';
|
import { CompositeDisposable } from 'atom';
|
||||||
import ReporterProxy from './reporter-proxy';
|
|
||||||
|
|
||||||
let WelcomeView, GuideView, ChangeLogView;
|
let WelcomeView, GuideView, ChangeLogView;
|
||||||
|
|
||||||
@ -10,10 +9,6 @@ const GUIDE_URI = 'atom://welcome/guide';
|
|||||||
const CHANGELOG_URI = 'atom://welcome/changelog';
|
const CHANGELOG_URI = 'atom://welcome/changelog';
|
||||||
|
|
||||||
export default class WelcomePackage {
|
export default class WelcomePackage {
|
||||||
constructor() {
|
|
||||||
this.reporterProxy = new ReporterProxy();
|
|
||||||
}
|
|
||||||
|
|
||||||
async activate() {
|
async activate() {
|
||||||
this.subscriptions = new CompositeDisposable();
|
this.subscriptions = new CompositeDisposable();
|
||||||
|
|
||||||
@ -51,7 +46,6 @@ export default class WelcomePackage {
|
|||||||
|
|
||||||
if (atom.config.get('welcome.showOnStartup')) {
|
if (atom.config.get('welcome.showOnStartup')) {
|
||||||
await this.show();
|
await this.show();
|
||||||
this.reporterProxy.sendEvent('show-on-initial-load');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (atom.config.get('welcome.showChangeLog')) {
|
if (atom.config.get('welcome.showChangeLog')) {
|
||||||
@ -86,26 +80,22 @@ export default class WelcomePackage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
consumeReporter(reporter) {
|
|
||||||
return this.reporterProxy.setReporter(reporter);
|
|
||||||
}
|
|
||||||
|
|
||||||
deactivate() {
|
deactivate() {
|
||||||
this.subscriptions.dispose();
|
this.subscriptions.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
createWelcomeView(state) {
|
createWelcomeView(state) {
|
||||||
if (WelcomeView == null) WelcomeView = require('./welcome-view');
|
if (WelcomeView == null) WelcomeView = require('./welcome-view');
|
||||||
return new WelcomeView({ reporterProxy: this.reporterProxy, ...state });
|
return new WelcomeView(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
createGuideView(state) {
|
createGuideView(state) {
|
||||||
if (GuideView == null) GuideView = require('./guide-view');
|
if (GuideView == null) GuideView = require('./guide-view');
|
||||||
return new GuideView({ reporterProxy: this.reporterProxy, ...state });
|
return new GuideView(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
createChangeLogView(state) {
|
createChangeLogView(state) {
|
||||||
if (ChangeLogView == null) ChangeLogView = require("./changelog-view");
|
if (ChangeLogView == null) ChangeLogView = require("./changelog-view");
|
||||||
return new ChangeLogView({ reporterProxy: this.reporterProxy, ...state });
|
return new ChangeLogView(state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,15 +9,6 @@ export default class WelcomeView {
|
|||||||
this.props = props;
|
this.props = props;
|
||||||
this.brand = atom.branding.name;
|
this.brand = atom.branding.name;
|
||||||
etch.initialize(this);
|
etch.initialize(this);
|
||||||
|
|
||||||
this.element.addEventListener('click', event => {
|
|
||||||
const link = event.target.closest('a');
|
|
||||||
if (link && link.dataset.event) {
|
|
||||||
this.props.reporterProxy.sendEvent(
|
|
||||||
`clicked-welcome-${link.dataset.event}-link`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
didChangeShowOnStartup() {
|
didChangeShowOnStartup() {
|
||||||
|
@ -98,84 +98,5 @@ describe('Welcome', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('reporting events', () => {
|
|
||||||
let panes, guideView, reportedEvents;
|
|
||||||
beforeEach(() => {
|
|
||||||
panes = atom.workspace.getCenter().getPanes();
|
|
||||||
guideView = panes[1].getItems()[0];
|
|
||||||
reportedEvents = [];
|
|
||||||
|
|
||||||
welcomePackage.reporterProxy.sendEvent = (...event) => {
|
|
||||||
reportedEvents.push(event);
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('GuideView events', () => {
|
|
||||||
it('captures expand and collapse events', () => {
|
|
||||||
guideView.element
|
|
||||||
.querySelector('details[data-section="packages"] summary')
|
|
||||||
.click();
|
|
||||||
assert.deepEqual(reportedEvents, [['expand-packages-section']]);
|
|
||||||
|
|
||||||
guideView.element
|
|
||||||
.querySelector('details[data-section="packages"]')
|
|
||||||
.setAttribute('open', 'open');
|
|
||||||
guideView.element
|
|
||||||
.querySelector('details[data-section="packages"] summary')
|
|
||||||
.click();
|
|
||||||
assert.deepEqual(reportedEvents, [
|
|
||||||
['expand-packages-section'],
|
|
||||||
['collapse-packages-section']
|
|
||||||
]);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('captures button events', () => {
|
|
||||||
for (const detailElement of Array.from(
|
|
||||||
guideView.element.querySelector('details')
|
|
||||||
)) {
|
|
||||||
reportedEvents.length = 0;
|
|
||||||
|
|
||||||
const sectionName = detailElement.dataset.section;
|
|
||||||
const eventName = `clicked-${sectionName}-cta`;
|
|
||||||
const primaryButton = detailElement.querySelector('.btn-primary');
|
|
||||||
if (primaryButton) {
|
|
||||||
primaryButton.click();
|
|
||||||
assert.deepEqual(reportedEvents, [[eventName]]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('when the reporter changes', () =>
|
|
||||||
it('sends all queued events', () => {
|
|
||||||
welcomePackage.reporterProxy.queue.length = 0;
|
|
||||||
|
|
||||||
const reporter1 = {
|
|
||||||
addCustomEvent(category, event) {
|
|
||||||
this.reportedEvents.push({ category, ...event });
|
|
||||||
},
|
|
||||||
reportedEvents: []
|
|
||||||
};
|
|
||||||
const reporter2 = {
|
|
||||||
addCustomEvent(category, event) {
|
|
||||||
this.reportedEvents.push({ category, ...event });
|
|
||||||
},
|
|
||||||
reportedEvents: []
|
|
||||||
};
|
|
||||||
|
|
||||||
welcomePackage.reporterProxy.sendEvent('foo', 'bar', 10);
|
|
||||||
welcomePackage.reporterProxy.sendEvent('foo2', 'bar2', 60);
|
|
||||||
welcomePackage.reporterProxy.setReporter(reporter1);
|
|
||||||
|
|
||||||
assert.deepEqual(reporter1.reportedEvents, [
|
|
||||||
{ category: 'welcome-v1', ea: 'foo', el: 'bar', ev: 10 },
|
|
||||||
{ category: 'welcome-v1', ea: 'foo2', el: 'bar2', ev: 60 }
|
|
||||||
]);
|
|
||||||
|
|
||||||
welcomePackage.consumeReporter(reporter2);
|
|
||||||
assert.deepEqual(reporter2.reportedEvents, []);
|
|
||||||
}));
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user