chore: load sqlite online faster

This commit is contained in:
Stephen Zhou 2025-07-31 17:22:49 +08:00
parent e9c8d0b39c
commit 692cc6b4be
No known key found for this signature in database
1 changed files with 30 additions and 16 deletions

View File

@ -69,6 +69,8 @@ export const EnvironmentIndicator = () => {
}
if (DEV) {
const sqliteOnlineWebsite = "https://sqlite-online.vercel.app"
DebugRegistry.add("SQLite Online", () => {
window.presentModal({
title: "SQLite Online",
@ -76,29 +78,41 @@ if (DEV) {
<div className="h-full p-16" onClick={dismiss}>
<iframe
id="sql-viewer"
src="https://sqlite-online.vercel.app/"
src={sqliteOnlineWebsite}
className="size-full"
onLoad={() => {
const iframe = document.querySelector("#sql-viewer") as HTMLIFrameElement
if (!iframe) return
const win = iframe.contentWindow
if (!win) return
getDBFile()
.then(async (blob) => {
const arrayBuffer = await blob.arrayBuffer()
await new Promise((resolve) => setTimeout(resolve, 1000))
win.postMessage(
{
type: "invokeLoadDatabaseBuffer",
buffer: arrayBuffer,
},
"https://sqlite-online.vercel.app/",
)
})
.catch((error) => {
console.error("Failed to load database file into SQLite Online", error)
})
let isDatabaseLoaded = false
window.addEventListener("message", (event) => {
if (event.origin !== sqliteOnlineWebsite) {
console.warn("Blocked message from unauthorized origin:", event.origin)
return
}
if (event.data.type === "loadDatabaseBufferReady" && !isDatabaseLoaded) {
getDBFile()
.then(async (blob) => {
const arrayBuffer = await blob.arrayBuffer()
win.postMessage(
{
type: "invokeLoadDatabaseBuffer",
buffer: arrayBuffer,
},
sqliteOnlineWebsite,
)
isDatabaseLoaded = true
})
.catch((error) => {
console.error("Failed to load database file into SQLite Online", error)
})
}
})
}}
/>
</div>