aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/services
diff options
context:
space:
mode:
authorLibravatar Markus Hatvan <markus_hatvan@aon.at>2021-10-01 15:52:52 +0200
committerLibravatar GitHub <noreply@github.com>2021-10-01 15:52:52 +0200
commiteeb8a8a35e65baf38e7d741aca8cf68355cb96c3 (patch)
tree6c1de396c8ed4a3b759fdd70fb6d8db12a4345de /src/components/services
parentfix: horizontal bar is a lot wider than what it should be (#2006) (diff)
downloadferdium-app-eeb8a8a35e65baf38e7d741aca8cf68355cb96c3.tar.gz
ferdium-app-eeb8a8a35e65baf38e7d741aca8cf68355cb96c3.tar.zst
ferdium-app-eeb8a8a35e65baf38e7d741aca8cf68355cb96c3.zip
feat: show service number on icon when first key of switch service hotkey held (#2007)
Diffstat (limited to 'src/components/services')
-rw-r--r--src/components/services/tabs/TabItem.js44
1 files changed, 42 insertions, 2 deletions
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 {
137 137
138 @observable isPollAnswered = false; 138 @observable isPollAnswered = false;
139 139
140 constructor(props) {
141 super(props);
142 this.state = {
143 showShortcutIndex: false,
144 };
145 }
146
147 handleShowShortcutIndex = () => {
148 this.setState({ showShortcutIndex: true });
149 };
150
151 checkForLongPress = () => {
152 let longpressDelay = null;
153 const longpressDelayDuration = 1000;
154
155 document.addEventListener(
156 'keydown',
157 e => {
158 if (e.ctrlKey || e.metaKey) {
159 longpressDelay = setTimeout(
160 this.handleShowShortcutIndex,
161 longpressDelayDuration,
162 );
163 }
164 },
165 { capture: true },
166 );
167
168 document.addEventListener('keyup', () => {
169 clearTimeout(longpressDelay);
170 this.setState({ showShortcutIndex: false });
171 });
172 };
173
140 componentDidMount() { 174 componentDidMount() {
141 const { service } = this.props; 175 const { service } = this.props;
142 176
@@ -159,6 +193,8 @@ class TabItem extends Component {
159 } 193 }
160 }); 194 });
161 } 195 }
196
197 this.checkForLongPress();
162 } 198 }
163 199
164 render() { 200 render() {
@@ -235,8 +271,9 @@ class TabItem extends Component {
235 ? messages.wakeUpService 271 ? messages.wakeUpService
236 : messages.hibernateService, 272 : messages.hibernateService,
237 ), 273 ),
274 // eslint-disable-next-line no-confusing-arrow
238 click: () => 275 click: () =>
239 (service.isHibernating ? wakeUpService() : hibernateService()), 276 service.isHibernating ? wakeUpService() : hibernateService(),
240 enabled: service.canHibernate, 277 enabled: service.canHibernate,
241 }, 278 },
242 { 279 {
@@ -281,7 +318,7 @@ class TabItem extends Component {
281 service.unreadDirectMessageCount === 0 && 318 service.unreadDirectMessageCount === 0 &&
282 service.isIndirectMessageBadgeEnabled && ( 319 service.isIndirectMessageBadgeEnabled && (
283 <span className="tab-item__message-count is-indirect">•</span> 320 <span className="tab-item__message-count is-indirect">•</span>
284 )} 321 )}
285 {service.isHibernating && ( 322 {service.isHibernating && (
286 <span className="tab-item__message-count hibernating">•</span> 323 <span className="tab-item__message-count hibernating">•</span>
287 )} 324 )}
@@ -327,6 +364,9 @@ class TabItem extends Component {
327 /> 364 />
328 </> 365 </>
329 )} 366 )}
367 {shortcutIndex && this.state.showShortcutIndex && (
368 <span className="tab-item__shortcut-index">{shortcutIndex}</span>
369 )}
330 </li> 370 </li>
331 ); 371 );
332 } 372 }