From eeb8a8a35e65baf38e7d741aca8cf68355cb96c3 Mon Sep 17 00:00:00 2001 From: Markus Hatvan Date: Fri, 1 Oct 2021 15:52:52 +0200 Subject: feat: show service number on icon when first key of switch service hotkey held (#2007) --- src/components/services/tabs/TabItem.js | 44 +++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) (limited to 'src/components/services/tabs/TabItem.js') diff --git a/src/components/services/tabs/TabItem.js b/src/components/services/tabs/TabItem.js index 35224631e..2474682df 100644 --- a/src/components/services/tabs/TabItem.js +++ b/src/components/services/tabs/TabItem.js @@ -137,6 +137,40 @@ class TabItem extends Component { @observable isPollAnswered = false; + constructor(props) { + super(props); + this.state = { + showShortcutIndex: false, + }; + } + + handleShowShortcutIndex = () => { + this.setState({ showShortcutIndex: true }); + }; + + checkForLongPress = () => { + let longpressDelay = null; + const longpressDelayDuration = 1000; + + document.addEventListener( + 'keydown', + e => { + if (e.ctrlKey || e.metaKey) { + longpressDelay = setTimeout( + this.handleShowShortcutIndex, + longpressDelayDuration, + ); + } + }, + { capture: true }, + ); + + document.addEventListener('keyup', () => { + clearTimeout(longpressDelay); + this.setState({ showShortcutIndex: false }); + }); + }; + componentDidMount() { const { service } = this.props; @@ -159,6 +193,8 @@ class TabItem extends Component { } }); } + + this.checkForLongPress(); } render() { @@ -235,8 +271,9 @@ class TabItem extends Component { ? messages.wakeUpService : messages.hibernateService, ), + // eslint-disable-next-line no-confusing-arrow click: () => - (service.isHibernating ? wakeUpService() : hibernateService()), + service.isHibernating ? wakeUpService() : hibernateService(), enabled: service.canHibernate, }, { @@ -281,7 +318,7 @@ class TabItem extends Component { service.unreadDirectMessageCount === 0 && service.isIndirectMessageBadgeEnabled && ( - )} + )} {service.isHibernating && ( )} @@ -327,6 +364,9 @@ class TabItem extends Component { /> )} + {shortcutIndex && this.state.showShortcutIndex && ( + {shortcutIndex} + )} ); } -- cgit v1.2.3-54-g00ecf