From 482eec9d1f63833d1787f359debcc6684a587d1c Mon Sep 17 00:00:00 2001 From: "I. A. Naval" <790279+ianonavy@users.noreply.github.com> Date: Sat, 28 Jun 2025 16:00:02 -0400 Subject: [PATCH] Integrate open-webui's frontend --- src/lib/backend.ts | 13 ++- src/routes/+page.svelte | 192 +++++++++++++++++++++++++++++++++++----- 2 files changed, 180 insertions(+), 25 deletions(-) diff --git a/src/lib/backend.ts b/src/lib/backend.ts index f220e7d..2e740c4 100644 --- a/src/lib/backend.ts +++ b/src/lib/backend.ts @@ -51,7 +51,7 @@ class BackendService { // Backend not ready yet } - await new Promise(resolve => setTimeout(resolve, 30000)); + await new Promise(resolve => setTimeout(resolve, 10000)); } throw new Error("Backend failed to start within timeout period"); @@ -64,6 +64,17 @@ class BackendService { return this.baseUrl; } + getOpenWebUIUrl(): string { + if (!this.baseUrl) { + throw new Error("Backend service not initialized"); + } + return this.baseUrl; + } + + isRunning(): boolean { + return this.baseUrl !== null; + } + async fetch(path: string, options?: RequestInit): Promise { if (!this.baseUrl) { throw new Error("Backend service not initialized"); diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index ea619ed..6c88774 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -7,6 +7,9 @@ let name = $state(""); let greetMsg = $state(""); let backendStatus = $state("Initializing..."); + let isBackendRunning = $state(false); + let showWebUI = $state(false); + let webUIUrl = $state(""); async function greet(event: Event) { event.preventDefault(); @@ -14,47 +17,75 @@ greetMsg = await invoke("greet", { name }); } + function toggleWebUI() { + if (backendService.isRunning()) { + showWebUI = !showWebUI; + if (showWebUI) { + webUIUrl = backendService.getOpenWebUIUrl(); + } + } + } + onMount(async () => { try { backendStatus = "Starting backend..."; await backendService.initialize(); backendStatus = `Backend running at ${backendService.getBaseUrl()}`; + isBackendRunning = true; } catch (error) { console.error("Failed to initialize backend:", error); backendStatus = "Backend failed to start"; + isBackendRunning = false; } });
-

Welcome to Tauri + Svelte

+ {#if showWebUI} +
+
+

Open WebUI

+ +
+ +
+ {:else} +

Welcome to Tauri + Svelte

-
-

Backend Status

-

{backendStatus}

-
+
+

Backend Status

+

{backendStatus}

+ {#if isBackendRunning} + + {/if} +
-

Installed Ollama models

- +

Installed Ollama models

+ - -

Click on the Tauri, Vite, and SvelteKit logos to learn more.

+ +

Click on the Tauri, Vite, and SvelteKit logos to learn more.

-
- - -
-

{greetMsg}

+
+ + +
+

{greetMsg}

+ {/if}