2023-12-06 15:29:11 +00:00
|
|
|
import { StrictMode, useState } from "react";
|
2023-12-02 22:24:36 +00:00
|
|
|
import ReactDOM from 'react-dom/client';
|
|
|
|
|
import { APIContext, RqbitWebUI } from "./rqbit-webui-src/rqbit-web";
|
|
|
|
|
import { API } from "./api";
|
2023-12-06 12:14:26 +00:00
|
|
|
import { invoke } from "@tauri-apps/api";
|
2023-12-06 15:29:11 +00:00
|
|
|
import { RqbitDesktopConfig } from "./configuration";
|
|
|
|
|
import { ConfigModal } from "./configure";
|
2023-12-06 12:14:26 +00:00
|
|
|
|
2023-12-06 15:29:11 +00:00
|
|
|
async function get_version(): Promise<string> {
|
|
|
|
|
return invoke<string>("get_version");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async function get_default_config(): Promise<RqbitDesktopConfig> {
|
|
|
|
|
return invoke<RqbitDesktopConfig>("config_default");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const RqbitDesktop: React.FC<{
|
|
|
|
|
version: string,
|
|
|
|
|
defaultConfig: RqbitDesktopConfig,
|
|
|
|
|
}> = ({ version, defaultConfig }) => {
|
|
|
|
|
let [configured, setConfigured] = useState<boolean>(false);
|
|
|
|
|
|
|
|
|
|
if (configured) {
|
|
|
|
|
return <RqbitWebUI title={`Rqbit Desktop v${version}`}></RqbitWebUI>
|
|
|
|
|
}
|
|
|
|
|
return <ConfigModal handleOk={() => setConfigured(true)} initialConfig={defaultConfig}></ConfigModal>;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Promise.all([get_version(), get_default_config()]).then(([version, config]) => {
|
2023-12-06 12:14:26 +00:00
|
|
|
ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
|
|
|
|
|
<StrictMode>
|
|
|
|
|
<APIContext.Provider value={API}>
|
2023-12-06 15:29:11 +00:00
|
|
|
<RqbitDesktop version={version} defaultConfig={config} />
|
2023-12-06 12:14:26 +00:00
|
|
|
</APIContext.Provider>
|
|
|
|
|
</StrictMode>
|
|
|
|
|
);
|
2023-12-06 15:29:11 +00:00
|
|
|
})
|
2023-12-02 22:24:36 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|