Fix modal footer to react to quoted posts

This commit is contained in:
noellabo 2021-01-04 00:28:17 +09:00
parent 84986895a3
commit 6119a9ce97
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);
}
handleOpenVideoQuote = (options) => {
const status = this._properQuoteStatus();
this.props.onOpenVideo(status.get('id'), status.getIn(['media_attachments', 0]), options);
}
handleOpenMedia = (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 => {
const { onOpenMedia, onOpenVideo } = this.props;
const status = this._properStatus();
@ -323,14 +332,18 @@ class Status extends ImmutablePureComponent {
}
}
handleRef = c => {
this.node = c;
_properQuoteStatus () {
const status = this._properStatus();
if (status.get('quote', null) !== null && typeof status.get('quote') === 'object') {
return status.get('quote');
} else {
return status;
}
}
_properQuoteStatus () {
const { status } = this.props;
return status.get('quote');
handleRef = c => {
this.node = c;
}
render () {
@ -514,7 +527,7 @@ class Status extends ImmutablePureComponent {
const visibilityIcon = visibilityIconInfo[status.get('visibility')];
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_media = null;
@ -565,7 +578,7 @@ class Status extends ImmutablePureComponent {
height={110}
inline
sensitive={quote_status.get('sensitive')}
onOpenVideo={this.handleOpenVideo}
onOpenVideo={this.handleOpenVideoQuote}
cacheWidth={this.props.cacheMediaWidth}
deployPictureInPicture={pictureInPicture.get('available') ? this.handleDeployPictureInPicture : undefined}
visible={this.state.showQuoteMedia}
@ -583,7 +596,7 @@ class Status extends ImmutablePureComponent {
media={quote_status.get('media_attachments')}
sensitive={quote_status.get('sensitive')}
height={110}
onOpenMedia={this.handleOpenMedia}
onOpenMedia={this.handleOpenMediaQuote}
cacheWidth={this.props.cacheMediaWidth}
defaultWidth={this.props.cachedMediaWidth}
visible={this.state.showQuoteMedia}

View file

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

View file

@ -313,6 +313,14 @@ class Status extends ImmutablePureComponent {
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 => {
const { status } = this.props;
@ -584,6 +592,8 @@ class Status extends ImmutablePureComponent {
status={status}
onOpenVideo={this.handleOpenVideo}
onOpenMedia={this.handleOpenMedia}
onOpenVideoQuote={this.handleOpenVideoQuote}
onOpenMediaQuote={this.handleOpenMediaQuote}
onToggleHidden={this.handleToggleHidden}
domain={domain}
showMedia={this.state.showMedia}