diff --git a/index.ts b/index.ts index 85f582d..d07beea 100644 --- a/index.ts +++ b/index.ts @@ -1,16 +1,8 @@ import type { ServerWebSocket } from "bun"; import { callTicket, completeTicket, getCurrentTicket, getDisplayTickets, getLogEntries, getTicket, noShowTicket } from "./redis"; -let IP_TO_ROOMS: Record = {}; - -const iprooms = await Bun.file("./iprooms.csv").text(); -const lines = iprooms.split("\n"); -for (const line of lines.slice(1)) { - const [ip, room] = line.split(","); - if (ip && room) { - IP_TO_ROOMS[ip.trim()] = room.trim(); - } -} +const roomstxt = await Bun.file("./rooms.txt").text(); +const ROOMS = roomstxt.split("\n"); const MOTD = process.env.MOTD || "50;"; @@ -36,22 +28,7 @@ Bun.serve({ async message(ws, message) { console.log("Received message:", message); const data = JSON.parse(message.toString()); - if (data.type === "hello") {} - else if (data.type === "my-room") { - console.log("Client requested room for IP:", ws.remoteAddress); - const room = IP_TO_ROOMS[ws.remoteAddress]; - if (!room) { - return void ws.send(JSON.stringify({ type: "error", code: -1, message: "No room" })); - } - ws.send(JSON.stringify({ type: "my-room", room }) ); - // } else if (data.type === "create-ticket") { - // const ticket = await getTicket(data.ticket); - // if(!ticket || ticket.status == "completed" || ticket.status == "no-show") { - // await createTicket(data.ticket); - // ws.send(JSON.stringify({ type: "create-ticket", status: "created", ticket, num: data.ticket }) ); - // return; - // } - // ws.send(JSON.stringify({ type: "error", code: -2, message: "Ticket already exists and is not completed or no-show", ticket, num: data.ticket })); + if (data.type === "hello") { } else if (data.type === "call-ticket") { // const ticket = await getTicket(data.ticket); // if(!ticket || ticket.status == "completed" || ticket.status == "no-show") { @@ -115,6 +92,8 @@ Bun.serve({ console.log("Added display socket. Total:", displaySockets.length); ws.send(JSON.stringify({ type: "display", tickets: await getDisplayTickets(), motd: MOTD })); } + } else if (data.type == "rooms") { + ws.send(JSON.stringify({ type: "rooms", rooms: ROOMS })); } }, // a message is received open(ws) { diff --git a/rooms.txt b/rooms.txt new file mode 100644 index 0000000..70a1dba --- /dev/null +++ b/rooms.txt @@ -0,0 +1,2 @@ +Test +Test 2 \ No newline at end of file diff --git a/web/src/lib/AppSidebar.svelte b/web/src/lib/AppSidebar.svelte index b1be261..181facb 100644 --- a/web/src/lib/AppSidebar.svelte +++ b/web/src/lib/AppSidebar.svelte @@ -2,8 +2,9 @@ import SearchForm from "./search-form.svelte"; import VersionSwitcher from "./switcher.svelte"; import * as Sidebar from "$lib/components/ui/sidebar/index.js"; - import type { ComponentProps } from "svelte"; + import { onMount, type ComponentProps } from "svelte"; import { page } from "$app/state"; + import { eventTarget } from "./ws.svelte"; let { ref = $bindable(null), ...restProps }: ComponentProps = $props(); type NavData = { @@ -36,6 +37,10 @@ url: "#", items: [ { + title: "Laden...", + url: "#" + }, + /*{ title: "1", url: "/room/1", }, @@ -74,7 +79,7 @@ { title: "Empfang 2", url: "/room/Empfang%202", - }, + },*/ ], }, // { @@ -103,10 +108,10 @@ title: "Logs", url: "/log", }, - { + /*{ title: "Admin", url: "/admin", - }, + },*/ ] } ], @@ -136,17 +141,37 @@ title: "Logs", url: "/log", }, - { + /*{ title: "Admin", url: "/", isActive: true - }, + },*/ ] } ] }; const data = $derived(isAdmin ? adminData : regularData); + + onMount(() => { + eventTarget.addEventListener("rooms", (e) => { + if(e instanceof CustomEvent) { + const rooms = e.detail.rooms; + data.navMain[0].items = rooms.map((room: string) => ({ + title: room, + url: `/room/${encodeURIComponent(room)}` + })); + } + }); + + eventTarget.addEventListener("hello", (e) => { + eventTarget.dispatchEvent(new CustomEvent("send", { + detail: { + type: "rooms" + } + })) + }) + }) diff --git a/web/src/routes/(manage)/+page.svelte b/web/src/routes/(manage)/+page.svelte index b40d4f2..1072bb7 100644 --- a/web/src/routes/(manage)/+page.svelte +++ b/web/src/routes/(manage)/+page.svelte @@ -1,43 +1,14 @@ -

Willkommen zu NextUp!

-Sie werden zu Ihrem Raum weitergeleitet. -{#if noRoom} - Kein Raum verfügbar -{/if} \ No newline at end of file