Fix modal footer to react to quoted posts

This commit is contained in:
noellabo 2021-01-04 00:28:17 +09:00
parent 8f234af62c
commit e99b8ef4bc
3 changed files with 40 additions and 11 deletions

View File

@ -245,10 +245,19 @@ class Status extends ImmutablePureComponent {
this.props.onOpenVideo(status.get('id'), status.getIn(['media_attachments', 0]), options); this.props.onOpenVideo(status.get('id'), status.getIn(['media_attachments', 0]), options);
} }
handleOpenVideoQuote = (options) => {
const status = this._properQuoteStatus();
this.props.onOpenVideo(status.get('id'), status.getIn(['media_attachments', 0]), options);
}
handleOpenMedia = (media, index) => { handleOpenMedia = (media, index) => {
this.props.onOpenMedia(this._properStatus().get('id'), media, index); this.props.onOpenMedia(this._properStatus().get('id'), media, index);
} }
handleOpenMediaQuote = (media, index) => {
this.props.onOpenMedia(this._properQuoteStatus().get('id'), media, index);
}
handleHotkeyOpenMedia = e => { handleHotkeyOpenMedia = e => {
const { onOpenMedia, onOpenVideo } = this.props; const { onOpenMedia, onOpenVideo } = this.props;
const status = this._properStatus(); const status = this._properStatus();
@ -323,14 +332,18 @@ class Status extends ImmutablePureComponent {
} }
} }
handleRef = c => { _properQuoteStatus () {
this.node = c; const status = this._properStatus();
if (status.get('quote', null) !== null && typeof status.get('quote') === 'object') {
return status.get('quote');
} else {
return status;
}
} }
_properQuoteStatus () { handleRef = c => {
const { status } = this.props; this.node = c;
return status.get('quote');
} }
render () { render () {
@ -514,7 +527,7 @@ class Status extends ImmutablePureComponent {
const visibilityIcon = visibilityIconInfo[status.get('visibility')]; const visibilityIcon = visibilityIconInfo[status.get('visibility')];
let quote = null; let quote = null;
if (status.get('quote', null) !== null) { if (status.get('quote', null) !== null && typeof status.get('quote') === 'object') {
let quote_status = status.get('quote'); let quote_status = status.get('quote');
let quote_media = null; let quote_media = null;
@ -565,7 +578,7 @@ class Status extends ImmutablePureComponent {
height={110} height={110}
inline inline
sensitive={quote_status.get('sensitive')} sensitive={quote_status.get('sensitive')}
onOpenVideo={this.handleOpenVideo} onOpenVideo={this.handleOpenVideoQuote}
cacheWidth={this.props.cacheMediaWidth} cacheWidth={this.props.cacheMediaWidth}
deployPictureInPicture={pictureInPicture.get('available') ? this.handleDeployPictureInPicture : undefined} deployPictureInPicture={pictureInPicture.get('available') ? this.handleDeployPictureInPicture : undefined}
visible={this.state.showQuoteMedia} visible={this.state.showQuoteMedia}
@ -583,7 +596,7 @@ class Status extends ImmutablePureComponent {
media={quote_status.get('media_attachments')} media={quote_status.get('media_attachments')}
sensitive={quote_status.get('sensitive')} sensitive={quote_status.get('sensitive')}
height={110} height={110}
onOpenMedia={this.handleOpenMedia} onOpenMedia={this.handleOpenMediaQuote}
cacheWidth={this.props.cacheMediaWidth} cacheWidth={this.props.cacheMediaWidth}
defaultWidth={this.props.cachedMediaWidth} defaultWidth={this.props.cachedMediaWidth}
visible={this.state.showQuoteMedia} visible={this.state.showQuoteMedia}

View File

@ -61,6 +61,8 @@ class DetailedStatus extends ImmutablePureComponent {
quote_muted: PropTypes.bool, quote_muted: PropTypes.bool,
onOpenMedia: PropTypes.func.isRequired, onOpenMedia: PropTypes.func.isRequired,
onOpenVideo: PropTypes.func.isRequired, onOpenVideo: PropTypes.func.isRequired,
onOpenMediaQuote: PropTypes.func.isRequired,
onOpenVideoQuote: PropTypes.func.isRequired,
onToggleHidden: PropTypes.func.isRequired, onToggleHidden: PropTypes.func.isRequired,
measureHeight: PropTypes.bool, measureHeight: PropTypes.bool,
onHeightChange: PropTypes.func, onHeightChange: PropTypes.func,
@ -95,6 +97,10 @@ class DetailedStatus extends ImmutablePureComponent {
this.props.onOpenVideo(this.props.status.getIn(['media_attachments', 0]), options); this.props.onOpenVideo(this.props.status.getIn(['media_attachments', 0]), options);
} }
handleOpenVideoQuote = (options) => {
this.props.onOpenVideoQuote(this.props.status.getIn(['quote', 'media_attachments', 0]), options);
}
handleExpandedToggle = () => { handleExpandedToggle = () => {
this.props.onToggleHidden(this.props.status); this.props.onToggleHidden(this.props.status);
} }
@ -199,7 +205,7 @@ class DetailedStatus extends ImmutablePureComponent {
width={300} width={300}
height={150} height={150}
inline inline
onOpenVideo={this.handleOpenVideo} onOpenVideo={this.handleOpenVideoQuote}
sensitive={quote_status.get('sensitive')} sensitive={quote_status.get('sensitive')}
visible={this.props.showQuoteMedia} visible={this.props.showQuoteMedia}
onToggleVisibility={this.props.onToggleQuoteMediaVisibility} onToggleVisibility={this.props.onToggleQuoteMediaVisibility}
@ -213,7 +219,7 @@ class DetailedStatus extends ImmutablePureComponent {
sensitive={quote_status.get('sensitive')} sensitive={quote_status.get('sensitive')}
media={quote_status.get('media_attachments')} media={quote_status.get('media_attachments')}
height={300} height={300}
onOpenMedia={this.props.onOpenMedia} onOpenMedia={this.props.onOpenMediaQuote}
visible={this.props.showQuoteMedia} visible={this.props.showQuoteMedia}
onToggleVisibility={this.props.onToggleQuoteMediaVisibility} onToggleVisibility={this.props.onToggleQuoteMediaVisibility}
quote quote

View File

@ -313,6 +313,14 @@ class Status extends ImmutablePureComponent {
this.props.dispatch(openModal('VIDEO', { statusId: this.props.status.get('id'), media, options })); this.props.dispatch(openModal('VIDEO', { statusId: this.props.status.get('id'), media, options }));
} }
handleOpenMediaQuote = (media, index) => {
this.props.dispatch(openModal('MEDIA', { statusId: this.props.status.getIn(['quote', 'id']), media, index }));
}
handleOpenVideoQuote = (media, options) => {
this.props.dispatch(openModal('VIDEO', { statusId: this.props.status.getIn(['quote', 'id']), media, options }));
}
handleHotkeyOpenMedia = e => { handleHotkeyOpenMedia = e => {
const { status } = this.props; const { status } = this.props;
@ -584,6 +592,8 @@ class Status extends ImmutablePureComponent {
status={status} status={status}
onOpenVideo={this.handleOpenVideo} onOpenVideo={this.handleOpenVideo}
onOpenMedia={this.handleOpenMedia} onOpenMedia={this.handleOpenMedia}
onOpenVideoQuote={this.handleOpenVideoQuote}
onOpenMediaQuote={this.handleOpenMediaQuote}
onToggleHidden={this.handleToggleHidden} onToggleHidden={this.handleToggleHidden}
domain={domain} domain={domain}
showMedia={this.state.showMedia} showMedia={this.state.showMedia}