Server selector

This commit is contained in:
2026-08-18 16:09:08 +02:00
parent a14f6d3a0f
commit 06ca3a4bae
3 changed files with 45 additions and 12 deletions
+27 -10
View File
@@ -1,4 +1,6 @@
import Enclave from "@/app/app";
import EnclaveServer from "@/app/server";
import { getHTTPUrl, getWSUrl } from "@/lib/serverList";
export default function ServerList({
appRef,
@@ -7,16 +9,31 @@ export default function ServerList({
}) {
return (
<aside className="bg-card w-16 h-screen p-2 flex flex-col gap-2.5">
{appRef.current?.serverList.map((server) => (
<img
src={`http://${server.hostname}/icon`}
className={
server.publicKey === appRef.current?.server?.hostname
? "rounded-lg"
: "rounded-full"
}
/>
))}
{appRef.current?.serverList.map((server) => {
return (
<img
src={getHTTPUrl(server, "/icon")}
className={
server.publicKey === appRef.current?.server?.hostname
? "rounded-lg"
: "rounded-full"
}
onClick={async () => {
if (!appRef.current) {
console.error("AppRef is not initialized yet");
return;
}
if (appRef.current.server) {
appRef.current.server.disconnect();
}
appRef.current.server = new EnclaveServer(getWSUrl(server));
}}
/>
);
})}
</aside>
);
}
+17 -1
View File
@@ -5,7 +5,7 @@ export interface KnownServer {
description: string;
publicKey: string;
hostname: string;
isWss: boolean;
isSecure: boolean;
}
export async function saveServerList(servers: KnownServer[]): Promise<void> {
@@ -15,3 +15,19 @@ export async function saveServerList(servers: KnownServer[]): Promise<void> {
export async function getServerList(): Promise<KnownServer[]> {
return await invoke("get_server_list");
}
export function getHTTPUrl(server: KnownServer, path: string) {
const hostname = server.hostname.includes(":")
? server.hostname
: server.hostname + ":3415";
return (server.isSecure ? "https://" : "http://") + hostname + path;
}
export function getWSUrl(server: KnownServer) {
const hostname = server.hostname.includes(":")
? server.hostname
: server.hostname + ":3415";
return (server.isSecure ? "wss://" : "ws://") + hostname;
}