diff --git a/src/app/_components/album-showcase.tsx b/src/app/_components/album-showcase.tsx index 3e66b90..e406b14 100644 --- a/src/app/_components/album-showcase.tsx +++ b/src/app/_components/album-showcase.tsx @@ -6,7 +6,9 @@ import { TrackByAlbum } from "./spotify-data"; import { api } from "@/trpc/react"; import { quantum } from "ldrs"; import { ring2 } from "ldrs"; +import { pulsar } from "ldrs"; +pulsar.register(); ring2.register(); quantum.register(); @@ -15,7 +17,15 @@ export default function AlbumShowcase({ album, position, tracks, -}: TrackByAlbum & { spookify: boolean }) { + place, + lastSpookyImageLoaded, + setLastSpookyImageLoaded, +}: TrackByAlbum & { + spookify: boolean; + place: number; + lastSpookyImageLoaded: number; + setLastSpookyImageLoaded: any; +}) { const imageSource = album.images[0] ? album.images[0].url : "https://via.placeholder.com/150"; @@ -77,7 +87,15 @@ export default function AlbumShowcase({ )?.match(/https:\/\/res.cloudinary.com\/[^"]+/); const spookyImageSource = spookyImageMatch ? spookyImageMatch[0] : null; - console.log(spookyImageSource); + + const onImageLoad = () => { + if (!spookyImageLoaded) { + setSpookyImageLoaded(true); + setLastSpookyImageLoaded((state: number) => + state > place ? state : place, + ); + } + }; return (
- {!!spookyImageSource && ( -Generating...
- > - ) : ( - <> -Getting image...
- > - )} + {(() => { + if (generateSpookyImage.data) { + if (lastSpookyImageLoaded < place - 1) { + return ( + <> +On queue...
+ > + ); + } + return ( + <> +Generating...
+ > + ); + } else { + return ( + <> +Getting image...
+ > + ); + } + })()}Generating...
@@ -128,7 +147,39 @@ export default function ArtistShowcase({ >Getting image...
> - )} + )} */} + {(() => { + if (generateSpookyImage.data) { + if (lastSpookyImageLoaded < place - 1) { + return ( + <> +On queue...
+ > + ); + } + return ( + <> +Generating...
+ > + ); + } + return ( + <> +Getting image...
+ > + ); + })()}