diff --git a/app/javascript/flavours/glitch/components/status.js b/app/javascript/flavours/glitch/components/status.js
index e7bf1f4d09..23cdc01675 100644
--- a/app/javascript/flavours/glitch/components/status.js
+++ b/app/javascript/flavours/glitch/components/status.js
@@ -376,6 +376,22 @@ class Status extends ImmutablePureComponent {
this.props.onOpenVideo(media, startTime);
}
+ handleHotkeyOpenMedia = e => {
+ const { status, onOpenMedia, onOpenVideo } = this.props;
+
+ e.preventDefault();
+
+ if (status.get('media_attachments').size > 0) {
+ if (status.getIn(['media_attachments', 0, 'type']) === 'audio') {
+ // TODO: toggle play/paused?
+ } else 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.props.status, this.context.router.history);
@@ -503,6 +519,7 @@ class Status extends ImmutablePureComponent {
bookmark: this.handleHotkeyBookmark,
toggleCollapse: this.handleHotkeyCollapse,
toggleSensitive: this.handleHotkeyToggleSensitive,
+ openMedia: this.handleHotkeyOpenMedia,
};
if (hidden) {
diff --git a/app/javascript/flavours/glitch/features/keyboard_shortcuts/index.js b/app/javascript/flavours/glitch/features/keyboard_shortcuts/index.js
index e40dbf44e6..bc75712000 100644
--- a/app/javascript/flavours/glitch/features/keyboard_shortcuts/index.js
+++ b/app/javascript/flavours/glitch/features/keyboard_shortcuts/index.js
@@ -67,6 +67,10 @@ class KeyboardShortcuts extends ImmutablePureComponent {
enter, o |
|
+
+ e |
+ |
+
x |
|
diff --git a/app/javascript/flavours/glitch/features/status/index.js b/app/javascript/flavours/glitch/features/status/index.js
index 508510c4ef..322f924773 100644
--- a/app/javascript/flavours/glitch/features/status/index.js
+++ b/app/javascript/flavours/glitch/features/status/index.js
@@ -320,6 +320,22 @@ class Status extends ImmutablePureComponent {
this.props.dispatch(openModal('VIDEO', { media, time }));
}
+ handleHotkeyOpenMedia = e => {
+ const { status } = this.props;
+
+ e.preventDefault();
+
+ if (status.get('media_attachments').size > 0) {
+ if (status.getIn(['media_attachments', 0, 'type']) === 'audio') {
+ // TODO: toggle play/paused?
+ } else if (status.getIn(['media_attachments', 0, 'type']) === 'video') {
+ this.handleOpenVideo(status.getIn(['media_attachments', 0]), 0);
+ } else {
+ this.handleOpenMedia(status.get('media_attachments'), 0);
+ }
+ }
+ }
+
handleMuteClick = (account) => {
this.props.dispatch(initMuteModal(account));
}
@@ -529,6 +545,7 @@ class Status extends ImmutablePureComponent {
openProfile: this.handleHotkeyOpenProfile,
toggleSpoiler: this.handleExpandedToggle,
toggleSensitive: this.handleHotkeyToggleSensitive,
+ openMedia: this.handleHotkeyOpenMedia,
};
return (
diff --git a/app/javascript/flavours/glitch/features/ui/index.js b/app/javascript/flavours/glitch/features/ui/index.js
index 7d6c5f6137..5c861fdee9 100644
--- a/app/javascript/flavours/glitch/features/ui/index.js
+++ b/app/javascript/flavours/glitch/features/ui/index.js
@@ -107,6 +107,7 @@ const keyMap = {
bookmark: 'd',
toggleCollapse: 'shift+x',
toggleSensitive: 'h',
+ openMedia: 'e',
};
class SwitchingColumnsArea extends React.PureComponent {
diff --git a/app/javascript/flavours/glitch/features/video/index.js b/app/javascript/flavours/glitch/features/video/index.js
index 39dab7ec75..049baaee73 100644
--- a/app/javascript/flavours/glitch/features/video/index.js
+++ b/app/javascript/flavours/glitch/features/video/index.js
@@ -488,7 +488,7 @@ class Video extends React.PureComponent {