diff options
author | Thibaut Girka <thib@sitedethib.com> | 2019-06-09 12:07:23 +0200 |
---|---|---|
committer | ThibG <thib@sitedethib.com> | 2019-06-10 16:23:42 +0200 |
commit | d61a6271c68ecca1745f2683d25ec58573dd2819 (patch) | |
tree | adbff73f64f99a3460650e33c049c834274d2032 /app/javascript/flavours/glitch/components/display_name.js | |
parent | e16c8fbc7a2b5a866960a87bc8c950ad0d38f61b (diff) |
Add DM conversations mode similar to upstream
Diffstat (limited to 'app/javascript/flavours/glitch/components/display_name.js')
-rw-r--r-- | app/javascript/flavours/glitch/components/display_name.js | 44 |
1 files changed, 39 insertions, 5 deletions
diff --git a/app/javascript/flavours/glitch/components/display_name.js b/app/javascript/flavours/glitch/components/display_name.js index a26cff049..7f6ef5a5d 100644 --- a/app/javascript/flavours/glitch/components/display_name.js +++ b/app/javascript/flavours/glitch/components/display_name.js @@ -10,24 +10,56 @@ export default function DisplayName ({ className, inline, localDomain, + others, + onAccountClick, }) { const computedClass = classNames('display-name', { inline }, className); if (!account) return null; + let displayName, suffix; + let acct = account.get('acct'); + if (acct.indexOf('@') === -1 && localDomain) { acct = `${acct}@${localDomain}`; } - // The result. - return account ? ( + if (others && others.size > 0) { + displayName = others.take(2).map(a => ( + <a + href={a.get('url')} + target='_blank' + onClick={(e) => onAccountClick(a.get('id'), e)} + title={`@${a.get('acct')}`} + > + <bdi key={a.get('id')}> + <strong className='display-name__html' dangerouslySetInnerHTML={{ __html: a.get('display_name_html') }} /> + </bdi> + </a> + )).reduce((prev, cur) => [prev, ', ', cur]); + + if (others.size - 2 > 0) { + displayName.push(` +${others.size - 2}`); + } + + suffix = ( + <a href={account.get('url')} target='_blank' onClick={(e) => onAccountClick(account.get('id'), e)}> + <span className='display-name__account'>@{acct}</span> + </a> + ); + } else { + displayName = <bdi><strong className='display-name__html' dangerouslySetInnerHTML={{ __html: account.get('display_name_html') }} /></bdi>; + suffix = <span className='display-name__account'>@{acct}</span>; + } + + return ( <span className={computedClass}> - <bdi><strong className='display-name__html' dangerouslySetInnerHTML={{ __html: account.get('display_name_html') }} /></bdi> + {displayName} {inline ? ' ' : null} - <span className='display-name__account'>@{acct}</span> + {suffix} </span> - ) : null; + ); } // Props. @@ -36,4 +68,6 @@ DisplayName.propTypes = { className: PropTypes.string, inline: PropTypes.bool, localDomain: PropTypes.string, + others: ImmutablePropTypes.list, + handleClick: PropTypes.func, }; |