matrix-art

An image gallery for Matrix
git clone git://archive.git.mtrnord.blog/MTRNord/matrix-art.git
Log | Files | Refs | README | LICENSE

commit 0ddb6377c037b8670b0320d44a7cb951dcb7dcd2
parent e0a637f483ff196955df83b89a02cf5498d0dfef
Author: MTRNord <mtrnord1@gmail.com>
Date:   Fri, 31 Dec 2021 04:14:10 +0100

SEO

Diffstat:
Mpages/Home.tsx | 1+
Mpages/index.tsx | 1+
Mpages/post/[id].tsx | 35+++++++++++++++++++++++++++--------
3 files changed, 29 insertions(+), 8 deletions(-)

diff --git a/pages/Home.tsx b/pages/Home.tsx @@ -134,6 +134,7 @@ export default class Home extends Component<Props, State>{ <div className='h-full bg-[#f8f8f8] dark:bg-[#06070D]'> <Head> <title key="title">Matrix Art | Home</title> + <meta property="og:title" content="Matrix Art | Home" key="og-title" /> </Head> <Header></Header> <main className='lg:pt-[108px] pt-[216px] z-0'> diff --git a/pages/index.tsx b/pages/index.tsx @@ -9,6 +9,7 @@ const App: NextPage = () => { <> <Head> <title key="title">Matrix Art</title> + <meta property="og:title" content="Matrix Art" key="og-title" /> <meta key="viewport" name="viewport" content="initial-scale=1.0, width=device-width" /> </Head> <React.StrictMode> diff --git a/pages/post/[id].tsx b/pages/post/[id].tsx @@ -150,6 +150,7 @@ class Post extends Component<Props, State> { <div className="h-full bg-[#fefefe]/[.95] dark:bg-[#14181E]/[.95]"> <Head> <title key="title">Matrix Art | Post not Found</title> + <meta property="og:title" content="Matrix Art | Post not Found" key="og-title" /> </Head> <Header></Header> <main className='h-full lg:pt-[108px] pt-[216px] z-0 flex items-center justify-center'> @@ -172,11 +173,12 @@ class Post extends Component<Props, State> { <div className="h-full bg-[#fefefe]/[.95] dark:bg-[#14181E]/[.95]"> <Head> <title key="title">Matrix Art | {post_title}</title> + <meta property="og:title" content={`Matrix Art | ${post_title}`} key="og-title" /> </Head> <Header></Header> <main className='flex-col h-full flex lg:pt-[108px] pt-[216px] z-0'> - {isImageGalleryEvent(image_event) ? this.renderImageGalleryEvent(image_event) : isImageEvent(image_event) ? this.renderSingleImageEvent(image_event) : <div key={(image_event as MatrixEventBase).event_id}></div>} + {isImageGalleryEvent(image_event) ? this.renderImageGalleryEvent(image_event, post_title) : isImageEvent(image_event) ? this.renderSingleImageEvent(image_event, post_title) : <div key={(image_event as MatrixEventBase).event_id}></div>} <div className="grow bg-[#f8f8f8] dark:bg-[#06070D] min-h-[400px]"> <h1 className="mx-16 my-4 text-6xl text-gray-900 dark:text-gray-200 font-bold">{post_title}</h1> <h3 className="mx-16 my-4 text-l text-gray-900 dark:text-gray-200 font-normal">{image_event.sender}</h3> @@ -193,6 +195,7 @@ class Post extends Component<Props, State> { <div className="h-full bg-[#fefefe]/[.95] dark:bg-[#14181E]/[.95]"> <Head> <title key="title">Matrix Art | Post not Found</title> + <meta property="og:title" content="Matrix Art | Post not Found" key="og-title" /> </Head> <Header></Header> <main className='h-full lg:pt-[108px] pt-[216px] z-0 flex items-center justify-center'> @@ -204,25 +207,41 @@ class Post extends Component<Props, State> { } - renderSingleImageEvent(imageEvent: ImageEvent) { + renderSingleImageEvent(imageEvent: ImageEvent, caption: string) { const url = this.context.client?.downloadLink(imageEvent.content["m.file"].url); if (!url) { return <></>; } - return this.renderImage(imageEvent.event_id, url); + return this.renderImage(imageEvent.event_id, + url, + caption, + imageEvent.content["m.file"].mimetype, + imageEvent.content["m.image"].width, + imageEvent.content["m.image"].height + ); } - renderImageGalleryEvent(imageEvent: ImageGalleryEvent) { + renderImageGalleryEvent(imageEvent: ImageGalleryEvent, caption: string) { return <div></div>; } // TODO make full size on click - renderImage(id: string, src: string) { + renderImage(id: string, src: string, caption: string, mime: string, w: number, h: number) { + // TODO proper alt return ( - <div className="flex justify-center p-10 bg-[#fefefe]/[.95] dark:bg-[#14181E]/[.95]"> - <img className="shadow-2xl max-w-3xl max-h-[871px] shadow-black cursor-zoom-in" src={src} key={id}></img> - </div> + <> + <Head> + <meta property="og:image" content={src} key="og-image" /> + <meta property="og:image:type" content={mime} key="og-image-type" /> + <meta property="og:image:alt" content={caption} key="og-image-alt" /> + <meta property="og:image:width" content={w.toString()} key="og-image-width" /> + <meta property="og:image:height" content={h.toString()} key="og-image-height" /> + </Head> + <div className="flex justify-center p-10 bg-[#fefefe]/[.95] dark:bg-[#14181E]/[.95]"> + <img alt={caption} title={caption} className="shadow-2xl max-w-3xl max-h-[871px] shadow-black cursor-zoom-in" src={src} key={id}></img> + </div> + </> ); } }