Status: display a placeholder Card on own links, poll for updated card See merge request soapbox-pub/soapbox-fe!874merge-requests/877/head
commit
0f2d464182
@ -0,0 +1,29 @@
|
||||
import React from 'react';
|
||||
import { randomIntFromInterval, generateText } from '../utils';
|
||||
|
||||
export default class PlaceholderCard extends React.Component {
|
||||
|
||||
shouldComponentUpdate() {
|
||||
// Re-rendering this will just cause the random lengths to jump around.
|
||||
// There's basically no reason to ever do it.
|
||||
return false;
|
||||
}
|
||||
|
||||
render() {
|
||||
return (
|
||||
<div className='status-card status-card--placeholder'>
|
||||
<div className='status-card__image' />
|
||||
<div className='status-card__content'>
|
||||
<span className='status-card__title'>{generateText(randomIntFromInterval(5, 25))}</span>
|
||||
<p className='status-card__description'>
|
||||
{generateText(randomIntFromInterval(5, 75))}
|
||||
</p>
|
||||
<span className='status-card__host'>
|
||||
{generateText(randomIntFromInterval(5, 15))}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
export const getFirstExternalLink = status => {
|
||||
try {
|
||||
// Pulled from Pleroma's media parser
|
||||
const selector = 'a:not(.mention,.hashtag,.attachment,[rel~="tag"])';
|
||||
const element = document.createElement('div');
|
||||
element.innerHTML = status.content;
|
||||
return element.querySelector(selector);
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
export const shouldHaveCard = status => {
|
||||
return Boolean(getFirstExternalLink(status));
|
||||
};
|
Loading…
Reference in new issue