refactor(ui): Simplify cloud provider configuration and URL handling

This commit is contained in:
Adam Shiervani 2025-02-28 13:48:01 +01:00
parent c0c196eaf8
commit a8c5c1dd32
2 changed files with 18 additions and 27 deletions

View File

@ -3,7 +3,7 @@ import { InputFieldWithLabel } from "./InputField";
import { UsbConfigState } from "@/hooks/stores"; import { UsbConfigState } from "@/hooks/stores";
import { useEffect, useCallback, useState } from "react"; import { useEffect, useCallback, useState } from "react";
import { useJsonRpc } from "../hooks/useJsonRpc"; import { useJsonRpc } from "../hooks/useJsonRpc";
import { USBConfig } from "../routes/devices.$id.settings.hardware"; import { USBConfig } from "./UsbConfigSetting";
export default function UpdateUsbConfigModal({ export default function UpdateUsbConfigModal({
onSetUsbConfig, onSetUsbConfig,

View File

@ -27,22 +27,6 @@ export const loader = async () => {
return null; return null;
}; };
// Define hardcoded cloud providers with both API and app URLs
const CLOUD_PROVIDERS = [
{
value: "jetkvm",
apiUrl: "https://api.jetkvm.com",
appUrl: "https://app.jetkvm.com",
label: "JetKVM Cloud",
},
{
value: "custom",
apiUrl: "",
appUrl: "",
label: "Custom",
},
];
export default function SettingsAccessIndexRoute() { export default function SettingsAccessIndexRoute() {
const loaderData = useLoaderData() as LocalDevice | null; const loaderData = useLoaderData() as LocalDevice | null;
@ -63,16 +47,17 @@ export default function SettingsAccessIndexRoute() {
send("getCloudState", {}, resp => { send("getCloudState", {}, resp => {
if ("error" in resp) return console.error(resp.error); if ("error" in resp) return console.error(resp.error);
const cloudState = resp.result as CloudState; const cloudState = resp.result as CloudState;
setAdopted(cloudState.connected); setAdopted(cloudState.connected);
setCloudApiUrl(cloudState.url); setCloudApiUrl(cloudState.url);
if (cloudState.appUrl) setCloudAppUrl(cloudState.appUrl); if (cloudState.appUrl) setCloudAppUrl(cloudState.appUrl);
// Find if the API URL matches any of our predefined providers // Find if the API URL matches any of our predefined providers
const matchingProvider = CLOUD_PROVIDERS.find(p => p.apiUrl === cloudState.url); const isAPIJetKVMProd = cloudState.url === "https://api.jetkvm.com";
if (matchingProvider && matchingProvider.value !== "custom") { const isAppJetKVMProd = cloudState.appUrl === "https://app.jetkvm.com";
setSelectedProvider(matchingProvider.value);
if (isAPIJetKVMProd && isAppJetKVMProd) {
setSelectedProvider("jetkvm");
} else { } else {
setSelectedProvider("custom"); setSelectedProvider("custom");
} }
@ -129,10 +114,13 @@ export default function SettingsAccessIndexRoute() {
setSelectedProvider(value); setSelectedProvider(value);
// If selecting a predefined provider, update both URLs // If selecting a predefined provider, update both URLs
const provider = CLOUD_PROVIDERS.find(p => p.value === value); if (value === "jetkvm") {
if (provider && value !== "custom") { setCloudApiUrl("https://api.jetkvm.com");
setCloudApiUrl(provider.apiUrl); setCloudAppUrl("https://app.jetkvm.com");
setCloudAppUrl(provider.appUrl); } else {
if (cloudApiUrl || cloudAppUrl) return;
setCloudApiUrl("");
setCloudAppUrl("");
} }
}; };
@ -222,7 +210,10 @@ export default function SettingsAccessIndexRoute() {
size="SM" size="SM"
value={selectedProvider} value={selectedProvider}
onChange={e => handleProviderChange(e.target.value)} onChange={e => handleProviderChange(e.target.value)}
options={CLOUD_PROVIDERS.map(p => ({ value: p.value, label: p.label }))} options={[
{ value: "jetkvm", label: "JetKVM Cloud" },
{ value: "custom", label: "Custom" },
]}
/> />
</SettingsItem> </SettingsItem>
@ -311,7 +302,7 @@ export default function SettingsAccessIndexRoute() {
<div> <div>
<div className="space-y-2"> <div className="space-y-2">
<p className="text-sm text-slate-600 dark:text-slate-300"> <p className="text-sm text-slate-600 dark:text-slate-300">
Your device is adopted to JetKVM Cloud Your device is adopted to the Cloud
</p> </p>
<div> <div>
<Button <Button