Move keyboard shortcut reporting to keyboard-shortcut-mixin
Change-Id: I01504718ccb2db56b994fb8bfd04370b6c47bd71
diff --git a/polygerrit-ui/app/elements/gr-app-element.ts b/polygerrit-ui/app/elements/gr-app-element.ts
index 6e20a55..be9c7c5 100644
--- a/polygerrit-ui/app/elements/gr-app-element.ts
+++ b/polygerrit-ui/app/elements/gr-app-element.ts
@@ -72,7 +72,6 @@
LocationChangeEvent,
PageErrorEventDetail,
RpcLogEvent,
- ShortcutTriggeredEvent,
TitleChangeEventDetail,
} from '../types/events';
import {ViewState} from '../types/types';
@@ -247,9 +246,6 @@
this.handleRecreateView(GerritView.DIFF)
);
document.addEventListener('gr-rpc-log', e => this._handleRpcLog(e));
- this.addEventListener('shortcut-triggered', e =>
- this._handleShortcutTriggered(e)
- );
}
/** @override */
@@ -544,23 +540,6 @@
fireIronAnnounce(this, ' ');
}
- _handleShortcutTriggered(event: ShortcutTriggeredEvent) {
- const {event: e, goKey, vKey} = event.detail;
- // eg: {key: "k:keydown", ..., from: "gr-diff-view"}
- let key = `${((e as unknown) as KeyboardEvent).key}:${e.type}`;
- if (goKey) key = 'g+' + key;
- if (vKey) key = 'v+' + key;
- if (e.shiftKey) key = 'shift+' + key;
- if (e.ctrlKey) key = 'ctrl+' + key;
- if (e.metaKey) key = 'meta+' + key;
- if (e.altKey) key = 'alt+' + key;
- const path = event.composedPath();
- this.reporting.reportInteraction('shortcut-triggered', {
- key,
- from: (path && path[0] && (path[0] as Element).nodeName) ?? 'unknown',
- });
- }
-
_handlePageError(e: CustomEvent<PageErrorEventDetail>) {
const props = [
'_showChangeListView',
diff --git a/polygerrit-ui/app/mixins/keyboard-shortcut-mixin/keyboard-shortcut-mixin.ts b/polygerrit-ui/app/mixins/keyboard-shortcut-mixin/keyboard-shortcut-mixin.ts
index 62589f8..a7593d5 100644
--- a/polygerrit-ui/app/mixins/keyboard-shortcut-mixin/keyboard-shortcut-mixin.ts
+++ b/polygerrit-ui/app/mixins/keyboard-shortcut-mixin/keyboard-shortcut-mixin.ts
@@ -104,10 +104,7 @@
import {PolymerElement} from '@polymer/polymer';
import {check, Constructor} from '../../utils/common-util';
import {getKeyboardEvent, isModifierPressed} from '../../utils/dom-util';
-import {
- CustomKeyboardEvent,
- ShortcutTriggeredEventDetail,
-} from '../../types/events';
+import {CustomKeyboardEvent} from '../../types/events';
import {appContext} from '../../services/app-context';
/** Enum for all special shortcuts */
@@ -778,6 +775,8 @@
private readonly restApiService = appContext.restApiService;
+ private reporting = appContext.reportingService;
+
/** Used to disable shortcuts when the element is not visible. */
private observer?: IntersectionObserver;
@@ -820,18 +819,19 @@
return true;
}
}
- const detail: ShortcutTriggeredEventDetail = {
- event: e,
- goKey: this._inGoKeyMode(),
- vKey: this.inVKeyMode(),
- };
- this.dispatchEvent(
- new CustomEvent('shortcut-triggered', {
- detail,
- composed: true,
- bubbles: true,
- })
- );
+
+ // eg: {key: "k:keydown", ..., from: "gr-diff-view"}
+ let key = `${((e as unknown) as KeyboardEvent).key}:${e.type}`;
+ if (this._inGoKeyMode()) key = 'g+' + key;
+ if (this.inVKeyMode()) key = 'v+' + key;
+ if (e.shiftKey) key = 'shift+' + key;
+ if (e.ctrlKey) key = 'ctrl+' + key;
+ if (e.metaKey) key = 'meta+' + key;
+ if (e.altKey) key = 'alt+' + key;
+ this.reporting.reportInteraction('shortcut-triggered', {
+ key,
+ from: this.nodeName ?? 'unknown',
+ });
return false;
}
diff --git a/polygerrit-ui/app/types/events.ts b/polygerrit-ui/app/types/events.ts
index 3a61437..65c72f9 100644
--- a/polygerrit-ui/app/types/events.ts
+++ b/polygerrit-ui/app/types/events.ts
@@ -63,7 +63,6 @@
'reload': ReloadEvent;
/* prettier-ignore */
'reply': ReplyEvent;
- 'shortcut-triggered': ShortcutTriggeredEvent;
'show-alert': ShowAlertEvent;
'show-error': ShowErrorEvent;
'show-primary-tab': SwitchTabEvent;
@@ -167,13 +166,6 @@
}
export type ServerErrorEvent = CustomEvent<ServerErrorEventDetail>;
-export interface ShortcutTriggeredEventDetail {
- event: CustomKeyboardEvent;
- goKey: boolean;
- vKey: boolean;
-}
-export type ShortcutTriggeredEvent = CustomEvent<ShortcutTriggeredEventDetail>;
-
export interface ShowAlertEventDetail {
message: string;
dismissOnNavigation?: boolean;