From 4b4e815e40c32aefd5ac26862af519bb19afbead Mon Sep 17 00:00:00 2001 From: ThibG Date: Sat, 28 Aug 2021 14:17:14 +0200 Subject: [PATCH] Add hotkey for opening media files --- app/soapbox/components/status.js | 16 +++++++++++++ app/soapbox/features/status/index.js | 16 +++++++++++++ .../features/ui/components/hotkeys_modal.js | 24 +++++++++++-------- app/soapbox/features/ui/index.js | 1 + app/soapbox/features/video/index.js | 2 +- 5 files changed, 48 insertions(+), 11 deletions(-) diff --git a/app/soapbox/components/status.js b/app/soapbox/components/status.js index 151a3e926..95c7ffb0c 100644 --- a/app/soapbox/components/status.js +++ b/app/soapbox/components/status.js @@ -213,6 +213,21 @@ class Status extends ImmutablePureComponent { this.props.OnOpenAudio(media, startTime); } + handleHotkeyOpenMedia = e => { + const { onOpenMedia, onOpenVideo } = this.props; + const status = this._properStatus(); + + e.preventDefault(); + + if (status.get('media_attachments').size > 0) { + if (status.getIn(['media_attachments', 0, 'type']) === 'video') { + onOpenVideo(status.getIn(['media_attachments', 0]), 0); + } else { + onOpenMedia(status.get('media_attachments'), 0); + } + } + } + handleHotkeyReply = e => { e.preventDefault(); this.props.onReply(this._properStatus(), this.context.router.history); @@ -461,6 +476,7 @@ class Status extends ImmutablePureComponent { moveDown: this.handleHotkeyMoveDown, toggleHidden: this.handleHotkeyToggleHidden, toggleSensitive: this.handleHotkeyToggleSensitive, + openMedia: this.handleHotkeyOpenMedia, react: this.handleHotkeyReact, }; diff --git a/app/soapbox/features/status/index.js b/app/soapbox/features/status/index.js index 5bac4fff9..03890cb26 100644 --- a/app/soapbox/features/status/index.js +++ b/app/soapbox/features/status/index.js @@ -263,6 +263,21 @@ class Status extends ImmutablePureComponent { this.props.dispatch(openModal('VIDEO', { media, time })); } + handleHotkeyOpenMedia = e => { + const { onOpenMedia, onOpenVideo } = this.props; + const status = this._properStatus(); + + e.preventDefault(); + + if (status.get('media_attachments').size > 0) { + if (status.getIn(['media_attachments', 0, 'type']) === 'video') { + onOpenVideo(status.getIn(['media_attachments', 0]), 0); + } else { + onOpenMedia(status.get('media_attachments'), 0); + } + } + } + handleMuteClick = (account) => { this.props.dispatch(initMuteModal(account)); } @@ -548,6 +563,7 @@ class Status extends ImmutablePureComponent { openProfile: this.handleHotkeyOpenProfile, toggleHidden: this.handleHotkeyToggleHidden, toggleSensitive: this.handleHotkeyToggleSensitive, + openMedia: this.handleHotkeyOpenMedia, react: this.handleHotkeyReact, }; diff --git a/app/soapbox/features/ui/components/hotkeys_modal.js b/app/soapbox/features/ui/components/hotkeys_modal.js index c646a0923..6d1434135 100644 --- a/app/soapbox/features/ui/components/hotkeys_modal.js +++ b/app/soapbox/features/ui/components/hotkeys_modal.js @@ -62,12 +62,8 @@ class HotkeysModal extends ImmutablePureComponent { - x - - - - h - + a + @@ -78,6 +74,14 @@ class HotkeysModal extends ImmutablePureComponent { + + x + + + + h + + up, k @@ -106,10 +110,6 @@ class HotkeysModal extends ImmutablePureComponent { esc - - g + h - - @@ -119,6 +119,10 @@ class HotkeysModal extends ImmutablePureComponent { + + + + diff --git a/app/soapbox/features/ui/index.js b/app/soapbox/features/ui/index.js index 35c768593..010242b0d 100644 --- a/app/soapbox/features/ui/index.js +++ b/app/soapbox/features/ui/index.js @@ -155,6 +155,7 @@ const keyMap = { goToRequests: 'g r', toggleHidden: 'x', toggleSensitive: 'h', + openMedia: 'a', }; class SwitchingColumnsArea extends React.PureComponent { diff --git a/app/soapbox/features/video/index.js b/app/soapbox/features/video/index.js index 2b70d6db3..286b9755e 100644 --- a/app/soapbox/features/video/index.js +++ b/app/soapbox/features/video/index.js @@ -461,7 +461,7 @@ class Video extends React.PureComponent {
- +
g + h
g + n