Skip to content

Commit f3b4dbc

Browse files
authored
feat: use the api url from device config (#161)
1 parent 8067922 commit f3b4dbc

21 files changed

+99
-32
lines changed

ui/.env.development

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,5 @@ VITE_SIGNAL_API=http://localhost:3000
22

33
VITE_CLOUD_APP=http://localhost:5173
44
VITE_CLOUD_API=http://localhost:3000
5+
6+
VITE_JETKVM_HEAD=

ui/.env.device

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,5 @@ VITE_SIGNAL_API= # Uses the KVM device's IP address as the signal API endpoint
22

33
VITE_CLOUD_APP=https://app.jetkvm.com
44
VITE_CLOUD_API=https://api.jetkvm.com
5+
6+
VITE_JETKVM_HEAD=<script src="/device/ui-config.js"></script>

ui/.env.production

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
VITE_SIGNAL_API=https://api.jetkvm.com
22

33
VITE_CLOUD_APP=https://app.jetkvm.com
4-
VITE_CLOUD_API=https://api.jetkvm.com
4+
VITE_CLOUD_API=https://api.jetkvm.com
5+
6+
VITE_JETKVM_HEAD=

ui/index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
<title>JetKVM</title>
2929
<link rel="stylesheet" href="/fonts/fonts.css" />
3030
<link rel="icon" href="/favicon.png" />
31+
%VITE_JETKVM_HEAD%
3132
<script>
3233
// Initial theme setup
3334
document.documentElement.classList.toggle(

ui/src/components/AuthLayout.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { useLocation, useNavigation, useSearchParams } from "react-router-dom";
66
import Fieldset from "@components/Fieldset";
77
import GridBackground from "@components/GridBackground";
88
import StepCounter from "@components/StepCounter";
9+
import { CLOUD_API } from "@/ui.config";
910

1011
type AuthLayoutProps = {
1112
title: string;
@@ -62,7 +63,7 @@ export default function AuthLayout({
6263
<Fieldset className="space-y-12">
6364
<div className="max-w-sm mx-auto space-y-4">
6465
<form
65-
action={`${import.meta.env.VITE_CLOUD_API}/oidc/google`}
66+
action={`${CLOUD_API}/oidc/google`}
6667
method="POST"
6768
>
6869
{/*This could be the KVM ID*/}

ui/src/components/Header.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import PeerConnectionStatusCard from "@components/PeerConnectionStatusCard";
1414
import api from "../api";
1515
import { isOnDevice } from "../main";
1616
import { Button, LinkButton } from "./Button";
17+
import { CLOUD_API, SIGNAL_API } from "@/ui.config";
1718

1819
interface NavbarProps {
1920
isLoggedIn: boolean;
@@ -37,8 +38,8 @@ export default function DashboardNavbar({
3738
const navigate = useNavigate();
3839
const onLogout = useCallback(async () => {
3940
const logoutUrl = isOnDevice
40-
? `${import.meta.env.VITE_SIGNAL_API}/auth/logout`
41-
: `${import.meta.env.VITE_CLOUD_API}/logout`;
41+
? `${SIGNAL_API}/auth/logout`
42+
: `${CLOUD_API}/logout`;
4243
const res = await api.POST(logoutUrl);
4344
if (!res.ok) return;
4445

ui/src/components/MountMediaDialog.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import { ExclamationTriangleIcon } from "@heroicons/react/20/solid";
3535
import notifications from "../notifications";
3636
import Fieldset from "./Fieldset";
3737
import { isOnDevice } from "../main";
38+
import { SIGNAL_API } from "@/ui.config";
3839

3940
export default function MountMediaModal({
4041
open,
@@ -1119,7 +1120,7 @@ function UploadFileView({
11191120
alreadyUploadedBytes: number,
11201121
dataChannel: string,
11211122
) {
1122-
const uploadUrl = `${import.meta.env.VITE_SIGNAL_API}/storage/upload?uploadId=${dataChannel}`;
1123+
const uploadUrl = `${SIGNAL_API}/storage/upload?uploadId=${dataChannel}`;
11231124

11241125
const xhr = new XMLHttpRequest();
11251126
xhr.open("POST", uploadUrl, true);

ui/src/components/sidebar/settings.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import LocalAuthPasswordDialog from "@/components/LocalAuthPasswordDialog";
2626
import { LocalDevice } from "@routes/devices.$id";
2727
import { useRevalidator } from "react-router-dom";
2828
import { ShieldCheckIcon } from "@heroicons/react/20/solid";
29+
import { CLOUD_APP, SIGNAL_API } from "@/ui.config";
2930

3031
export function SettingsItem({
3132
title,
@@ -366,7 +367,7 @@ export default function SettingsSidebar() {
366367
const getDevice = useCallback(async () => {
367368
try {
368369
const status = await api
369-
.GET(`${import.meta.env.VITE_SIGNAL_API}/device`)
370+
.GET(`${SIGNAL_API}/device`)
370371
.then(res => res.json() as Promise<LocalDevice>);
371372
setLocalDevice(status);
372373
} catch (error) {
@@ -677,7 +678,7 @@ export default function SettingsSidebar() {
677678
<div>
678679
<LinkButton
679680
to={
680-
import.meta.env.VITE_CLOUD_APP +
681+
CLOUD_APP +
681682
"/signup?deviceId=" +
682683
deviceId +
683684
`&returnTo=${location.href}adopt`

ui/src/main.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,13 @@ import LoginLocalRoute from "./routes/login-local";
2727
import WelcomeLocalModeRoute from "./routes/welcome-local.mode";
2828
import WelcomeRoute from "./routes/welcome-local";
2929
import WelcomeLocalPasswordRoute from "./routes/welcome-local.password";
30+
import { CLOUD_API } from "./ui.config";
3031

3132
export const isOnDevice = import.meta.env.MODE === "device";
3233
export const isInCloud = !isOnDevice;
3334

3435
export async function checkAuth() {
35-
const res = await fetch(`${import.meta.env.VITE_CLOUD_API}/me`, {
36+
const res = await fetch(`${CLOUD_API}/me`, {
3637
mode: "cors",
3738
credentials: "include",
3839
headers: { "Content-Type": "application/json" },

ui/src/routes/adopt.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { LoaderFunctionArgs, redirect } from "react-router-dom";
22
import api from "../api";
3+
import { CLOUD_API, CLOUD_APP, SIGNAL_API } from "@/ui.config";
34

45
const loader = async ({ request }: LoaderFunctionArgs) => {
56
const url = new URL(request.url);
@@ -11,17 +12,17 @@ const loader = async ({ request }: LoaderFunctionArgs) => {
1112
const clientId = searchParams.get("clientId");
1213

1314
const res = await api.POST(
14-
`${import.meta.env.VITE_SIGNAL_API}/cloud/register`,
15+
`${SIGNAL_API}/cloud/register`,
1516
{
1617
token: tempToken,
17-
cloudApi: import.meta.env.VITE_CLOUD_API,
18+
cloudApi: CLOUD_API,
1819
oidcGoogle,
1920
clientId,
2021
},
2122
);
2223

2324
if (!res.ok) throw new Error("Failed to register device");
24-
return redirect(import.meta.env.VITE_CLOUD_APP + `/devices/${deviceId}/setup`);
25+
return redirect(CLOUD_APP + `/devices/${deviceId}/setup`);
2526
};
2627

2728
export default function AdoptRoute() {

0 commit comments

Comments
 (0)