This repository has been archived on 2024-10-29. You can view files and clone it, but cannot push or open issues or pull requests.
Files
scoresaber-reloadedv3/src/components/loaders/database-loader.tsx

35 lines
941 B
TypeScript
Raw Normal View History

2024-09-08 22:35:32 +01:00
"use client";
2024-09-30 08:48:58 +01:00
import {createContext, useEffect, useState} from "react";
import Database, {db} from "../../common/database/database";
2024-09-08 22:35:32 +01:00
import FullscreenLoader from "./fullscreen-loader";
/**
* The context for the database. This is used to access the database from within the app.
*/
export const DatabaseContext = createContext<Database | undefined>(undefined);
type Props = {
children: React.ReactNode;
};
export default function DatabaseLoader({ children }: Props) {
const [database, setDatabase] = useState<Database | undefined>(undefined);
useEffect(() => {
const before = performance.now();
setDatabase(db);
console.log(`Loaded database in ${performance.now() - before}ms`);
}, []);
return (
<DatabaseContext.Provider value={database}>
2024-09-13 13:45:04 +01:00
{database == undefined ? (
<FullscreenLoader reason="Loading database..." />
) : (
children
)}
2024-09-08 22:35:32 +01:00
</DatabaseContext.Provider>
);
}