rqbit/crates/librqbit/webui/src/main.tsx

39 lines
1 KiB
TypeScript
Raw Normal View History

2023-12-07 12:19:35 +00:00
import { StrictMode, useEffect, useState } from "react";
import ReactDOM from "react-dom/client";
import { RqbitWebUI } from "./rqbit-web";
import { customSetInterval } from "./helper/customSetInterval";
import { APIContext } from "./context";
2023-12-02 14:49:44 +00:00
import { API } from "./http-api";
import "./globals.css";
2023-12-01 18:08:41 +00:00
2023-12-07 12:19:35 +00:00
const RootWithVersion = () => {
let [version, setVersion] = useState<string>("");
useEffect(() => {
const refreshVersion = () =>
API.getVersion().then(
(version) => {
setVersion(version);
2024-08-21 22:42:00 +01:00
const title = `rqbit web - v${version}`;
document.title = title;
return 10000;
},
(e) => {
return 1000;
},
);
return customSetInterval(refreshVersion, 0);
}, []);
2023-12-07 12:19:35 +00:00
return (
2023-12-19 23:05:57 +00:00
<APIContext.Provider value={API}>
2024-08-21 22:42:00 +01:00
<RqbitWebUI title="rqbit" version={version} />
2023-12-19 23:05:57 +00:00
</APIContext.Provider>
);
};
2023-12-07 12:19:35 +00:00
ReactDOM.createRoot(document.getElementById("app") as HTMLInputElement).render(
2023-12-19 23:05:57 +00:00
<StrictMode>
<RootWithVersion />
</StrictMode>,
2023-12-02 15:03:25 +00:00
);