diff options
author | Claire <claire.github-309c@sitedethib.com> | 2021-08-11 17:49:10 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-11 17:49:10 +0200 |
commit | 0c24c865b785a557f43125c976090e271247a2b1 (patch) | |
tree | 8bcea6d1c11c14f90d52583fb9585ab07d1a8fa9 /app/javascript | |
parent | aaf24d3093d565461b0051d2238d8b74db63a041 (diff) |
Fix crash if a notification contains an unprocessed media attachment (#16573)
* Refactor AttachmentList * Do not crash if a notification contains an unprocessed media attachment Fixes #16530 * Fix spacing in compact form
Diffstat (limited to 'app/javascript')
-rw-r--r-- | app/javascript/mastodon/components/attachment_list.js | 36 |
1 files changed, 13 insertions, 23 deletions
diff --git a/app/javascript/mastodon/components/attachment_list.js b/app/javascript/mastodon/components/attachment_list.js index ebd696583..0e23889de 100644 --- a/app/javascript/mastodon/components/attachment_list.js +++ b/app/javascript/mastodon/components/attachment_list.js @@ -2,6 +2,8 @@ import React from 'react'; import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; import ImmutablePureComponent from 'react-immutable-pure-component'; +import { FormattedMessage } from 'react-intl'; +import classNames from 'classnames'; import Icon from 'mastodon/components/icon'; const filename = url => url.split('/').pop().split('#')[0].split('?')[0]; @@ -16,29 +18,13 @@ export default class AttachmentList extends ImmutablePureComponent { render () { const { media, compact } = this.props; - if (compact) { - return ( - <div className='attachment-list compact'> - <ul className='attachment-list__list'> - {media.map(attachment => { - const displayUrl = attachment.get('remote_url') || attachment.get('url'); - - return ( - <li key={attachment.get('id')}> - <a href={displayUrl} target='_blank' rel='noopener noreferrer'><Icon id='link' /> {filename(displayUrl)}</a> - </li> - ); - })} - </ul> - </div> - ); - } - return ( - <div className='attachment-list'> - <div className='attachment-list__icon'> - <Icon id='link' /> - </div> + <div className={classNames('attachment-list', { compact })}> + {!compact && ( + <div className='attachment-list__icon'> + <Icon id='link' /> + </div> + )} <ul className='attachment-list__list'> {media.map(attachment => { @@ -46,7 +32,11 @@ export default class AttachmentList extends ImmutablePureComponent { return ( <li key={attachment.get('id')}> - <a href={displayUrl} target='_blank' rel='noopener noreferrer'>{filename(displayUrl)}</a> + <a href={displayUrl} target='_blank' rel='noopener noreferrer'> + {compact && <Icon id='link' />} + {compact && ' ' } + {displayUrl ? filename(displayUrl) : <FormattedMessage id='attachments_list.unprocessed' defaultMessage='(unprocessed)' />} + </a> </li> ); })} |