Added basic url previews
This commit is contained in:
parent
01999ddef2
commit
e0eae9606a
2 changed files with 78 additions and 19 deletions
|
@ -416,31 +416,79 @@ function Embed({ link }) {
|
||||||
return <YoutubeEmbed link={link} />;
|
return <YoutubeEmbed link={link} />;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: url preview
|
const [urlPreviewInfo, setUrlPreviewInfo] = useState({});
|
||||||
// const [urlPreviewInfo, setUrlPreviewInfo] = useState(null);
|
const mx = initMatrix.matrixClient;
|
||||||
// const mx = initMatrix.matrixClient;
|
|
||||||
|
|
||||||
// useEffect(() => {
|
useEffect(() => {
|
||||||
// let unmounted = false;
|
let unmounted = false;
|
||||||
|
|
||||||
// async function getThumbnail() {
|
async function getUrlPreview() {
|
||||||
// const info = await mx.getUrlPreview(link, 0);
|
const info = await mx.getUrlPreview(link, 0);
|
||||||
// console.log('DEBUG', info);
|
if (unmounted) return;
|
||||||
// if (unmounted) return;
|
setUrlPreviewInfo(info);
|
||||||
|
}
|
||||||
|
|
||||||
// setUrlPreviewInfo(info);
|
getUrlPreview();
|
||||||
// }
|
|
||||||
|
|
||||||
// getThumbnail();
|
return () => {
|
||||||
|
unmounted = true;
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
// return () => {
|
if (urlPreviewInfo !== undefined) {
|
||||||
// unmounted = true;
|
// Image only embed
|
||||||
// };
|
if (urlPreviewInfo['og:image'] != null && urlPreviewInfo['og:image:width'] != null && urlPreviewInfo['og:image:height'] != null && urlPreviewInfo['og:title'] == null && urlPreviewInfo['og:description'] == null) {
|
||||||
// });
|
return (
|
||||||
|
<div className="file-container">
|
||||||
|
<Image
|
||||||
|
link={mx.mxcUrlToHttp(urlPreviewInfo['og:image'])}
|
||||||
|
height={urlPreviewInfo['og:image:height']}
|
||||||
|
width={urlPreviewInfo['og:image:width']}
|
||||||
|
name={urlPreviewInfo['og:image:alt'] || urlPreviewInfo['og:title'] || urlPreviewInfo['og:site_name'] || ''}
|
||||||
|
type={urlPreviewInfo['og:image:type']}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// if (urlPreviewInfo !== null) {
|
let embedTitle;
|
||||||
// return <div>url preview here!/div>;
|
|
||||||
// }
|
if (urlPreviewInfo['og:site_name'] != null && urlPreviewInfo['og:title'] != null) {
|
||||||
|
embedTitle = `${urlPreviewInfo['og:site_name']} - ${urlPreviewInfo['og:title']}`;
|
||||||
|
} else {
|
||||||
|
embedTitle = urlPreviewInfo['og:title'] || urlPreviewInfo['og:site_name'];
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="file-container">
|
||||||
|
<div className="embed-container">
|
||||||
|
<div className="embed-text">
|
||||||
|
{(embedTitle != null) && (
|
||||||
|
<Text className="embed-title" variant="h2">
|
||||||
|
{embedTitle}
|
||||||
|
</Text>
|
||||||
|
)}
|
||||||
|
|
||||||
|
{(urlPreviewInfo['og:description'] != null) && (
|
||||||
|
<Text className="embed-description" variant="b3">
|
||||||
|
{urlPreviewInfo['og:description']}
|
||||||
|
</Text>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{urlPreviewInfo['og:image'] != null && urlPreviewInfo['og:image:width'] != null && urlPreviewInfo['og:image:height'] != null && (
|
||||||
|
<Image
|
||||||
|
link={mx.mxcUrlToHttp(urlPreviewInfo['og:image'])}
|
||||||
|
height={urlPreviewInfo['og:image:height']}
|
||||||
|
width={urlPreviewInfo['og:image:width']}
|
||||||
|
name={urlPreviewInfo['og:image:alt'] || urlPreviewInfo['og:title'] || urlPreviewInfo['og:site_name'] || ''}
|
||||||
|
type={urlPreviewInfo['og:image:type']}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -88,3 +88,14 @@
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.embed-container {
|
||||||
|
color: var(--tc-surface-low);
|
||||||
|
background-color: var(--bg-surface-hover);
|
||||||
|
border-radius: calc(var(--bo-radius) / 2);
|
||||||
|
padding: 15px;
|
||||||
|
|
||||||
|
.embed-text {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue