Add event tracking for Header, PreviewDropdown, CampaignName and SaveEmailButton components
MAILPOET-6365
This commit is contained in:
committed by
Oluwaseun Olorunsola
parent
1e21223a73
commit
6f9211ca57
@@ -11,6 +11,7 @@ import { chevronDown } from '@wordpress/icons';
|
|||||||
import { useSelect } from '@wordpress/data';
|
import { useSelect } from '@wordpress/data';
|
||||||
import { useEntityProp } from '@wordpress/core-data';
|
import { useEntityProp } from '@wordpress/core-data';
|
||||||
import { storeName } from '../../store';
|
import { storeName } from '../../store';
|
||||||
|
import { recordEvent, recordEventOnce } from '../../events';
|
||||||
|
|
||||||
// @see https://github.com/WordPress/gutenberg/blob/5e0ffdbc36cb2e967dfa6a6b812a10a2e56a598f/packages/edit-post/src/components/header/document-actions/index.js
|
// @see https://github.com/WordPress/gutenberg/blob/5e0ffdbc36cb2e967dfa6a6b812a10a2e56a598f/packages/edit-post/src/components/header/document-actions/index.js
|
||||||
|
|
||||||
@@ -42,7 +43,13 @@ export function CampaignName() {
|
|||||||
renderToggle={ ( { isOpen, onToggle } ) => (
|
renderToggle={ ( { isOpen, onToggle } ) => (
|
||||||
<>
|
<>
|
||||||
<Button
|
<Button
|
||||||
onClick={ onToggle }
|
onClick={ () => {
|
||||||
|
onToggle();
|
||||||
|
recordEvent(
|
||||||
|
'header_campaign_name_email_title_clicked',
|
||||||
|
{ isOpen }
|
||||||
|
);
|
||||||
|
} }
|
||||||
className="mailpoet-email-campaign-name__link"
|
className="mailpoet-email-campaign-name__link"
|
||||||
>
|
>
|
||||||
<Text size="body" as="h1">
|
<Text size="body" as="h1">
|
||||||
@@ -57,7 +64,13 @@ export function CampaignName() {
|
|||||||
icon={ chevronDown }
|
icon={ chevronDown }
|
||||||
aria-expanded={ isOpen }
|
aria-expanded={ isOpen }
|
||||||
aria-haspopup="true"
|
aria-haspopup="true"
|
||||||
onClick={ onToggle }
|
onClick={ () => {
|
||||||
|
onToggle();
|
||||||
|
recordEvent(
|
||||||
|
'header_campaign_name_toggle_icon_clicked',
|
||||||
|
{ isOpen }
|
||||||
|
);
|
||||||
|
} }
|
||||||
label={ __( 'Change campaign name', 'mailpoet' ) }
|
label={ __( 'Change campaign name', 'mailpoet' ) }
|
||||||
>
|
>
|
||||||
{ showIconLabels && __( 'Rename', 'mailpoet' ) }
|
{ showIconLabels && __( 'Rename', 'mailpoet' ) }
|
||||||
@@ -71,6 +84,9 @@ export function CampaignName() {
|
|||||||
value={ emailTitle }
|
value={ emailTitle }
|
||||||
onChange={ ( newTitle ) => {
|
onChange={ ( newTitle ) => {
|
||||||
setTitle( newTitle );
|
setTitle( newTitle );
|
||||||
|
recordEventOnce(
|
||||||
|
'header_campaign_name_title_updated'
|
||||||
|
);
|
||||||
} }
|
} }
|
||||||
name="campaign_name"
|
name="campaign_name"
|
||||||
help={ __(
|
help={ __(
|
||||||
|
@@ -34,6 +34,7 @@ import { CampaignName } from './campaign-name';
|
|||||||
import { SendButton } from './send-button';
|
import { SendButton } from './send-button';
|
||||||
import { SaveAllButton } from './save-all-button';
|
import { SaveAllButton } from './save-all-button';
|
||||||
import { useEditorMode } from '../../hooks';
|
import { useEditorMode } from '../../hooks';
|
||||||
|
import { recordEvent } from '../../events';
|
||||||
|
|
||||||
// Build type for ToolbarItem contains only "as" and "children" properties but it takes all props from
|
// Build type for ToolbarItem contains only "as" and "children" properties but it takes all props from
|
||||||
// component passed to "as" property (in this case Button). So as fix for TS errors we need to pass all props from Button to ToolbarItem.
|
// component passed to "as" property (in this case Button). So as fix for TS errors we need to pass all props from Button to ToolbarItem.
|
||||||
@@ -101,15 +102,19 @@ export function Header() {
|
|||||||
|
|
||||||
const toggleTheInserterSidebar = () => {
|
const toggleTheInserterSidebar = () => {
|
||||||
if ( isInserterSidebarOpened ) {
|
if ( isInserterSidebarOpened ) {
|
||||||
|
recordEvent( 'header_inserter_sidebar_closed' );
|
||||||
return setIsInserterOpened( false );
|
return setIsInserterOpened( false );
|
||||||
}
|
}
|
||||||
|
recordEvent( 'header_inserter_sidebar_opened' );
|
||||||
return setIsInserterOpened( true );
|
return setIsInserterOpened( true );
|
||||||
};
|
};
|
||||||
|
|
||||||
const toggleTheListviewSidebar = () => {
|
const toggleTheListviewSidebar = () => {
|
||||||
if ( isListviewSidebarOpened ) {
|
if ( isListviewSidebarOpened ) {
|
||||||
|
recordEvent( 'header_listview_sidebar_closed' );
|
||||||
return setIsListViewOpened( false );
|
return setIsListViewOpened( false );
|
||||||
}
|
}
|
||||||
|
recordEvent( 'header_listview_sidebar_opened' );
|
||||||
return setIsListViewOpened( true );
|
return setIsListViewOpened( true );
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -145,7 +150,10 @@ export function Header() {
|
|||||||
className="editor-history__undo"
|
className="editor-history__undo"
|
||||||
isPressed={ false }
|
isPressed={ false }
|
||||||
onMouseDown={ preventDefault }
|
onMouseDown={ preventDefault }
|
||||||
onClick={ undoAction }
|
onClick={ () => {
|
||||||
|
void undoAction();
|
||||||
|
recordEvent( 'header_undo_icon_clicked' );
|
||||||
|
} }
|
||||||
disabled={ ! hasUndo }
|
disabled={ ! hasUndo }
|
||||||
icon={ undo }
|
icon={ undo }
|
||||||
label={ __( 'Undo', 'mailpoet' ) }
|
label={ __( 'Undo', 'mailpoet' ) }
|
||||||
@@ -157,7 +165,10 @@ export function Header() {
|
|||||||
className="editor-history__redo"
|
className="editor-history__redo"
|
||||||
isPressed={ false }
|
isPressed={ false }
|
||||||
onMouseDown={ preventDefault }
|
onMouseDown={ preventDefault }
|
||||||
onClick={ redoAction }
|
onClick={ () => {
|
||||||
|
void redoAction();
|
||||||
|
recordEvent( 'header_redo_icon_clicked' );
|
||||||
|
} }
|
||||||
disabled={ ! hasRedo }
|
disabled={ ! hasRedo }
|
||||||
icon={ redo }
|
icon={ redo }
|
||||||
label={ __( 'Redo', 'mailpoet' ) }
|
label={ __( 'Redo', 'mailpoet' ) }
|
||||||
@@ -197,6 +208,10 @@ export function Header() {
|
|||||||
setIsBlockToolsCollapsed(
|
setIsBlockToolsCollapsed(
|
||||||
( collapsed ) => ! collapsed
|
( collapsed ) => ! collapsed
|
||||||
);
|
);
|
||||||
|
recordEvent(
|
||||||
|
'header_blocks_tool_button_clicked',
|
||||||
|
{ isBlockToolsCollapsed }
|
||||||
|
);
|
||||||
} }
|
} }
|
||||||
label={
|
label={
|
||||||
isBlockToolsCollapsed
|
isBlockToolsCollapsed
|
||||||
|
@@ -3,6 +3,7 @@ import { __ } from '@wordpress/i18n';
|
|||||||
import { useDispatch, useSelect } from '@wordpress/data';
|
import { useDispatch, useSelect } from '@wordpress/data';
|
||||||
import { check, cloud, Icon } from '@wordpress/icons';
|
import { check, cloud, Icon } from '@wordpress/icons';
|
||||||
import { storeName } from '../../store';
|
import { storeName } from '../../store';
|
||||||
|
import { recordEvent } from '../../events';
|
||||||
|
|
||||||
export function SaveEmailButton() {
|
export function SaveEmailButton() {
|
||||||
const { saveEditedEmail } = useDispatch( storeName );
|
const { saveEditedEmail } = useDispatch( storeName );
|
||||||
@@ -30,7 +31,14 @@ export function SaveEmailButton() {
|
|||||||
<Button
|
<Button
|
||||||
variant="tertiary"
|
variant="tertiary"
|
||||||
disabled={ isDisabled }
|
disabled={ isDisabled }
|
||||||
onClick={ saveEditedEmail }
|
onClick={ () => {
|
||||||
|
void saveEditedEmail();
|
||||||
|
recordEvent( 'header_save_email_button_clicked', {
|
||||||
|
label,
|
||||||
|
isSaving,
|
||||||
|
isSaved,
|
||||||
|
} );
|
||||||
|
} }
|
||||||
>
|
>
|
||||||
{ isSaving && <Icon icon={ cloud } /> }
|
{ isSaving && <Icon icon={ cloud } /> }
|
||||||
{ isSaved && <Icon icon={ check } /> }
|
{ isSaved && <Icon icon={ check } /> }
|
||||||
|
@@ -10,6 +10,7 @@ import { __ } from '@wordpress/i18n';
|
|||||||
import { Icon, external, check, mobile, desktop } from '@wordpress/icons';
|
import { Icon, external, check, mobile, desktop } from '@wordpress/icons';
|
||||||
import { SendPreviewEmail } from './send-preview-email';
|
import { SendPreviewEmail } from './send-preview-email';
|
||||||
import { storeName } from '../../store';
|
import { storeName } from '../../store';
|
||||||
|
import { recordEvent } from '../../events';
|
||||||
|
|
||||||
export function PreviewDropdown() {
|
export function PreviewDropdown() {
|
||||||
const [ mailpoetEmailData ] = useEntityProp(
|
const [ mailpoetEmailData ] = useEntityProp(
|
||||||
@@ -46,13 +47,23 @@ export function PreviewDropdown() {
|
|||||||
className="mailpoet-preview-dropdown"
|
className="mailpoet-preview-dropdown"
|
||||||
label={ __( 'Preview', 'mailpoet' ) }
|
label={ __( 'Preview', 'mailpoet' ) }
|
||||||
icon={ deviceIcons[ previewDeviceType.toLowerCase() ] }
|
icon={ deviceIcons[ previewDeviceType.toLowerCase() ] }
|
||||||
|
onToggle={ ( isOpened ) =>
|
||||||
|
recordEvent( 'header_preview_dropdown_clicked', {
|
||||||
|
isOpened,
|
||||||
|
} )
|
||||||
|
}
|
||||||
>
|
>
|
||||||
{ ( { onClose } ) => (
|
{ ( { onClose } ) => (
|
||||||
<>
|
<>
|
||||||
<MenuGroup>
|
<MenuGroup>
|
||||||
<MenuItem
|
<MenuItem
|
||||||
className="block-editor-post-preview__button-resize"
|
className="block-editor-post-preview__button-resize"
|
||||||
onClick={ () => changeDeviceType( 'Desktop' ) }
|
onClick={ () => {
|
||||||
|
changeDeviceType( 'Desktop' );
|
||||||
|
recordEvent(
|
||||||
|
'header_preview_dropdown_desktop_selected'
|
||||||
|
);
|
||||||
|
} }
|
||||||
icon={
|
icon={
|
||||||
previewDeviceType === 'Desktop' && check
|
previewDeviceType === 'Desktop' && check
|
||||||
}
|
}
|
||||||
@@ -61,7 +72,12 @@ export function PreviewDropdown() {
|
|||||||
</MenuItem>
|
</MenuItem>
|
||||||
<MenuItem
|
<MenuItem
|
||||||
className="block-editor-post-preview__button-resize"
|
className="block-editor-post-preview__button-resize"
|
||||||
onClick={ () => changeDeviceType( 'Mobile' ) }
|
onClick={ () => {
|
||||||
|
changeDeviceType( 'Mobile' );
|
||||||
|
recordEvent(
|
||||||
|
'header_preview_dropdown_mobile_selected'
|
||||||
|
);
|
||||||
|
} }
|
||||||
icon={ previewDeviceType === 'Mobile' && check }
|
icon={ previewDeviceType === 'Mobile' && check }
|
||||||
>
|
>
|
||||||
{ __( 'Mobile', 'mailpoet' ) }
|
{ __( 'Mobile', 'mailpoet' ) }
|
||||||
@@ -72,6 +88,9 @@ export function PreviewDropdown() {
|
|||||||
className="block-editor-post-preview__button-resize"
|
className="block-editor-post-preview__button-resize"
|
||||||
onClick={ () => {
|
onClick={ () => {
|
||||||
void togglePreviewModal( true );
|
void togglePreviewModal( true );
|
||||||
|
recordEvent(
|
||||||
|
'header_preview_dropdown_send_test_email_selected'
|
||||||
|
);
|
||||||
onClose();
|
onClose();
|
||||||
} }
|
} }
|
||||||
>
|
>
|
||||||
@@ -84,6 +103,9 @@ export function PreviewDropdown() {
|
|||||||
<Button
|
<Button
|
||||||
className="edit-post-header-preview__button-external components-menu-item__button"
|
className="edit-post-header-preview__button-external components-menu-item__button"
|
||||||
onClick={ () => {
|
onClick={ () => {
|
||||||
|
recordEvent(
|
||||||
|
'header_preview_dropdown_preview_in_new_tab_selected'
|
||||||
|
);
|
||||||
openInNewTab(
|
openInNewTab(
|
||||||
newsletterPreviewUrl
|
newsletterPreviewUrl
|
||||||
);
|
);
|
||||||
|
Reference in New Issue
Block a user