44 lines
1.3 KiB
TypeScript
44 lines
1.3 KiB
TypeScript
/**
|
|
* @license
|
|
* SPDX-License-Identifier: AGPL-3.0-or-later
|
|
* This file is part of Wolfree.
|
|
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
|
*/
|
|
|
|
import React, { useEffect, useState } from "react";
|
|
|
|
const InputPreloader = () => {
|
|
const [showIframe, setShowIframe] = useState(false);
|
|
|
|
useEffect(() => {
|
|
const handleIframeLoad = () => {
|
|
// Show the iframe after a 3000ms delay
|
|
const timerId = setTimeout(() => setShowIframe(true), 3000);
|
|
// Cleanup the timer when the component unmounts
|
|
return () => clearTimeout(timerId);
|
|
};
|
|
|
|
window.scroll(0, 0);
|
|
|
|
window.addEventListener("load", handleIframeLoad);
|
|
|
|
// Cleanup the event listener when the component unmounts
|
|
return () => window.removeEventListener("load", handleIframeLoad);
|
|
}, []); // Empty dependency array means the effect runs only once after initial render
|
|
|
|
return (
|
|
<>
|
|
{/* Use a descriptive title for accessibility */}
|
|
{showIframe && (
|
|
<iframe
|
|
title="Input Page Preloader"
|
|
src="/input/"
|
|
style={{ display: "none" }}
|
|
/>
|
|
)}
|
|
</>
|
|
);
|
|
};
|
|
|
|
export default InputPreloader;
|