From c4dfe1155d0195b5db2e7068f65aa9d70c769e3c Mon Sep 17 00:00:00 2001 From: fantasticit Date: Thu, 2 Jun 2022 23:32:41 +0800 Subject: [PATCH] client: preload resource --- packages/client/src/pages/_app.tsx | 5 +++++ packages/client/src/tiptap/preload.ts | 13 +++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 packages/client/src/tiptap/preload.ts diff --git a/packages/client/src/pages/_app.tsx b/packages/client/src/pages/_app.tsx index 4a14bcab..d1aca703 100644 --- a/packages/client/src/pages/_app.tsx +++ b/packages/client/src/pages/_app.tsx @@ -10,6 +10,7 @@ import App from 'next/app'; import Head from 'next/head'; import React from 'react'; import { Hydrate, QueryClient, QueryClientProvider } from 'react-query'; +import { preload } from 'tiptap/preload'; class MyApp extends App<{ isMobile: boolean }> { state = { @@ -36,6 +37,10 @@ class MyApp extends App<{ isMobile: boolean }> { }; }; + componentDidMount() { + preload(); + } + render() { const { Component, pageProps, isMobile } = this.props; const { queryClient } = this.state; diff --git a/packages/client/src/tiptap/preload.ts b/packages/client/src/tiptap/preload.ts new file mode 100644 index 00000000..eabce178 --- /dev/null +++ b/packages/client/src/tiptap/preload.ts @@ -0,0 +1,13 @@ +import { DOCUMENT_COVERS } from '@think/constants'; + +const preloadImage = (url) => { + requestIdleCallback(() => { + const image = document.createElement('img'); + image.src = url; + }); +}; + +export function preload() { + if (typeof window === 'undefined') return; + DOCUMENT_COVERS.forEach(preloadImage); +}