From 0ad5e387a1182efb2c91c4235117eb791e76effb Mon Sep 17 00:00:00 2001 From: Kieran Date: Thu, 22 Jun 2023 12:17:36 +0100 Subject: [PATCH] Optimize home page loading --- package.json | 1 + src/element/video-tile.tsx | 8 +++++--- yarn.lock | 5 +++++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 2b0c8ef..292f091 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "hls.js": "^1.4.6", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-intersection-observer": "^9.5.1", "react-router-dom": "^6.13.0", "react-scripts": "5.0.1", "web-vitals": "^2.1.0" diff --git a/src/element/video-tile.tsx b/src/element/video-tile.tsx index ac51d13..af8a6da 100644 --- a/src/element/video-tile.tsx +++ b/src/element/video-tile.tsx @@ -2,8 +2,10 @@ import { Link } from "react-router-dom"; import { Profile } from "./profile"; import "./video-tile.css"; import { NostrEvent, encodeTLV, NostrPrefix } from "@snort/system"; +import { useInView } from "react-intersection-observer"; export function VideoTile({ ev }: { ev: NostrEvent }) { + const { inView, ref } = useInView({ triggerOnce: true }); const id = ev.tags.find(a => a[0] === "d")?.[1]!; const title = ev.tags.find(a => a[0] === "title")?.[1]; const image = ev.tags.find(a => a[0] === "image")?.[1]; @@ -11,9 +13,9 @@ export function VideoTile({ ev }: { ev: NostrEvent }) { const isLive = status === "live"; const link = encodeTLV(NostrPrefix.Address, id, undefined, ev.kind, ev.pubkey); - return + return
{status} @@ -21,7 +23,7 @@ export function VideoTile({ ev }: { ev: NostrEvent }) {

{title}

- + {inView && }
} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index b4c540b..4f5bab3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7739,6 +7739,11 @@ react-error-overlay@^6.0.11: resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== +react-intersection-observer@^9.5.1: + version "9.5.1" + resolved "https://registry.yarnpkg.com/react-intersection-observer/-/react-intersection-observer-9.5.1.tgz#63a6d7c45f7251610ad2f5a5abb85204ee0926ac" + integrity sha512-YwcNF/4WsMAG1rLVDQHSbpdEW9vDaIl4QW88d+vqeXNUewFV4AJDQB14oHpAJ3rRCnKRmwu3nqfwwYe6wioNIg== + react-is@^16.13.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"