Add event tracking for SendPreviewEmail and KeyboardShortcuts components

MAILPOET-6365
This commit is contained in:
Oluwaseun Olorunsola
2024-12-19 22:29:28 +01:00
committed by Oluwaseun Olorunsola
parent 6f9211ca57
commit 150403f158
3 changed files with 57 additions and 10 deletions

View File

@@ -7,6 +7,7 @@ import {
} from '@wordpress/keyboard-shortcuts'; } from '@wordpress/keyboard-shortcuts';
import { __ } from '@wordpress/i18n'; import { __ } from '@wordpress/i18n';
import { storeName } from '../../store'; import { storeName } from '../../store';
import { recordEvent } from '../../events';
// See: // See:
// https://github.com/WordPress/gutenberg/blob/9601a33e30ba41bac98579c8d822af63dd961488/packages/edit-post/src/components/keyboard-shortcuts/index.js // https://github.com/WordPress/gutenberg/blob/9601a33e30ba41bac98579c8d822af63dd961488/packages/edit-post/src/components/keyboard-shortcuts/index.js
@@ -78,10 +79,12 @@ export function KeyboardShortcuts(): null {
}, [ registerShortcut ] ); }, [ registerShortcut ] );
useShortcut( 'mailpoet/email-editor/toggle-fullscreen', () => { useShortcut( 'mailpoet/email-editor/toggle-fullscreen', () => {
recordEvent( 'keyboard_shortcuts_toggle_fullscreen' );
void toggleFeature( 'fullscreenMode' ); void toggleFeature( 'fullscreenMode' );
} ); } );
useShortcut( 'mailpoet/email-editor/toggle-sidebar', ( event ) => { useShortcut( 'mailpoet/email-editor/toggle-sidebar', ( event ) => {
recordEvent( 'keyboard_shortcuts_toggle_sidebar' );
event.preventDefault(); event.preventDefault();
if ( isSidebarOpened ) { if ( isSidebarOpened ) {
@@ -92,6 +95,7 @@ export function KeyboardShortcuts(): null {
} ); } );
useShortcut( 'mailpoet/email-editor/save', ( event ) => { useShortcut( 'mailpoet/email-editor/save', ( event ) => {
recordEvent( 'keyboard_shortcuts_save' );
event.preventDefault(); event.preventDefault();
if ( ! hasEdits || isSaving ) { if ( ! hasEdits || isSaving ) {
return; return;

View File

@@ -6,6 +6,7 @@ import {
useEffect, useEffect,
useRef, useRef,
createInterpolateElement, createInterpolateElement,
memo,
} from '@wordpress/element'; } from '@wordpress/element';
import { ENTER } from '@wordpress/keycodes'; import { ENTER } from '@wordpress/keycodes';
import { isEmail } from '@wordpress/url'; import { isEmail } from '@wordpress/url';
@@ -15,8 +16,9 @@ import {
SendingPreviewStatus, SendingPreviewStatus,
storeName, storeName,
} from '../../store'; } from '../../store';
import { recordEvent, recordEventOnce } from '../../events';
export function SendPreviewEmail() { function RawSendPreviewEmail() {
const sendToRef = useRef( null ); const sendToRef = useRef( null );
const { const {
@@ -45,12 +47,16 @@ export function SendPreviewEmail() {
); );
}; };
const closeCallback = () => togglePreviewModal( false ); const closeCallback = () => {
recordEvent( 'send_preview_email_modal_closed' );
void togglePreviewModal( false );
};
// We use this effect to focus on the input field when the modal is opened // We use this effect to focus on the input field when the modal is opened
useEffect( () => { useEffect( () => {
if ( isModalOpened ) { if ( isModalOpened ) {
sendToRef.current?.focus(); sendToRef.current?.focus();
recordEvent( 'send_preview_email_modal_opened' );
} }
}, [ isModalOpened ] ); }, [ isModalOpened ] );
@@ -85,6 +91,11 @@ export function SendPreviewEmail() {
href="admin.php?page=mailpoet-settings#mta" href="admin.php?page=mailpoet-settings#mta"
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
onClick={ () =>
recordEvent(
'send_preview_email_modal_check_sending_method_configuration_link_clicked'
)
}
/> />
), ),
} }
@@ -107,6 +118,11 @@ export function SendPreviewEmail() {
key="sign-up-for-free" key="sign-up-for-free"
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
onClick={ () =>
recordEvent(
'send_preview_email_modal_sign_up_for_mailpoet_sending_service_link_clicked'
)
}
/> />
), ),
} }
@@ -128,6 +144,11 @@ export function SendPreviewEmail() {
href="https://www.mail-tester.com/" href="https://www.mail-tester.com/"
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
onClick={ () =>
recordEvent(
'send_preview_email_modal_send_test_email_to_mail_tester_link_clicked'
)
}
/> />
), ),
link2: ( link2: (
@@ -136,6 +157,11 @@ export function SendPreviewEmail() {
href="https://kb.mailpoet.com/article/147-test-your-spam-score-with-mail-tester" href="https://kb.mailpoet.com/article/147-test-your-spam-score-with-mail-tester"
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
onClick={ () =>
recordEvent(
'send_preview_email_modal_learn_more_about_mail_tester_link_clicked'
)
}
/> />
), ),
} }
@@ -145,12 +171,18 @@ export function SendPreviewEmail() {
label={ __( 'Send to', 'mailpoet' ) } label={ __( 'Send to', 'mailpoet' ) }
onChange={ ( email ) => { onChange={ ( email ) => {
void updateSendPreviewEmail( email ); void updateSendPreviewEmail( email );
recordEventOnce(
'send_preview_email_modal_send_to_field_updated'
);
} } } }
onKeyDown={ ( event ) => { onKeyDown={ ( event ) => {
const { keyCode } = event; const { keyCode } = event;
if ( keyCode === ENTER ) { if ( keyCode === ENTER ) {
event.preventDefault(); event.preventDefault();
handleSendPreviewEmail(); handleSendPreviewEmail();
recordEvent(
'send_preview_email_modal_send_to_field_key_code_enter'
);
} }
} } } }
value={ previewToEmail } value={ previewToEmail }
@@ -165,12 +197,25 @@ export function SendPreviewEmail() {
</p> </p>
) : null } ) : null }
<div className="mailpoet-send-preview-modal-footer"> <div className="mailpoet-send-preview-modal-footer">
<Button variant="tertiary" onClick={ closeCallback }> <Button
variant="tertiary"
onClick={ () => {
recordEvent(
'send_preview_email_modal_close_button_clicked'
);
closeCallback();
} }
>
{ __( 'Close', 'mailpoet' ) } { __( 'Close', 'mailpoet' ) }
</Button> </Button>
<Button <Button
variant="primary" variant="primary"
onClick={ handleSendPreviewEmail } onClick={ () => {
handleSendPreviewEmail();
recordEvent(
'send_preview_email_modal_send_test_email_button_clicked'
);
} }
disabled={ disabled={
isSendingPreviewEmail || ! isEmail( previewToEmail ) isSendingPreviewEmail || ! isEmail( previewToEmail )
} }
@@ -183,3 +228,5 @@ export function SendPreviewEmail() {
</Modal> </Modal>
); );
} }
export const SendPreviewEmail = memo( RawSendPreviewEmail );

View File

@@ -67,7 +67,6 @@ export function updateSendPreviewEmail( toEmail: string ) {
export const openSidebar = export const openSidebar =
( key = mainSidebarDocumentTab ) => ( key = mainSidebarDocumentTab ) =>
( { registry } ): unknown => { ( { registry } ): unknown => {
recordEvent( 'editor-sidebar-opened' );
return registry return registry
.dispatch( interfaceStore ) .dispatch( interfaceStore )
.enableComplementaryArea( storeName, key ); .enableComplementaryArea( storeName, key );
@@ -76,8 +75,6 @@ export const openSidebar =
export const closeSidebar = export const closeSidebar =
() => () =>
( { registry } ): unknown => { ( { registry } ): unknown => {
recordEvent( 'editor-sidebar-closed' );
return registry return registry
.dispatch( interfaceStore ) .dispatch( interfaceStore )
.disableComplementaryArea( storeName ); .disableComplementaryArea( storeName );
@@ -148,7 +145,6 @@ export function* updateEmailMailPoetProperty( name: string, value: string ) {
}, },
} }
); );
recordEvent( 'updated-mailpoet-email-property', { postId } );
} }
export const setTemplateToPost = export const setTemplateToPost =
@@ -199,9 +195,9 @@ export function* requestSendingNewsletterPreview(
isSendingPreviewEmail: false, isSendingPreviewEmail: false,
}, },
}; };
recordEvent( 'sent-preview-email', { postId, email } ); recordEvent( 'sent_preview_email', { postId, email } );
} catch ( errorResponse ) { } catch ( errorResponse ) {
recordEvent( 'error-sent-preview-email', { email } ); recordEvent( 'sent_preview_email_error', { email } );
yield { yield {
type: 'CHANGE_PREVIEW_STATE', type: 'CHANGE_PREVIEW_STATE',
state: { state: {